

Good Software Takes Ten Years. Get Used To it. - mosburger
http://www.joelonsoftware.com/articles/fog0000000017.html
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.
======
sanj
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.

~~~
stcredzero
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!

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

~~~
gruseom
_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.)

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

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

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

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

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

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

~~~
mrtron
It is 70-80% good. (FogBugz)

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

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

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

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

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

~~~
pchristensen
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 :) )

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

------
chicken
10 year rule?

sry joels, doncha know that the singularity is near?

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

