Hacker News new | past | comments | ask | show | jobs | submit login
Good Software Takes Ten Years. Get Used To it. (joelonsoftware.com)
37 points by mosburger on March 12, 2008 | hide | past | favorite | 28 comments



The 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), 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.


The 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!


Isn'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.


I 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.


I 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.)


I read an interview with an IBM technical guy once who claimed that Lotus Notes was first and foremost a synchronization platform (desktop and server) and email was just kind of built on top of that..


I use IBM Lotus Domino server software (Notes is the client side piece) as the underlying platform for some healthcare web applications. It would be more accurate to describe Domino as a loosely-structured document database with multi-master replication and a public-key security infrastructure. There is a whole application development layer on top of that, plus additional native features for messaging and workflow. Lotus (and later IBM) then built e-mail, calendar, and groupware applications using those basic building blocks. Those applications ship as part of the product, but you can build your own custom apps that operate on an equal footing. It works extremely well for certain classes of applications.

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.


Well synchronization is still a big pain (Exchange server, anyone?) so if that's the problem they solved, then they deserved success.


"The product was very far ahead of its time. It was the first commercial client/server product."

"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 :)


This is significant:

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.


Hear hear. The Notes adoption curve he points to can be explained by other factors -- marketing, bundling, competition (or lack of it), etc.


ok, 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.


I think the issue is you're mixing the fact that the company/software was commercially successful with whether or not it was great software.


Yeah, I usually love Joel's articles, but he lost me after that paragraph. Lotus notes is garbage software.


Almost as ironic as the "what the hell is going on with Mozilla" quote.


7-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.


Yeah, 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."


I 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.


It is 70-80% good. (FogBugz)


Just 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)


The 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


I 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


I 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.


Joel's using ubiquitousness as a metric of "good", not necessarily if it is liked.


And 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 :) )


This sounds like a Zuckerberg statement.... "Software gets good after 10 years.": "Advertising changes every 100 years."


10 year rule?

sry joels, doncha know that the singularity is near?


I've rarely found blanket statements like this to be true. The exceptions so frequently outweigh the assertion.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: