Fog Creek Software
Discussion Board




What the hell was Linus talking about?

When I read that letter by Linus some months ago:
[ http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.0/0004.html ]

I thought that it was perhaps the most interesting thing I ever read on computing.  In some ways, the only thing that is worth thinking about.  But there are many opinions on what it meant, and in their arguments people start seeming like they either come from the schools of Order or Chaos.  So there is something distinctly interesting about that email, and how it affects people who read it.

I think those of us in the professional world come to think of software as something to be dominated, to fit within schedules and user guidelines.  And bam bam bam, we fire out code and don't particularly feel like maintaining it, because in the end analysis it is something to be converted into money.

But once you create something you really care about, and maintain it over a long term, then "design" falls into a deeper context.  Things which are designed are necessarily mechanical.  They have a finite range of responses to any given situation.  Design is purely tactical.

Windows, Linux, .NET; these are all promiscuous things.  They touch a lot of people, and evolve from it.  That is why we like to use them, even though they aren't fully predictable and perhaps too human.  When we want respectable, singleminded machines which tell your stupidest desires No, then we look at BSD and the JVM. 

The upshot of this?  As I go deeper into this project I've been working on for a while, I start making decisions that are not purely about design or implementation.  I occasionally break interfaces hard, because I know people (more often, myself) will go into old code with flashlights.  I even do socially violent things like come in at odd hours, to improve our communications infrastructure to be more flexible and solid. 

I know these actions are short-term financially disruptive, and you can't live long-term if you don't eat short-term.  But a business is another system that is not purely designed.  A lot of design may go into it, but it is very organic and contains contradictions.

I suppose these are all my views on the "industry," viewed from one angle.  Is it any surprise it is difficult for most humans to know what a business needs to embrace and grow around?

Sammy
Tuesday, March 05, 2002

My favorite message from that design/evolution thread was a response by Davide Libenzi (12/1/2001):

"The most successful software have born from fixing/patching an initial/simple implementation while the greatest software failures have born from deep planning and design.

"And for successful I mean widely used, appreciated, longlived. You start with a very limited (in features) initial version, people happen to like it, you sell/distribute it and they're going to ask for new features.

"Some of these new features will fit the initial design some other will make you patching it in an undesigned way, but you think that you'll fix it later.

"But people are going to like it even more and become more hungry of new features, some of them will fit in the initial implementation design some other will introduce crappy patching, but later time is fix time. And so on."

(cf. Richard Gabriel's "Worse is Better" essay. There is something fundamental about design and evolution here.)

Dan Maas
Tuesday, March 05, 2002

Hi again, someone just sent me this very interesting link to a talk by Alan Cox, who's the second-in-command with the Linux kernel:
[ http://ftp.fi.muni.cz/pub/linux/alan/OGG/transcript.txt?N=A ]

It's entitled Dear Mr. Brooks, and it's all about software engineering, in the distributed way of the free software coders.  I like seeing how projects evolve, in the absence of certain forces from corporate culture.

Thanks again for the link, you masked person!

Sammy
Tuesday, March 05, 2002

The evolve approach will only work if your customers have been trained to accept a product that only half-way works.  Would you want the embedded code in your refrigerator to only sorta work and then HOPEFULLY evolve until it does?

Frankly, I'm tired of software that only half-way works.  Let someone else overclock their CPU and then debug the crap!

Steve
Sunday, March 10, 2002

*  Recent Topics

*  Fog Creek Home