Knowing What You're Building

Dreaming In Code

So I’ve been reading this book called Dreaming In Code about an open source software development project called Chandler. They had some extremely smart, seasoned developers (for example, one of the developers was Andy Hertzfeld), they had no deadlines and they had all the resources they needed and they failed to deliver a working product after 3 years.

It’s an interesting study in the dynamics of software creation. I’m still reading it but if I had to point to a principle cause of failure, it’d be that they never really knew what they wanted to build. Through the whole project they kept trying to define how to do certain tasks they’d set for themselves and they couldn’t agree on how to complete the tasks because they kept having problems agreeing on what they were trying to build. Undoubtedly there were other important factors that contributed to the failure but the overriding issue seemed to be the lack of a definite idea of the software they were trying to build.

Knowing What You’re Building

The reason I mention this is it reinforces the importance of a simple lesson that people seem to repeatedly overlook–probably because it does seem so obvious. You can’t build something until you know what you’re building.

Of course, life isn’t quite that simple, since you really can start building something without having any idea what you’re trying to build; if it were impossible to start something without an idea of what it should be mankind wouldn’t waste as much effort as we waste all the time. And, in fairness to the folks who were working on Chandler, with software especially, it can be hard to nail down exactly what one wants even in the best of circumstances. The issue we often find with software is not so much not knowing what we want built as finding out as we are building the software that what we asked for isn’t what we really want or need.

comments powered by Disqus