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.
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.