There are a bunch of myths out there about software development, but one that’s more insidious and pervasive than the others.  According to this myth, to solve most problems, just “write a good spec.”  As a good friend of mine says, “it is IMPOSSIBLE to write an accurate enough spec.”

I was just listening to a TEDtalk by Yochai Benkler, a legal scholar.  Larry Lessig, another well known legal scholar calls him “the leading intellectual of the information age.”  So, it is safe to assume that Professor Benkler knows what he’s talking about when, a little over five minutes into the talk, he says, “No matter how detailed the manual, you cannot transmit what you know, what you would intuit under a certain set of circumstances.

By sheer coincidence, right after the TEDtalk, I looked at a website that talked up the wonders of Agile in one breath and in the next admonished its reader to “write a good spec” (in order to make offshoring work).  This kind of stuff just drives me crazy.  Obviously, these folks think that User Stories is a cute name for “a good spec.”  They, and many many more, don’t get, or don’t want to admit that the idea of writing a document, in English and throwing it over the wall does not result in a usable product.

As a good friend of mine, Vic Tolomei says, “It is impossible to specify requirements precisely.  Not difficult, but IMPOSSIBLE.”  In presentations, he illustrates the point by asking is audience if they understand what this sentence means,

Mary had a little lamb

If somebody asked you to come up with a picture to illustrate this sentence, could you come up with the one your “customer” had in mind?  Really?

Mary and her little lamb, The Classic Image
Mary drags her little lamb's dead body around
Mary and her little lamb a few years later
Mary eats her little lamb.  Bizarro cartoon by Dan Piraro, (c) 1947
Beaming woman showing off a carcass
Mary has fun with her little lamb
Smiling mom and baby dressed in lamb outfit
Baby with ram horns
Mary, the tiger and the little lamb (well, really a goat)