Self critique and the surgeon

How the best surgeons realize they make mistakes and try to figure out how to improve is the subject ofa recent article by the always engaging Dave Thomas of Pragmatic Programmers fame.

As a software developer I find that on every project I look back and I am disappointed by some design decision or implementation choice that didn’t turn out as cleanly as I had hoped.

In my current role as a software architect (a title and position I ironically am not a fan of) I worry that it is easy to unravel the feedback loop as more time is spent in meetings, design sessions, and writing emails. Once you start down the path of less hands-on work how do you truly understand the consequences of the design decisions that have been made so you can improve?

Even the most fundamental truths about software development are easy to forget, like that software development is rarely easy, and shouldn’t be. Just seeing the results from a management point of view, which must happen from time to time in order to effectively delegate implementation, the process looks much smoother, like a mountain range at 30,000 feet. But the smoothness is an illusion.

Management uses phrases like “keeping you hand dirty”, but I still think in terms of being a “real software developer” so I can help make better software.

I only want to work with other developers who are constantly trying to improve. The developers that cause me the most grief are those that are content to do things the same way over and over again regardless of the results.

The good news is that most of the excellent team I work with share my passion for improvement. In the past two years we have gone from non-repeatable builds and misuse of source code control to a smooth build process and logical branch management. Recently we have added RSS feeds of both builds and CVS checkins. To top it off we now have lava lamps to keep tabs on build results (as a mature product we have several active branches/supported versions so we need lots of lamps).

Autopilots off, feedback loop closed, self critique ongoing — who’s with me?