Functional specs subvert the hierarchy of nature 15 Mar 2006
45 comments Latest by daan
The other week I got some interesting perspective on the Functional Spec debate from an unlikely source: a comparison of code law and common law.
First, some background: No Functional Spec was the first Getting Real piece of advice ever written here. It’s also the subject of an essay in our new book and Jason addressed it during his Q&A session at SXSW (you can hear near the end of this podcast). Still, it’s one of the more controversial aspects of Getting Real. People argue it’s reckless and that functional specs are a necessity.
So what’s code/common law got to do with it? Here’s a very basic explanation of the legalese: Code law is based on a system of codified written laws. The rules are set and that’s that. Common law, on the other hand, is based on a series of ongoing decisions (like the legal system here in the US).
So we’ve got a rigid system that’s set in stone vs. a flexible one that reacts and responds to real-world situations. Sounds familiar, eh?
Common law rests ultimately upon the judge’s intuitive feeling for equity. Every case is unique, and no code or set of fixed principle can provide for every eventuality. The deciding factor is therefore something far more subtle and complex than any formulation of rules can be — the judge’s brain, assisted by precedents and rules. Code law, as well as authoritarian and traditionalist ethics, subverts the hierarchy of nature. It gives greater trust and authority to the relatively crude and rigid structure of verbal rules than to the infinitely more fluid and complex structure of the brain, the organism, and the field in which they live.
There’s some meat in that last line. To whom do you want to give authority? Whom do you trust? In a lot of ways, that’s at the heart of the spec vs. no-spec debate too.
Plug in “spec” for “code law” in that Watts excerpt and you’ll see what I mean. Think about it: When you use a spec, you give your trust and authority to a piece of paper rather than the people on your team. You codify laws. You strip your “judges” of the ability to act on intuitive feelings. There’s no fluidity. There’s no ability to respond, change, and evolve. Heck, let’s go all the way with the comparison: Functional specs subvert the hierarchy of nature in favor of an authoritarian mindset.
Now I admit there are situations where a spec can be helpful. It may soothe a worried client. Your team may be too big to fly without one. Joel Spolsky offers thoughtful pro-spec views in “Painless Functional Specifications - Part 1: Why Bother?” Still, I wonder: How many people need to use specs for the reasons outlined by Joel and how many choose the spec route simply because it provides a safe/less-risk/everyone’s-ass-is-covered path?
If the reason is the latter, that’s a shame. What may seem like the safe choice strips away the possibilities you get from allowing and encouraging evolution — and that’s actually pretty dangerous.