Good Software Takes Ten Years. Get Used To it.
joelonsoftware.com
joelonsoftware.com
When I built the first version of the Ambient Clock (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.
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.)
"During this time, the developers at Iris used Lotus Notes to communicate remotely with people at Lotus. Halvorsen said, "Simply using the product every day helped us develop key functionality." For example, the developers needed to synchronize data between the two different locations, so they invented replication. "This wasn't in the original plan, but the problem arose and we solved it," said Halvorsen."
From IBM's "The History of Notes and Domino" http://tinyurl.com/2b8wxk
"Inside Notes provides a single place where you can quickly learn about the architecture of Notes" http://tinyurl.com/ytjkf3 [PDF]
Note: I love how IBM's web site uses the famed Notes Icon as it's little Website icon identifier :)
Simply using the product every day helped us develop key functionality.
The feedback loop of eating your own dog food is one of the greatest benefits a software project can have. Here the programmers weren't only users of the product, they were using it as an essential part of the development work itself. That's like putting steroids into your dog food and then eating it.
Usually when someone has a bad opinion of Notes/Domino it's because he used an old version of the e-mail application at some previous company, and it did have a sucky user interface. But the current version is on par with anything else out there.
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."
(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)
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
Not all software will make it that soon. Some will make it more quickly. Some will never make it at all.
sry joels, doncha know that the singularity is near?