Why Most Programmers End Up Being (or Are) Underperforming Technical Leads
And how not to be one
Bob is an extremely ambitious and overachieving developer.
He works hard, refines his coding skills on a daily basis, and always finishes a project on or ahead of time — eager to get started on his next project. You can look at his code and immediately intuit that he’s a master at designing and architecting beautifully written code.
He loves everything his job has to offer and because of that, he shows up every single day with an energy that allows him to pound out value like a machine. He feels on top of the world.
Bob is the quintessential programmer that many of us yearn to become. Surely, no one is more deserving of promotion than him? So, Bob was promoted to technical lead, a position that management thought that he’d be even more valuable in.
Rightfully so. But this also meant that he’d write less code and instead would have to focus more on managing the direction of the project as a whole.
In other words, he’d have to do less of what he loved as a trade-off to do more of what he didn’t know how to do — managing others.
He lacked the ability to direct others, empathize with their schedules and knowledge, break tasks down for other people to succeed, and strategize for success.
He expected everyone else on his team to be as good as he was as a programmer so he didn’t spend the time necessary to invest in their development — mostly because he couldn’t relate to their needs.
As the months went on, he proved to be less than capable of performing well in his new position. He had reached a brand new level of incompetence. His better nature and lack of managerial skills through his previous job led him to fail at what he did.
This incompetence led his team’s productivity to plummet and their organization to crumble.
The Peter Principle
Bob’s situation is a all-too-familiar reality that many of us may recognize. I don’t know about you, but I’ve known a multitude of senior developers and technical leads who are absolute terrible at doing what their job requires— leading.
The sad thing is, these poor fellows were probably brilliant earlier in their careers. They have been pushed into a position they weren’t well equipped to thrive in.
This phenomenon is known as The Peter Principle:
In a hierarchy, every employee tends to rise to his level of incompetence. […] You will see that in every hierarchy the cream rises until it sours.
Although Laurence J. Peter wrote this bestselling idea as satire, it has proved to be unequivocally true — the idea that a person will be promoted again and again until they eventually reach their level of incompetence. For a developer, this can be mid-level, senior, lead, director, or all the way up to CTO.
As developers, it’s common to think that if you perform well and are constantly refining your coding skills, you’ll be promoted into a more prestigious position — one that bears far more responsibility and allows you to flex your merit and learned abilities.
And that’s true — you most likely will be promoted. That’s the way things are.
People are generally promoted based on their performance in their current position, not because they hold the skillset necessary to fill the next position. It is merely assumed that they are more capable because of their past performance. Who knows, they probably are more capable.
Unfortunately, their capacity to do great things in the past doesn’t necessarily translate to their ability to accomplish great things in positions they fill in the future. For that, their promotion can serve to be a very poor investment in regards to the success of future projects. It’s a gamble, not a certainty.
That being said, in all likelihood, you’d probably be pretty awful as a manager. That’s not to hurt your feelings and undercut your abilities, but it’s because you’re so focused on your current job that you won’t be prepared for what the future holds.
Your own ambition is, paradoxically, a key that unlocks your own mediocrity.
You have the skills that make you great as a developer. You might even have the skills that make you a formidable team player. But you lack the skills that would make you great as a leader, architect, or coordinator. Programming alone doesn’t particularly develop those leadership-type attributes.
It's for this reason that so many incompetent people hold positions above us. This is why once brilliant people do horrible things. This is why certain projects go wrong under specific leadership. And no, it’s not the team who’s at fault — it’s the leader of the pack who failed to create an environment and organized structure for the team to succeed.
But it doesn’t have to be this way. You can’t transform the way your organization handles promotions, but you do have control over yourself and your own perception. You can harness your own unique ability to think and act.
Creative Incompetence: The Key to Being Good
Imposter syndrome is often seen as a bad thing. Of course, possessing the state of mind that you’re less competent than your job demands can cripple you. It could cause you to undersell yourself.
When you deeply believe that you’re not capable, that often manifests as reality.
But there’s another way of viewing such a mode of thought — a psychological avenue that you can use to avoid falling victim to The Peter Principle. The adoption of “creative incompetence.”
Creative incompetence is similar to imposter syndrome in that you see yourself as incompetent. Except, you foster this mindset in an intentional way.
When you intentionally view yourself as incompetent, you might ask yourself questions about how you might be able to alleviate such incompetence.
You prepare a strategy. You learn more than just what your job immediately demands of you. You refine your soft skills. You do what it takes to become more than a mere programmer.
You take action to become someone dynamic enough to fill in future leadership positions within the realm of development that isn’t tied specifically to programming.
Remember, there’s far more to development than programming. In order to maintain yourself as a powerful asset in the long run, you have to prepare now.
So, verse yourself not only in programming but in management, strategy, game theory, business philosophy, communication, and whatever else it is that will allow you to lead better.
You want to hit the ground running. If you think that because you succeeded in a past position, that you’ll succeed in a future position, you’re in for a rude awakening.
“If you think you know everything; you know nothing. If you think you know nothing; you know something.”
— Jayce O’Neil
So, be creatively incompetent. Believe that you know nothing. See yourself as incompetent.
Adopt this mindset as a means to better prepare yourself and motivate you to learn beyond what your craft currently demands of you and the future positions that you’ll need to fill.
Be the developer in an idealized sense. This will allow you to continuously make an impact and improve without reaching a ceiling that limits your growth.