The ever-brilliant Jeff Atwood wrote a fascinating blog post about why building software is hard: it’s never been built before. He was following up on a similar blog post, but in a nutshell, software projects are harder than construction projects because they’re nothing like projects at all. Every time we build a new piece of software, it’s like building an experimental plane. We don’t even know if it will fly. Construction projects, on the other hand, are fairly repeatable. Sure, every now and then somebody builds an Eiffel Tower or the first Frank Gehry building, but otherwise, it’s the same basic things done over and over.
I can completely relate to this because I’m in the midst of bringing a new project – err, experiment – to life as we speak. I’m being asked to budget dollars for a database server and guarantee that the queries will be returned within X seconds. The problem has two parts: the queries haven’t been designed yet, and nobody has even documented exactly what they’re going to do. In order to guarantee that an unknown query will finish in a known amount of time, I’m going to need an exorbitant amount of money – or else, I’m going to have to build an experimental airplane. I can’t stand spending money without a really good reason, so it’s time to play Skunkworks.
This is why I own a t-shirt with Jeff’s blog logo.