This post originated from an RSS feed registered with Agile Buzz
by Steven E. Newton.
Original Post: Am I a bad software engineer?
Feed Title: Crater Moon Buzz
Feed URL: http://www.cmdev.com/buzz/blosxom.cgi?flav=rss
Feed Description: Views and experiences from the software world.
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".