Understanding what makes companies successful - and how you can influence it as a developer - is a necessary first step towards swiftly advancing your career.
But, by itself, it is not enough.
While no manager can ensure the company's success single-handedly — that's why, as we discussed earlier, even "regular" developers must contribute to the company's success — it still makes a substantial difference how much you contribute to it.
The bigger your contribution - the bigger "chunk" of a company's success depends on you - the more valuable you become. And the higher your chances of getting noticed and promoted.
So how do you generate more value?
There's a common belief that the value you generate as a developer depends on your output.
If you google the term "10x developer", you'll get a lot of results related to individual performance. Check out the quotes from a few of the topmost results that I've got:
- "A ten times developer is the developer who is ten times more efficient than the average developer on a team."
- "These are the people you want to solve your problems; they’ll do it in 1/10th of the time, with 1/10th of the number of lines of code."
- "I am accustomed to being on teams where I am doing 60% of the work with 7-8 developers on the team."
Statements like these make me cringe.
This. Is. Not. How. We. Build. Modern. Software.
Software development is a team game. Or even a team of teams game. And the game is scored by business outcomes, not raw outputs. By being effective as a team and organization, not efficient as an individual.
As a VP of engineering, I'm not looking for competitive coders. I don't care how many lines of code you crank in what time. And a single developer doing 60% of the team's work is not something I'd brag about but a dysfunction I'd consider my priority to fix.
So who I am looking for, then? Let's consider the following math:
If you improve only your own output, you ADD to the output of your team.
But if you improve every team member's output, you MULTIPLY the output of your team.
And multiplication beats addition pretty quickly.
Even if you truly are a mythical 10x dev, you'll only increase your team's output by 10 "units", no matter the size of the team. But if you improve the whole team's output by just 2x, you'll increase it by 10 "units" for a team of only 10 people. And by 100 "units" for a team of 100 people.
And we're talking about an extreme situation when you are 10 times more efficient than EVERY other developer on the team. In reality, multiplication will beat addition for teams much smaller than 10 people.
Plus, we're talking only about the raw output: how hard do you push, but not in which direction do you push (or if you even push the right object to begin with). And the direction the whole team pushes in is critical.
It doesn't matter if a motorboat has a 100 or 1000-horsepower engine if this engine propels the boat sideways or backward, not forward. If you push in the wrong direction, you may not only waste your own output - you may undermine the work of your whole team. You can become a -10x developer.
And this relationship is mutual.
Even if you push in the right direction, your god-mode 10x productivity can be negated if the rest of your team is pushing in the opposite direction.
You need to help them, so they can help you. Cancel the weaknesses of your team so they don't cancel your performance.
It may sound counter-intuitive, but focusing on making your whole team more effective is often a better way to boost also your individual performance than focusing only on your own output, as the team's capabilities set the limits for the individual performance of its members.
That's why I and other managers aren't looking for individual efficiency as much as for the capability to positively impact your team. And the broader impact you make - the more people you help push the right object in the right direction with a maximum force - the more value you generate for your company.
Some companies explicitly recognize (and even measure) the concept of impact, while others may not be aware of it. But even in those that aren't, your impact will still be noticed, even if not consciously. Ultimately, the impact you make is the one and only thing that will get you promoted.
Don't get me wrong - it doesn't mean that direct contributions don't matter. After all, you were hired to develop software. Plus, unless you are a full-time manager, it's hard to positively impact your team without making any direct contributions. And you surely can make an impact by being a 10x dev - as long as you are a 10x dev who sets an example for the team, not the one who brags about doing most of the work and belittles other team members.
The key point is, being an outstanding individual contributor is not the only way, nor even the best way.
Continuing the "pushing" analogy - maybe a bit too far but I want this concept to sink - there are many ways in which you can help your team as much or even more than just by being the strongest pusher. To list just a few:
- Identifying the right object to push.
- Knowing in which direction to push.
- Creating more leverage by building and utilizing the right tools.
- Smoothing the surface you're pushing on.
- Helping the team coordinate to push more in unison.
- Training your teammates so everyone gains more strength.
- Showing them how to push with better technique.
And as your seniority (and thus the sphere of your influence) increases, these less direct contributions become more powerful, while the impact of directly pushing diminishes.
This may seem too abstract for now. We'll explore how this translates to software development in one of the next chapters. However, let's first examine how the concept of impact is viewed across the industry and how it affects formal career ladders at many top companies.