Monday, February 14, 2011

The Wicks

I had a good morning conversation with some good people in twitter (Jim Argeropoulos, Dean Goodmanson, others) about programmers and how many of them seem to have no real interest in the art/craft/vocation of programming. They tend to crank out the same code they did seven years ago, or longer, appending flags and if-then statements to masses of flags and conditionals, and never growing in their practice.

I offered a metaphor of candles:
A million candles, if not exposed to flame, will not light a room.
For the symbolism-challenged, candles are people in the programming vocation and flame is an active interest (if not outright love) of the work we do.  Here is my extended analogy for your consideration:
  • Burning Wicks are those who love programming and spend time learning, reading, studying, and improving their skills. They are contagious in their enthusiasm for better techniques and programming meta-considerations. They have done quite a bit of self-study, and have connected with kindred souls in the programming community.  They may have trouble fitting into some corporate cultures, unless the corporation values the kind of enthusiasm and learning-experiences these developers bring to them.
  • Dry Wicks are those who have entered the field of programming but never have been exposed to developers who have a burning love for the practice. They may have never heard about the issues of Coupling, Cohesion, Duplication, and Volatility. They may never have read Clean Code or Code Complete or the like. They have never heard a keynote speech or training session on better programming techniques.
    Dry wicks are ready to be lit. If a burning wick is introduced, a dry wick might catch flame. It may not take the introduction of two or three burning wicks before it picks up, but it will eventually light.
  • Burnt Wicks have been lit in the past, but circumstances (difficult work situations, bad corporate policies, poor coworker relations, etc) have caused the flame to go out.  Often a burnt wick can be re-lit, but it requires appropriate circumstances and a fresh application of flame.
  • Wet Wicks will not light. This is the true "just a paycheck" programmer, or the programmer who only programs so that he can do what he really wants to do (marketing, electronics design, management). It can be hard to tell a wet wick from a burnt or dry one at first. If a truly wet wick is found, the best thing to do is save your team from his influence by moving him to an area where he really has an interest. We can do better than "just a paycheck" programmers.
The question asked was what is the best we can do, then? I suggest that every programming team that isn't burning brightly needs a few burning wicks added. This infusion of fire can be in the form of contractors, consultants, or new team members. Some of us would be happy to come on as temporary full-time workers (say for a year or two). The first burning wick will catch some dry or burnt wicks, the next will pick up some more.  After a few attempts, you will find out which wicks will simply not light.

It is not my practice to recommend any developer's termination, but if you have a few who act as a wet blanket on the others, or who refuse to develop any real interest in what they're doing for 8+ hours each day, you would be better to make a lateral move (do not promote a wet wick over a programing team!) or help them find a new place to work away from your burning-hot developers.

Rather than a pronouncement from a greybeard developer, I would like this to be a conversation starter.  Tell me how you bring the fire to your team and what has not worked.  Help me know where the metaphor breaks down and what you would like to see done about it.

Update: See how Zander describes his life and leadership: