3 ms·
Good Software Takes Ten Years. Get Used To it.
This is a very good article by Joel Spolsky that was written seven years ago (I stumbled upon it via dzone this morning). It's still very relevant.
- m0nty 19y ago7-year old article, although that doesn't invalidate it. I think what does is that web development (particularly using frameworks) is much more tractable and probably more lightweight than creating an office suite or operating system.
- mosburger 19y agoYeah, I noticed the 2001 dateline, too... it was especially apparent when he said (paraphrasing) "Mozilla - when is that thing getting released, anyway??" :) I thought it was surprisingly relevant today; especially because it was written during the sobering post-dot-com rush. A lot of those lessons need to be remembered. You're right that a lot of his points are more related to consumer software, but he does have a few gems in there about web development, too, like his points about "Overhype syndrome" and the myth of "Internet Time."
- delano 19y agoI don't have any experience with Fog Creek products but their software should be 70-80% good by now if what he says is true.
- mrtron 19y agoIt is 70-80% good. (FogBugz)
- hcho 19y agoIsn't it a bit ironic that Lotus Notes is given as an example to good software? I haven't met someone who doesn't hate it.
- run4yourlives 19y agoYeah, I usually love Joel's articles, but he lost me after that paragraph. Lotus notes is garbage software.
- spolsky 19y agoI think selling 55,000,000 copies of a software package (around $500 each I think) qualifies as at least one type of success, probably the kind of success that people around here wouldn't mind to have with their own products.
- ilamont 19y agoHear hear. The Notes adoption curve he points to can be explained by other factors -- marketing, bundling, competition (or lack of it), etc.
- spolsky 19y agook, let's hear your explanation then. Notes was pretty advanced for its day and big companies bought it because it actually did what it was supposed to do.
- ekanes 19y agoI think the issue is you're mixing the fact that the company/software was commercially successful with whether or not it was great software.
- gruseom 19y agoI haven't met someone who doesn't hate it. I certainly have. And it led me to a little theory: that Lotus Notes' value was in enabling non-programmers to build a certain class of apps. If this is correct, then its value was pretty big (think of spreadsheets). It also explains why programmers hate Lotus Notes so much; systems built this way get messy very quickly (again, think of spreadsheets). But to dismiss the value to users is missing something big and important. In other words, this dispute about "is Lotus Notes good software or garbage" is beside the point, because it's based on two different definitions of "good software". Software that helps users get things done that they can't easily otherwise do is certainly good by their definition even if it's the greatest garbagey kludge ever known. (But I never used Lotus Notes, or even, as far as I know, touched a computer that had it installed... this is just based on stuff I've been told.)
- sanj 19y agoJoel's using ubiquitousness as a metric of "good", not necessarily if it is liked.
- pchristensen 19y agoAnd if you're running a software business, ubiquitousness = sales = successful = good. You can't care too much about some cranky geeks if tens of thousands of customers are paying you good money for the work you've done. (Don't take offense, I'm a cranky geek too :) )
- Readmore 19y agoThis sounds like a Zuckerberg statement.... "Software gets good after 10 years.": "Advertising changes every 100 years."
- sanj 19y agoThe message that I took away from this article was that good software has to deal with the likely exceptions it will run into in the real world, using real world data. When I built the first version of the Ambient Clock (http://ambientclock.com http://ambientclock.com), I groveled through the vagaries of iCal implementations. It was a nightmare. I breathed a sigh of relief when we decided to use GData: a nice, clean API. But what bit me next was the USER data that was in there. Weirdly formatted, strange timezones, oddball recurrences and other stuff. The nice, clean API can only hide you from so much. My point is that it is hard to write software that deals with human-generated content, in some structured way. As soon as you hit actual people, you can assume that they'll do things differently than expected: using semicolons rather than commas to break up bands, using a different DATE format when specifying things... I believe Joel's definition of 'good software' is software that has learned to deal. And so can be used in a vast number of situations, by a vast number of people.
- stcredzero 19y agoThe VisualWorks Smalltalk JIT VM is another example. It has been in development since 1989, and it shows. I can write an infinite loop that does nothing but allocate, slip that into someone's image, start it, and they wouldn't even notice!
- pchristensen 19y agoJust remember, this is from the slow release-feedback loop of desktop software. The distribution costs and time made it hard to iterate quickly. Web stuff is much quicker, but I'd still hesitate to say less than 3-4 years. (yes, something can get put out in 3 months, but rich, full software takes longer. pg was still working on Viaweb after Yahoo bought them)
- sabat 19y agoI've rarely found blanket statements like this to be true. The exceptions so frequently outweigh the assertion.
- amohr 19y agoI think the jump from 10-20 million may have had something to do with lotus being bought by IBM, giving it a big marketing push. Also, if he really wanted to prove his point he could have pointed out that the development could be traced back to the early 70s when Ray Ozzie was working on PLATO
- noonespecial 19y agoI think what he meant to say is that good software has to go through a certain process before it becomes good. This often takes, lets say, 10 years. Not all software will make it that soon. Some will make it more quickly. Some will never make it at all.
- chicken 19y ago10 year rule? sry joels, doncha know that the singularity is near?
- chaostheory 19y agoThe only problem I find with the article is the paradigm of programming in Lotus's earlier years... manual memory allocation, static types, ... things have changed in the programming, not to mention in other areas like software as a service and it being free. I don't think this is accurate anymore