Why developers stop learning. The dangerous and incompetent professional… | by Bennett Garner | Developer Goal | Jul 2022
The dangerous and incompetent professional engineer
It’s happening slowly, but it’s insidious.
You worked as a software engineer for a few years. You are comfortable:
- …in your company
- …in your tech stack
- …with the problems you solve
Nothing looks new anymore. The problems are not so interesting. Of course, you still do some research, visit Stack Overflow and learn some tips. But construction software is starting to lose its luster.
There’s nothing wrong, but you’ve hit a plateau.
Today let’s talk about those plateaus, how to keep improving and become a great engineer.
In psychology, there is a model of skill acquisition called the “four stages of skill.”
- Below is “unconscious incompetence” — you don’t know how to do something and you don’t recognize your lack of competence. You can also negate the value of the new skill.
- Then is “conscious incompetence— now you have recognized that you don’t know how to do something and the skill is worth learning. This is the real learning phase.
- After acquiring certain skills, you enter “conscious skill” – you know you can perform the skill, but it takes effort. You have to focus and you still make mistakes.
- Only after a long time do you develop “unconscious competence” – the ability to perform the skill intuitively and fully absorbed in the task. At this level, you have developed mastery so that performing the skill is second nature.
The danger in software engineering is assuming that you are “unconsciously competent”, when in reality you are “unconsciously incompetent”.
Many young programmers hit a plateau in their learning and assume they must be incredibly smart. They have such a high opinion of themselves that they think they have already become experts.
In their minds, they have already achieved mastery.
In reality, they just don’t know how much they don’t know. They really suffer from unconscious incompetence.
When these engineers don’t realize their mistake, I call them “incompetent professionals.”
It is difficult to work with these engineers, because they are so sure to be brilliant. In my experience, many so-called “10x engineers” suffer from unconscious incompetence.
So what can we do about the learning trays? What does the hierarchy of skills tell us?
To continue learning and growing as a developer, the first step is to recognize that you are probably still incompetent in many skills. The world of software development is incredibly wide and deep. There are so many skills to explore and hone. It is impossible for one person to know them all.
Then, if you’re bored and dispassionate, engage with other developers!
Start with your team. Learn about your peers, pair program, ask questions about what they know and their development practices. Then reach out to the wider community – contribute to open source, mentor new developers, and attend conferences.
Soon you will begin to realize how little you know.
Good thing you’re incompetent! Damn, I’m incompetent too!
- There is more to learn, explore and be curious about. You are not stuck being bored. There is so much to discover.
- The plateau is temporary. Now that you have recognized that you are incompetent, you have gone from “unconsciously incompetent” to “consciously incompetent”. You have already advanced in your journey!
- You are not one of the incompetent professionals. Since you’re willing to admit that you don’t know everything, that means you’re probably a good team member and a good contributor. You are not self-centered.
This post was inspired by Erik Dietrich’s writing on “The Rise of the Expert Beginner.”
If you liked this article, you should read Erik’s. I highly recommend the DaedTech blog and Erik’s book Developer hegemony.
Build a meaningful developer career – Email course on how to build a tech career with meaning and purpose
Be a 1x Engineer – Why Being a 10x Engineer is a Dangerous Archetype and What to Do Instead
Think software engineers just write code? — All the hidden work, beyond coding, that brings out great engineers