A Difficult Software Developer who lacks the intelligence or skill to do the job of writing software.
- Can mutate into: “The Soldier” or “The Extreme Overestimator” Difficult Developer
- Dangerous when coupled with: “The Non-Technical” Difficult Development Manager
- Likelihood of fixing: None
- Danger to project: Extremely High
Just as not everyone can be a professional athlete, or a skilled musician, or a medical doctor, there are people who are simply not cut-out to be software developers. These Incompetent Developers are often in denial, and refuse to abandon their career due to the large number of job opportunities and high salaries.
Picking out The Incompetent Developer can be difficult for the non-technical, but there are several indicators:
- They blame their lack of productivity on a lack of company provided training.
- They argue against technology, tools, and techniques that are “too complicated”.
- They greatly overestimate their work (see “The Extreme Overestimator” Developer), and then still do not deliver on time.
- Features are not implemented to specifications.
- Features, once implemented, are riddled with bugs.
- Skilled developers avoid or refuse to work with them.
- When asked for status on their progress, they are full of excuses and are often defensive.
- They apply for a management position (see “The Aspiring Manager” Developer) so that they can be “better utilized”.
The problem of The Incompetent Developer plagues the software development industry. It is a simple case of supply and demand, whereby there are not enough qualified software developers to go around.
When a manager detects that they may be dealing with The Incompetent Developer, their natural sense of empathy often leads them to assign less difficult tasks. Unfortunately, much as one cannot be a semi-competent heart surgeon, or a partially-competent airline pilot, one cannot be an somewhat-competent software developer. If you lack the competence to do software development, then you cannot even do simple tasks well.
When simple tasks prove to be too difficult, spending money on training is the next step normally taken. The fundamental problem here is that if The Incompetent Developer had the capacity to learn software development, they would have already – just as their more competent peers have, as competent developers train themselves.
There is a thought that having a not-as-productive developer on staff does not cause harm, but this could not be farther from the truth. They have two highly damaging effects:
- They destroy the quality of the codebase as they thrash about introducing broken code, and breaking working code (see “The Bull in the China Shop” Developer)
- They drive off competent developers who are fed up with working with them.
Ultimately, if The Incompetent Developer is the main developer you depend upon, your project will not get done. This leads to the sad conclusion that they must be invited to leave the development organization. If they do not take the invitation (usually issued by increasingly direct warnings), they must be terminated.