30 March 2006
The undiscovered web
The folks at 37signals don’t like functional specs. Personally, I’d hate to work with one myself, but I think they’re necessary in larger teams. One thing we both seem to like is analogies. I’m a sucker for a good analogy. And one good turn deserves another.
This week, Ryan Singer (the Teller to Jason Fried’s Penn) took it home with this gem: “A functional spec is a map to a place you have never been. It’s like drawing a map and commiting to a route of a place you have not even set foot on.”
I think that illuminates perfectly the reason functional specs are considered necessary in large companies and considered a burden in small teams. If you’re leading 50 people into an undiscovered country, and you have to convince the entire court of Spain and Portugal to fund your expedition, then you’re going to hire a bunch of guys with sextants to plot out your journey and guess where all the gold is. If you’re 5 guys in a boat, you’re just going to set sail and head west until you find land.
I think functional specs are a symptom of a fundamental inefficiency of large corporations. The more people you have, the more time you need to spend dealing with the politics of large groups of people. This isn’t good or bad on it’s own. It’s just reality. On the flipside, there are plenty of things you can do with large groups that you can’t with small ones. Like invade a country.
Ryan and Jason are right that functional specs primarily serve a political, not a practical function. And from a purely practical perspective, they’re an absolute waste of time. And in small teams, you can’t afford to waste any time.
But in large groups, politics are a necessary evil. If you ignore them, you’ll have problems. So maybe functional specs are necessary after all. Or maybe everybody should just have smaller teams.