During your career, you will come across both great and poor programmers. While one may be tempted to group all poor programmers together, there are different levels of poor programmers. It is instructive to know the difference, because generally (especially if you have just joined a new company), you cannot go on a firing rampage, throwing out anybody you deem incompetent. You may to have to tolerate some levels of incompetence and know what you can work with.
Here are the 5 levels of incompetence, in increasing order:
- No intelligence
- No interest
- No sense of responsibility
- No fear
- No self-respect
A more intelligent developer means more productivity, more creativity and fewer mistakes. The reason why a particular developer is performing poorly may be that they are unable to comprehend or remember things as effectively as a more intelligent person. The population of programmers is, on average, more intelligent than the general population, but you will find some extraordinarily brilliant persons and some not so good.
Sometimes, the problem is that you are expecting too much from someone that is beyond their physical capabilities. So, you have to tone down the challenges a bit. Reduce the multi-tasking. Provide systems that help them remember and keep notes. Establish standards. Use software and/or procedures like code reviews to help them in their work. They may perform adequately in their reduced responsibilities.
A person of average intelligence, but with a high degree of interest in software, can be a very useful developer. When a person develops a special interest in a subject, they spend an undue amount of time tinkering with the subject and, by constant reinforcement, can learn the necessary techniques and tools. The only problem with a lot of knowledge and less intelligence is that the person cannot be depended on to find any creative solutions.
But when the person has no interest, you have to depend on external motivation and rewards to get the person to do anything. You may need to allocate separate time and funds for the person to improve their skills, because they hardly spend any time outside the office even thinking about their work. You should never assume that the passage of time has automatically made them more experienced and more capable.
No Sense of Responsibility
An external factor for many career programmers is a sense of obligation towards customers. The customer pays the bills and hence they are entitled to good quality software that performs to the customer’s expectations. Or the developer may feel obliged to pull their weight for the team. When the programmer stops caring about the customer, the team or the company, they don’t worry about productivity or quality. They just think about the paycheck that they receive without any moral qualms.
At this level, you cannot reward the programmer to do more. Instead, you can only use punishments to enforce quality. Fear of losing one’s job could be a factor, especially in a bad economy. However, there are many problems for you as a manager. Until used, the firing option is simply a vague threat. You must have demonstrable differences of the fired persons with respect to the rest of the team. Finally, firing someone can have unpleasant side-effects on the project and the team.
The talent-less and irresponsible programmer may still produce something if he/she knows that the work is being monitored and is aware of the consequences of bad quality (such as demotion or unemployment). Some persons may not even care about that. For example, during a labor shortage, some employees may be job-hopping and may not be worried if they lose a job. Or for reasons like nepotism or favoritism, the employee may never have to fear about punishment.
At this stage and assuming you cannot fire them, you have nothing left except to beg the person to get something done. Appeal to anything that they may have left in their character. A more practical approach would be to assume that they don’t exist, and then hire more people to fill in the gaps. That is pretty expensive, but that may be your only option.
You have nothing left. Period. If the person does not even care what others think of him or her, they will just do what they want. If they don’t feel ashamed that their poor quality of work reflects upon them in front of their boss or their co-workers, it is impossible to do anything with them.
The last three factors (and perhaps even the second one) are a function of age. The older one gets, the more one feels the need for security, belonging and self-worth. It is also more difficult to change one’s profession. People develop a greater pride in their work. So being a terrible programmer is not a static situation.