Hey! How's it going? I'm gonna whine a little here. Can I sit down?
You learn, you grow up the career ladder: junior, middle, senior, in some companies — principal, architect. A higher level shows your technical background as well as a certain breadth of knowledge and, of course, soft skills. But then what? What an engineer should do when old tasks are no longer so exciting, and where to go next is still not clear. Do you have to step into a management position to continue your career advancement?
I would like to add such a concept to your vocabulary as "Value". It helps a lot in negotiations, especially with bosses. I would say that your career success and growth are proportional to the Value you create through your everyday work. It could be the architecture you design, the implementation of a CI/CD pipeline, the successful resolution of a customer problem, or whatever else you can think of. You can measure your work in some value units and look at it as a KPI and help everyone else look at it the same way. Sounds logical, don't you think? And if you look around and look at people and assess their value — seems wrong, doesn't it? Well, that's not what I'm talking about here...
Your ability to program has a limit, the impact of your technical input is not necessary and it's not measured in lines of code — we are Engineers, not Developers. Your ability to decide where to spend your efforts to maximize your contribution — what code to write, what application to create, and what business problems to solve — is unlimited. It is this ability that distinguishes the most valuable and effective engineers from everyone else.
Don't confuse your technical ability and experience with an increase in Value. This model is defective, I've seen plenty of great tech guys who could write regexp and deploy k8s cluster in their sleep but their value ended up in endless fights in the Pull Request comments and being toxic to the team.
Reasons to become a manager
If your job is not a hobby, no matter how new and interesting technologies, tools, and frameworks come along, you will still get very bored. It is boring to write, debug, release, implement, and so on. The role of the manager dilutes the technology routine a bit. You need to plan projects, budgets, create teams, make a growth plan for each subordinate, and generally — do more people management. People here are an endless source of problems — and therefore an endless field of work.
Another reason people may become managers is that they want to make a difference. They can see mistakes and problems, but they can only influence the decisions indirectly, most often they can only complain to their team leader. The lack of a title and leverage makes it impossible to influence a team or management.
Many engineers become managers because management roles offer an obvious and well-defined point of reference to increase their influence. Teams need managers as they grow, and years of technical experience can be a useful asset in building management skills. As a manager, you influence the work of your subordinates — and if you are a good manager, you increase the Value created by all members of your team.
I enjoy programming and even learning in my spare time, but I constantly feel like I'm on a treadmill — the industry is constantly evolving and new approaches and tools are emerging all the time. I feel like staying in a career where things change so quickly is bad because when you're older, your experience isn't as valuable if you're not doing something new and looking at how your field is evolving. Which is exhausting. However, I still want to be in demand.
One solution is to increase the level of abstraction and work not with technology directly but work with people who will work with technology for you. You are still solving problems, but a little higher up — problems not about production crashes, but the business problems, and you solve it by delegating and decomposing, aka management.
Last on the list but first in mind is money.
Ducks fly south in the winter not because of the temperature, but because of the food. If you keep feeding them, they'll get used to it and they not fly away. It's the same in our industry —people go where they are better fed, and usually, the managers are better fed.
If you become a manager, you will communicate with the customer, diligently obtaining requirements, but no one will let you develop, design solutions, write the code — it's an unacceptable waste of your time. Others, your team, will develop, and they will get the sweetest piece of the pie.
The further away from the team, the higher the level of abstraction and less specificity. There are no requirements, the priorities are not clear, and there is TOO MUCH communication, often useless — just a top manager wanting to check if you are doing everything right. There's no such thing as ex-engineers, so that will annoy you.
A manager's workday on average consists of (my experience and what I've seen):
- 5-20% — pre-sales. This is communication with new customers, working on quotas, and clarifying requirements for new projects.
- 40-70% — communication with customers. To comprehend and answer dozens of letters, not always adequate and sometimes coming from incompetent people. Making calls, clarifying requirements 10 times over, rescheduling, and convincing customers that this slightly modified design will move the deadlines. We're just engineers, not magicians.
- 10-25% — communication with the team. Yes, this is probably the most enjoyable time of the day.
In my experience, a good manager is a former engineer who was able to switch the focus to the product and the customer, strategic thinking, has good soft skills, and does not try to solve project problems head-on. And he can be responsible for dragging everyone around him to a brighter future. A good manager has many of the qualities of a good engineer.
Usually, the idea of becoming a manager comes to a person after he or she has managed a team and liked it. How do you know whether you want to manage people all the time or only give tasks on a certain project? Think back to your previous experience: what did you like about it?
No one needs a fucking manager
No one needs a manager in a pure form — people need someone who is equally good technically and can control himself and his team, communicate with people, and write clear and professional messages. Your technical knowledge is quickly and hopelessly becoming obsolete, and no one needs you without it. There are plenty of pure managers everywhere, but nobody wants to pay money for them — everyone wants to talk to a technical person, not a mail forwarder.
What's more, the managers themselves are sick of themselves. They can't do anything with their hands unless they are a super-technical manager on a super-technical project, which is rare. I've heard a lot of complaints that after a year or two of project management, the PM wants to get his hands dirty working with code again, and it is already hard/impossible / lost the grip. The exceptions are the FAANG giants.
It is possible to grow into team leaders when you have authority in the team, and your future subordinates respect you and trust you. There's no way without that, and it's much harder to earn your team's trust, especially when you start out as a junior developer than having the blessing of people at the top. A leader exists only when people allow him or her to lead them, there is no other way.
Once an engineer - forever an engineer
When you are on a high level, you can delegate everything. Okay, if you don't know about deployment, give this task to someone who does. Do you need to optimize application performance? I'm not an expert, let John do it. I'll give him my review later.
Quite soon after you stop doing engineering tasks, you will notice that your subordinates, who only recently were younger and more inexperienced than you, begin to write better code, know more about the latest technology, and look at you a little askew. You cannot escape from this, from now on technical knowledge is very hard to come by.
Increase the Value
Going into management is one way, but not the only way, to have a successful career. You can remain an engineer, but don't think that the number of years of experience will help the growth of your career. For your career to advance, you must constantly find new ways to add Value. If that added value exceeds what you could create as an individual contributor, you will be fine.
Finding a new job is easier as an Engineer
There is a joke that a good engineer finds a job on the second day after being fired, and that's only because he drank the first day. This is exaggerated, but essentially true. Experienced Software Engineer usually fits smoothly into any existing team or company structure — it is much easier to find a team member who is good in some particular area than the manager or team lead, under which the entire team must adjust.
Almost no one is looking for managers, especially in large companies — everyone is looking for good professionals, and they prefer to grow their own managers. So if you came to management for money, it will be very easy to stay in the same company forever but very hard to find a place in a new one. You can domesticate wild ducks, but you can't make domesticated ducks wild.
If you are an engineer in an expanding organization, sooner or later you will be asked if you are interested in a management career. Don't choose this path if you don't know why you need it. Also, don't do it if you don't plan to take care of your future subordinates. No one wants a manager who just makes career experiments. People want to see a manager who is involved and willing to work hard to create the best possible environment for them to thrive. Becoming a manager is not a promotion — it's a lateral move onto a parallel track.
If you've seen communication with people as a necessity and enjoyed working on the technical side of a project, that's a reason to consider a non-manager career path. In IT, there are paths where you can also achieve financial success and become in demand. You can be a great technical expert in one area, you can become a solution architect, etc. Focus on what creates the most value. Your career success and growth will follow.
Don't go into management. Or go, it's up to you. My job is to show the "what if" picture.