January 2009
Sun Mon Tue Wed Thu Fri Sat
       

Tue, 31 Aug 2004

Am I a bad software engineer?

To some, I'm sure this makes me a terrible software engineer. I know how to draw UML diagrams but I can never get all the details of the design right in them ahead of time. Whenever I go to code there's always some aspect of the environment, language, or specification that I forgot to take into account, didn't know about, or that wasn't clear. By the time I'm done creating the working code the original diagram is at best schematic, and sometimes just flat wrong.

Some people seem to want to try to get it all thought out up front, but I'm not good enough, so for me software development has to take into account the things that emerge during an actual coding session. I try to write unit tests first, to guide my thinking and focus my attention. Making the tests pass means taking into account, on at a time, those details that were too numerous to collapse into a design diagram.

The forethought necessary to draw some diagrams is a good way to think about how to start, but it tends to get thrown out as soon as I start getting code actually written. The working code in the end stands for itself, not some preconceived notion of it, if that preconception turns out to be inaccurate. As one thoughtful friend of mine wrote, to force the code do so is "like deciding you want a pianist before having a child".

permanent link