Blog: 

Nov
Oct
Sep
Joel is Back
Aug
For years, a Jewish kid from Albuquerque dominated the technology op-ed marketplace with
oodles of lengthy,
hilarious articles on his website. Then he vanished, looking for new office space and
writing the occassional book review. Now he's back, with the Strategy Letter VI.
On behalf of practically everyone: it's about time. Welcome back, Joel.
Our hero.
History Repeats Itself
We humans are dumb. We can't seem to learn from our mistakes. The classic software development mistake
we make is the same: add another layer. Webpages weren't fancy enough, so we added the support for forms.
Then we added plug-ins to the browser for Flash and support for in-browser interpreted languages like
JavaScript. Now the hot new thing is leveraging elements of JavaScript, the DOM and CSS with and
server-side utilities to create a "rich Internet" experience, in the form of AJAX. This systems like
GMail and Flickr kind of neat. But really, they aren't that great. I like to say that thanks to the
overwhelming development advances in web technology, you can now achieve in the browser what was only
possible before using commodity hardware built after 1992.
Too Much Cream
The real problem is that there's too much cream in the economy. We can afford to buy new computers every
couple of years, which means software developers don't need to worry about using resources efficiently
as they can just wait for the hardware to be fast enough. This is precisely the opposite of most other
kinds of engineering. When a new building material, such as steel-reinforced concrete appears---it is
used in the market for ages before being replaced. No one would ever design a bridge expecting
a new material twice as strong to be ready in time for construction. You simply have to work within
the constraints of what is currently available.
Another Reason Software Stinks
This is another reason why software is terrible. Since you don't have to worry about things like
efficiency, developers are tempted not to worry about much anything else beyond getting the system to
only kind of work. It's easier to build something on top of existing infrastructure than within, meaning
people often overload the existing system. There's a widespread sentiment that you don't need to understand
anything about what's come before, because everything is changing so quickly it won't matter anyhow.
The NewSDK
Joel predicts a brand-new development system that will "compile" into a web application. This already
exists to some degree in integrated environments like .NET, which let you write interactive web pages
with dynamic backends all in the same language and editor. This, of course, is horrible wasteful.
Why have another language that compiles into a crude combination of duct-taped elements, which are then
in turn executed by another framework (the server and browser), which are themselves hovering on operating
systems? Why don't we just get a network operating system together?
Oh right. That's because it's hard and will take some time. Why not just wait until we have plenty of hardware
to do it the easy way?
Would you like to leave a comment?
Read this.
###