Maybe I’m the one missing something

Magicians make a living at misdirection, getting you to look at their right hand while they’re hiding the ball with their left hand. You’d think journalists would want to be a little more direct than that. But Neil McAllister did a whopper of a slight-of-hand recently, using more than half his column to summarize a Joel Spolsky post before jumping to a completely unrelated conclusion.

Joel’s point, and the first more-than-half of Neil’s summary, was shooting down the idea beloved of suits that programming can be reduced to a set of building blocks that can be snapped together by a non-programmer. (For a hysterically painful example of how wrong this is, and how far people will go to try to do it anyway, see The Customer-Friendly System at The Daily WTF.)

Joel covered the ground pretty well, so I was wondering where Neil was going with this. Once I got to it, I had to re-read the segue three times to see what connection I was missing:

Don’t you believe it. If, as Brooks wrote, the hard part of software development is the initial design, then no amount of radical workflows or agile development methods will get a struggling project out the door, any more than the latest GUI rapid-development toolkit will.

And neither will open source. Too often, commercial software companies decide to turn over their orphaned software to “the community” — if such a thing exists — in the naïve belief that open source will be a miracle cure to get a flagging project back on track. This is just another fallacy, as history demonstrates.

If there’s a fundamental connection between open source and “Lego programming” I don’t know about it. Maybe Neil makes the connection for us:

As Jamie Zawinski recounts, the resulting decision to rewrite [Netscape’s] rendering engine from scratch derailed the project anywhere from six to ten months.

Which, as far as I can see, has nothing to do with the fact that it was open source. In fact it seems more like what Lotus did when they delayed 1-2-3 for 16 months while they rewrote it to fit in 640k, by which time Microsoft had taken the market with Excel. Actually that’s another point that Joel made, sooner and better.

Is Neil trying to say that Lego programming assumes that code can be interchangeable, and man-month scheduling assumes that programmers are interchangeable? Maybe, and that’s even an interesting idea. But that’s not what he said, and if I flesh out the idea it won’t be in the context of a critique of someone else’s work.

Or maybe it was an opportunity to take a shot at the idea of “the community”. Although in his very next column he talks about the year ahead for the open source community, negative community reaction to the Novell/Microsoft deal, and praise from the community for Sun open-sourcing Java. Does he really dispute the existence of a community, or was it hit bait?

Okay, so where did I start? Right, with misdirection. So the formula seems to be: quote a better columnist making a point that I like, completely change the subject with the word “therefore”, summarize another author making my second point, and send it to InfoWorld. Am I ready to be a “real” pundit yet?

No one cares about “average”

No one wants to be average. We just want to treat everyone else like they are. That’s why we generalize, form stereotypes. It leads to goth and emo, as kids try to be unique and different from average people … but in exactly the same way as everyone else in their preferred group. (Oops, was that cynical?)

It also leads to being pretty spectacularly wrong in your conclusions, even when you’re completely right in your premises. Take for instance what Joel Spolsky had to say about OSS development:

Development [on OSS projects] is much more likely to be geographically dispersed, which results in a radically different quality of team communication. It’s rare in the open source world to have a face to face conversation around a whiteboard drawing boxes and arrows, so the kind of design decisions which benefit from drawing boxes and arrows are usually decided poorly on such projects.

His premises are correct: development is often dispersed; design can suffer. His conclusion, that OSS projects usually just clone existing (closed source) software is not technically wrong, but is irrelevant for the same reason traditional media is wrong when they discount blogs as “real writing”: The average doesn’t matter. If the best blog — or the best OSS product — is better than the leading commercial media or closed software, it will gain market share.

As Paul Graham says:

Those in the print media who dismiss the writing online because of its low average quality are missing an important point: no one reads the average blog. In the old world of channels, it meant something to talk about average quality, because that’s what you were getting whether you liked it or not. But now you can read any writer you want. So the average quality of writing online isn’t what the print media are competing against. They’re competing against the best writing online. And, like Microsoft, they’re losing.

The “average” application on SourceForge may be derivative and just plain bad, but you don’t install averages. You install applications. I don’t use an “average browser”, I use Firefox.

This holds true for games, too. As a Slashdot poster says of open-sourcing a game:

we will see millions of variations of modifications that will be incompatible with each other and that will bring down the quality of the game. Some will be much worse than the original, probably few will add high-quality content, but some may become very good indeed.

Software, writing, games, in fact all digital media, tend toward a winner-take-all outcome. In the age of infinitely-reproducible goods, it doesn’t matter what process yields the best average outcome. What matters is what process yields the single best outcome.