One of the most interesting parts of software development, are the group dynamics that form to complete the task at hand.
This congregation of individuals comprise many different areas of expertise, personality and skill.
Neil Green has created this fantastic website describing these personality patterns that arise in software projects. The reasons these personalities exist, what effect they have on the projects and what can be done to rectify any problems that may arise. The one I want to discuss first is the Incompetent.
The reason I wanted to focus on this first was that everyone feels that they know/ have known an Incompetent programmer.
Neil defines this personality as:
A Developer who lacks the intelligence or skill to do the job of writing software.
We know that we do not know what we do not know. That's a bit of a mouthful, but in essence, we ourselves do not know our own level of incompetence! This can be referred to as the Dunning Kruger effect and can commonly be found when asking how good you are at driving. Try it out on a friend you try not to get in a car with!
Here are some questions that will usually get asked by groups of people questioning these individuals.
How did this person get hired?
The interview process is not 100% foolproof, each organisation will allow people through that might not be up to your organisational standards.
Organisations and technology change over time, what may have been competent a few years ago may not be now. Developers need to constantly evolve, upskilling and training are integral to keeping on the competency curve!
Sometimes people are not good at teaching themselves new things.
These individuals are not stupid, they are highly educated people that may have been in the industry for a long time. They managed to navigate their way through the interview process and probably have all the qualifications that you would want and/or expect. However without guidance they cannot learn what they need to. When you no longer have a lecturer/mentor telling you what to learn and how to learn it, people can struggle.
Why is this person not fired?
There are a lot of legal implications firing someone! In certain cases, this can be fixed in other ways. The level of competence in any proficiency is not the only reason an individual is part of an organisation; Personality, Domain knowledge, Communication skills, being the boss's nephew or niece!
Some people are simply not ready to fulfill their job description. I'm a big believer of the Peter Principle, where people keep getting promoted until they reach a level of incompetence.
This doesn't mean there is any malice in their work, they simply do not possess the skills to adequately complete the task at hand!
What should be done now?
In most cases these individuals are not usually even detected, and if they are, most of the time they are just forgotten about. There may be several reasons why this has happened; Is there the guidance in the organisation to keep skills relevant? Have there been external influences that may have caused levels to decrease? Do these reasons change your perspective on the matter?
Don't wait until the last possible minute to discuss performance, it's best to be upfront about this as quickly as possible, otherwise it can get quite awkward. Is there a plan that can be put in place to improve?
All of us have innate talents, but few of us try and find out what they are.
The final straw, is trying to move this individual into another role that they are more suited to.
So... are you an Incompetent Developer?
- Blame your lack of productivity on a lack of company provided training?
- Argue against technology, tools, and techniques that are “too complicated”
- Greatly overestimate your work?
- When asked for status on your progress, you are full of excuses and are often defensive?
- Your features, once implemented are riddled with bugs?
If you have answered Yes that sounds familiar to a couple of these, then maybe you are on track to becoming an Incompetent developer! But don't worry, once you're aware of this, you can look at turning this around!
Software development is a high pressure job
In most cases, you will be working to improve areas in which you are not overly strong. You won't do this if you do not know you have areas which you are not strong in.
You are most likely confident in saying that you are not good at certain sports, cooking or perhaps public speaking. If you ask yourself what you are not good at within your actual job parameters the answers are usually harder to comprehend. Learning your strengths and weaknesses will help you understand where to focus your energy, and hopefully you'll turn it around before anyone notices...
You can then safely return back to your colleagues and talk about how incompetent that other person is again!
Thanks for reading, I hope this got you thinking! If you would like to share my opinion, please use the buttons below.
To read more details on this personality trope click through below.