Thursday, May 6, 2004

Analogies Are Like Busses

I noticed that Brad posted a link to Joel's foreword of Mike's new book. Specifically, he called out this paragraph:

There’s something weird about software development, some mystical quality, that makes all kinds of people think they know how to do it. I’ve worked at dotcom-type companies full of liberal arts majors with no software experience or training who nevertheless were convinced that they knew how to manage software teams and design user interfaces. This is weird, because nobody thinks they know how to remove a burst appendix, or rebuild a car engine, unless they actually know how to do it, but for some reason there are all these people floating around who think they know everything there is to know about software development.

Is this really true? I've said before, people love compare our industry to others and say, “We should be more like that.” But I'd argue that - human nature being a constant - it's more likely that we simply don't see the manifestations of stupidity in other professions. For example: how many of a doctor's patients are people that decided to stop taking their antibiotics because they felt better? Or how many mechanics fix cars that never should even have been driven to the shop? Ask a doctor/mechanic, and you'll probably hear tales of people that never should be allowed to touch a human body/automobile.

It's true that few people will try to remove their own appendix. But few developers will try to write their own TCP/IP stack. Which is to say, since analogies are inherently subjective, you can prove anything you want with them. Show me a quantitatve measure of task complexity, then talk about how people approach software tasks differently...because I'm not convinced that they do.

After all, no matter what field you're in, half of your collegues will be dumber than average. ;)


  1. He calls out two examples: managing and UI design. These two things are this way for a couple of reasons.

    1. Every one likes being the alpha whatever. Some people more than others, but people like to think they can manage. "I may not be able to repair a man's broken ticker, but I can manage a group of people who can." kind of people.

    2. UI design could be chalked up to: "I use these things every day, if we just copy known examples that people like, I can wear a UI design hat."

    As task complexity increases you do get the rare few who stick around, the 'perseverers', who may be doomed to failure or might learn something along the way and be better for it.

  2. So, I wasn't arguing that point. I agree that there are lots of people who think they can write software, but who really can't. In fact, I may be one of them - the insidious part of the problem is that even the clueless think they are clueful.

    Rather, if you read what I wrote, you'll see that I disagree with the statement that this phenomenon is specific to software. I don't think that's the case - without being able to provide any quantifiable proof, I'm willing to bet that it's a facet of human nature, and therefore endemic to all engineering efforts.

    But perhaps you were agreeing with me and I misread your comments. After all, another way to take what you wrote is, "Here are two things in computer science that get screwed up royally often because they appeal to certain aspects of human nature." By extension, those same attributes would interfere with quality in other disciplines.

  3. The latter most definitely. I was just exemplifying your already well put point with examples I myself have seen 'out there'.

    Right now our team is designing an e-commerce site from the ground up. We think we know what we're doing because we can look at amazon, bestbuy, wal-mart, etc. online and mimic their functionality, their look, etc. The scary thing is is that we don't know if were doing it right until it actually launches.

    And as for human nature, most certainly. If there are two things we know how to do it's be a part of a group (leader/follower) or mimic our peers. Look at the design world, coke vs. pepsi, embrace and extend (on both sides of the MS/OSS fence), you get the idea.

  4. In violent agreement, then. ;)