The wrong programmer is a programmer that checks all of the boxes and seemingly does a good job to a non-technical individual but is actually doing poor work. Because of the Dunning-Kruger effect this individual often doesn’t know he is the wrong programmer. I hesitate to say bad programmer because I truly believe any programmer can be good in the correct situation so I am erring on the safe, PC side and using the term wrong.
Usually wrong programmers are easy to identify. They stand out like sore thumbs in large, competent teams. There work is somehow sub-par compared to others. However, they are perfect in every other way. At least you have identified the individual! In some shops this is nearly impossible. Imagine the small team with only one or two individuals. It is very difficult to isolate the wrong programmer or imagine the case where the wrong programmer was hired first and rose to prominence within the organization. This individual took his wrongness and then infected the strategies across the organization with no way to correct. Remember, they are perfect in every other area except for the absolute faith they have in their individual programmer prowess. What a mess.
How do you identify the wrong programmer? Some ways are easier than others. The easiest method, of course, is to have money. With money you can afford to have a large, healthy team with cross-functional skills. This team of individuals will actively complement each other and naturally identify the wrong programmer. For those teams it is merely a matter of finding the right task for the wrong programmer. But what can you do if you are a small team without a lot of cash to throw around?
Well, some people suggest hiring consultants but that often doesn’t really help. Unless you are hiring a consultant you likely are just hit or miss. Don’t believe me? Call up a consulting agency and say you need a particular skill set that is hard to find to advise your team. Then, the next day, check Indeed and see if you find a job listing matching your “requirement”. You are not getting a consultant merely a really expensive employee whose job it is to make you happy. No, consulting is tough and often a complete waste of resources unless you can go direct and find real consultants and even then you are left in the same boat … how do you know? I would say social trust but that can be gamed as well. What we need is something else. A technique that can be applied before spending money, specifically some list of tasks that a non-technical person can perform to evaluate a programmer for “wrongness”.
Martin Fowler coined the concept, in software, called Code Smells that developers can use to identify bad code. The work is often functional but just doesn’t smell right. Perhaps a similar technique can be used in a non-technical environment to identify wrong programmers?
To be sure this method has its pitfalls. Performing a non-technical evaluation is gameable by smooth talkers. And remember what I wrote earlier about wrong programmers? They are perfect in every way except programming skill. This means they can talk. To walk through this we have to game the game. Don’t be aggressive, however, remember the wrong programmer is not a malicious trait but an inadvertent one. As such, we still want to treat potential wrong programmers like persons (I am not so kind to out and out frauds).
Start by asking a simple question:
“How would you design a multi-user web based system to track kittens?” (You can make up the scenario) Take notes on the answer, listening patiently. Indentify any area that was described at the 30,000 level and ask for a deeper clarification.