Here it is.

Software Development As A House

In my continuing quest to reveal boring and irrelevant information to the world, facilitated by the convenience that I've had my laptop nearby at opportune times over the past several days, I've decided to post what I've done this weekend - I stripped clean and then basically completely redid a room (no wussy "refactoring" paint touch up or cleaning - I threw it all out [those morons that did it before were a bunch of two-bit, .COM-era hacks!]. Tore up the carpet, door, ripped off the trim, replaced every outlet and light fixture, got rid of the window crap). This room will be the nursery for my second child, ETA 1 week, so I want it rather nice. Yes, it's being done very last minute.

I compare it to software development because my methodology while finishing this room is very similar to the way I design and develop software - this room will be viewed by a number of people whose capabilities in this realm I respect, and whose opinions I value. Due to this, everything has been done to swiss precision - every strip is perfect, even where it won't be visible under trim, every piece of trim has carefully coped-saw cut edges that align precisely, exactly as the best practices dictate, the paint was after perfectionist filling and then double priming, and so on. Basically I put a lot of extra effort in purely to satisfy the close inspection of these craftsman, even though really 99% of people wouldn't notice, and it practically makes no difference in the usability or aesthetics of the room.

This is extremely similar to how I, and I suspect many others, architect and/or develop software. If I know that the code itself will be viewed by respected peers, I expend significant effort to criticize-proof my creations, ensuring that I've taken into account every possible scenario or technology leveraging. I do this even where the extra effort goes against my own best judgement of what is really worth the effort, and what is reasonable, and this "peer fear" has led to a lot of last minute overtime while I antagonize over every detail.

The point of this post? I guess it's that a lot of tasks are significantly over-engineered/over-crafted for the sole purpose of criticism-proofing. I would imagine that countless deadlines have been missed not because the developer couldn't accomplish the requirements, but because they didn't accomplish it with a finess that they were confident enough to unveil to the critical eyes of coworkers and peers.
Permalink Dennis Forbes 
March 13th, 2005
Oops, you found an error!