Building Bridges
By Kristian Eide on March 21, 2007I recently read Dreaming in Code, a book by Scott Rosenberg which follows the development of Chandler, a software project started to design a revolutionary tool for personal information management. The recurring theme in the book is how hard software development has turned out to be, and why this is so surprising to most people.
Many have written their thoughts on this subject, and the comparison to building bridges is frequently made: if only we could build software the way we build bridges it would always be on time, on budget and of high quality.
I would argue, instead, that software development is incredible easy. It is so easy, in fact, that any 14-year-old with some spare time on his* hands can do it. No other profession is so readily available: anyone with a computer and some spare time can do it right from home.
Let me take you along on a small thought experiment: what if building bridges was as easy as developing software or in fact any kind of structure? What if, after writing down some specification on dimensions, material used and other necessary parameters you could press a button and said structure would magically appear out of thin air?
Well, it stands to reason that a lot more people would try their hand at designing buildings. And any kind of building, be it a small house or a 500-story skyscraper, although the latter would of course require a lot more specification to get the details right. You could probably skimp on the details, however, by starting simple: a 2000-foot high rectangular box made of steel. Make it hollow (how wide should the walls be – I have no idea, so let’s guess at 2 inches), add some floors (4 inches thick is probably about right), stairs and the first version is ready! Press a button and there it is, standing magnificent and tall in front of you. Of course, two seconds later the whole thing comes crashing down. What, you mean it has to be stronger at the bottom than at the top to support its own weight? Well, there is always version 2.0…
I am sure you see where I am going with this: building high quality software is hard, just as designing a bridge or a skyscraper is hard. It requires proper training and experience, and just as some people are better suited to being construction workers rather than designers not all people should design large software systems.
The differences is that while it is intuitive that designing a skyscraper is hard, since most people have extensive experience manipulating objects in the real world, designing software is the exact opposite: constructs are taken out of what appears to be thin air and have little relation to physical objects. Since most people have no intuitive feel for how hard it is they assume it must be easy: after all, even 14-year-old kids can do it.
The result is predictable: after designing a few houses that come crashing down they finally make a few that keep standing (at least if you do not look at them for too long at a time). Great! All ready for heading over to monster.com and checking out some job descriptions…
Note that I am not in any way suggesting that the developers of Chandler are incompetent; in fact, designing software is hard even with a high-quality team. Probably the most significant reason it is so hard even under ideal circumstances is that every software project is like designing an almost completely new kind of structure: the design of physical objects is able to leverage the experience of previous designs to a much higher degree than what is possible in software. It is even more surprising, then, that people expect good results even under much less than ideal conditions.
* Unfortunately, due to the image problem our industry has, very few girls of that age dare venture here; that is a discussion for another time, however.
TrackBack
TrackBack URL for this entry:
http://blog.medallia.com/cgi-bin/mt/mt-tb.cgi/16