Jack is an extremely ambitious and active developer.
He works hard, improving his coding skills every day, and always completes the project on time or earlier, ready to start the next project. You can look at his work and instantly realize that he is a master of designing perfectly written code. He loves all aspects of his work and comes to work energetically every day. He feels euphoric from his life.
Jack is a quintessence of a programmer that many of us want to become. Who else deserves a promotion if not him? That's why Jack is promoted to a technical manager, a position that his superiors believe he will prove even more valuable. And it has every reason to think so. But it also means that he's going to have to write less code and more control the movement of the project as a whole.
In other words, he will have to do less than what he likes in exchange for something he can't do—manage others.
He lacks the skill to lead others, to understand their work schedules and knowledge, to divide tasks so that others can cope with them, and to build strategies that lead to success. He expects everyone else on his team to be as good programmers as he is, so he doesn't spend time developing them, mainly because he can't feel their needs.
Months pass and it is evident that he is unsatisfactory in his new position. He has reached a new level of incompetence. His complacency and lack of leadership skills, which had contributed to his previous work, had now led to failure. Because of his incompetence, the team's productivity fell, and the company itself cracked.
Jack's situation is painful for many of us. I don't know about you, and I know a lot of creative developers and technicians who are absolutely terribly able to cope with what is required of them in the position — management.
Sadly, these poor people probably used to work brilliantly. But they were pushed into a position where they simply don't have the right skills to succeed.
Peter's Principle
While Lawrence Peter framed the idea in his bestseller as a satire, it was certainly true: a person will be promoted until he or she reaches his level of incompetence. For the developer, this step can be a midlle, senior, tech, director and so on up to CTO.
It is widely believed among developers that if you manage well and constantly improve your coding skills, you will be promoted to a more prestigious position. It imposes much greater responsibility on you and allows you to manifest your dignity and skills. It's true—you're likely to get promoted, that's what happens.
People are usually promoted on the basis of their success in their current position, rather than because they have the skill set needed in the next. They are simply assumed to be more capable because they have been successful in the past. Who knows, it's probably true.
Unfortunately, their ability to do excellent work in the past does not necessarily translate into the ability to perform well in future positions. In this sense, raising them could be a very bad investment in the success of future projects. It's a game of probabilities, not inevitability.
However, you're likely to be a rather horrible leader. I say this not to hurt you or discredit your skills, but because you are so focused on your current work that you will not be prepared for what the future is for you.
Paradoxically, your own ambitions are the key to your mediocrity.
You have the skills to make you a great developer. You may even have the skills to make you an amazing team player. But you don't have the ability to become a great leader, architect, or coordinator. Programming by itself does not develop the attributes of a leader.
And that's why so many incompetent people run us. That's why they make terrible mistakes. So some projects are moving in the wrong direction, under the guidance of specific people. And no, it is not the collective that should be blamed for this - it was the leader of the pack who failed to create the environment and an organized structure for the team's success.
But it doesn't have to be that way. You can't fix the principle by which your organization conducts promotions, but you can control yourself and your own perception. You can use your own unique ability to think and act.
Creative incompetence: a way to be a professional
The impostor syndrome is often considered to be something bad. Of course, a mentality in which you consider less competent than the requirements for your post may harm you. It may lead to an underestimation of itself. When you believe in the depths of your soul that you know nothing, it often manifests itself in reality.
But this mindset can be viewed differently, as a psychological perspective that does not fall victim to Peter's principle. Get used to "creative incompetence."
Creative incompetence is like impostor syndrome in that you consider yourself incompetent. Only then do you develop this kind of thinking on purpose. When you deliberately consider yourself incompetent, you can start asking yourself questions about how to deal with this incompetence.
You're preparing a strategy. You learn more than your current work requires. Improve your soft skills. Do what it takes to become more than just a programmer. You are taking steps to become dynamic enough to become a non-programming-specific development management post in the future.
Remember that development is much more than programming. To remain a valuable resource in the long term, it is necessary to prepare now. So, not only do programming, but also management, strategy, game theory, business principles, communication, and everything that allows you to better manage.
You have to be ready to get to work right away. If you think that success in your previous position will make you a success in the future, the disappointment will be hard.
So be creatively incompetent. Believe that you know nothing. Treat yourself as incompetent.
Get used to this mindset as a way to better prepare and motivate yourself to learn more than your day-to-day work and the future jobs you will need to fill. Be an idealized developer. This will allow you to make an important contribution constantly and to improve without reaching the ceiling that limits your growth.