RSS 2.0 Feed
RSS 2.0

Atom 1.0 Feed
Atom 1.0

  bool result = (Developer == Moron || Asshole); 

That's right. I have at many times been both. Hehe. A great post on Dive into Mark that talks about why specs matter and goes on to classify developers as assholes or morons when it comes to software specifications. Awesome read. Here are some highlights:

Most developers are morons, and the rest are assholes.  I have at various times counted myself in both groups, so I can say this with the utmost confidence.


Assholes read specs with a fine-toothed comb, looking for loopholes, oversights, or simple typos.  Then they write code that is meticulously spec-compliant, but useless.  If someone yells at them for writing useless software, they smugly point to the sentence in the spec that clearly spells out how their horribly broken software is technically correct, and then they crow about it on their blogs.


Morons, on the other hand, don't read specs until someone yells at them.  Instead, they take a few examples that they find "in the wild" and write code that seems to work based on their limited sample.  Soon after they ship, they inevitably get yelled at because their product is nowhere near conforming to the part of the spec that someone else happens to be using.  Someone points them to the sentence in the spec that clearly spells out how horribly broken their software is, and they fix it.

Why Specs Matter

If your spec isn't good enough, morons have no chance of ever getting things right.  For everyone who complains that their software is broken, there will be two assholes who claim that it's not.  The spec, whose primary purpose is to arbitrate disputes between morons and assholes, will fail to resolve anything, and the arguments will smolder for years.

If your spec is good enough, morons have a fighting chance of getting things right the second time around, without being besieged by assholes.  Meanwhile, the assholes who have nothing better to do than look for loopholes won't find any, and they'll eventually get bored and wander off in search of someone else to harass.

Now that is some awesome stuff. There's plenty more. Read the whole thing (and subscribe to Mark while you're there)


Leave a comment below.


  1. Jiho Han 8/19/2004 9:56 AM
    What he calls Angels, I call Robots instead. A good developer actually finds ambiguous points in spec and works with 'the spec writer' to make it better. There are assholes and morons I'm sure, but 'the spec writer' who can't work with these developers and instead call them names, I call 'whiner'
  2. Ryan Farley 8/19/2004 9:58 AM
    Hehe, great point Jiho.
  3. Milan Negovan 8/19/2004 4:33 PM
    Ahem, should it be:

    bool result = (Developer == Moron || Developer == Asshole)?


    warning CS0219: The variable 'result' is assigned but its value is never used

  4. Ryan Farley 8/19/2004 8:23 PM
    Ahaha. Great catch Milan. Maybe that puts me in the category of moron?? Hehe.
Comments have been closed on this topic.



Also see my CRM Developer blog