Making The Transition from Software Engineer To Manager
By: Daryl Thayil
Software Engineering is the ultimate expression of problem solving.
Whether you enjoy the challenge of creating rich UI experiences with intricate interactions, backend services that can scale with insane load, or building products that change the way people live their lives, writing code is the skill that gives us god-like abilities.
As your career progresses, you learn new languages, tools, design patterns, and skills that will increase your capacity and impact. Eventually, you will be faced with the question of how to maximize your impact, and you may consider becoming a manager of engineers. Believe it or not, the skills you have worked so hard to hone do very little to inform and prepare you for what an engineer manager does. In this article, I will help pull back the curtain by explaining the difference between an individual contributor role and a manager’s role, and sharing some of the most profound lessons I have learned in my first few years as a manager.
What it Means to be a Software Engineer Manager
Let’s be clear, becoming a manager is a change of career, not a natural progression on the career track of an engineer. Where an engineer’s time is largely their own to use, a manager’s time does not belong to themselves. A manager’s time is largely interrupt-driven. Whether it be from product managers, engineers, meetings, or emails, it can be tough to find an hour of free time in a day. As an engineer, you spend most of your time solving problems with code, whereas managers are lucky to write enough code to keep their skills sharp. Instead, managers spend their day trying to solve problems with soft skills like communication, encouragement, advocacy, compromise, and process. Engineers can gauge how successful they were at the end of the day with hard metrics. Did you get the thing done you thought you should get done? Did the thing you got done work? Are you on schedule to do what you need to do by when it needs to be done? Even when things aren’t going great, it’s comforting to know where you stand.
Managers, on the other hand, work on projects and initiatives that are much harder to measure. As a manager, how do you know if the conversation you had with someone about how to approach code review had the effect you thought it would? How can you tell if the hire you made was a good fit for the company and team? Changes like that can take days, weeks, months, and even years to quantify. As an engineer, you make an impact by being additive to your organization. As a manager, your job is to be a multiplier. As a manager, your team is an extension of your abilities, and your impact is compounded through them. From my perspective, the cost of transitioning from a career that I was comfortable with and trading it for the ambiguity and overhead of becoming a manager is paid back and then some by the scale of problems I get to solve. While both managers and engineers are problem solvers, they solve problems in dramatically different ways.
Key Lessons to Become an Effective Manager
In the first few years of the transition from engineer to manager, there are some key lessons to be learned. Because of the drastic shift in responsibilities and function, it can take time to get your bearing and become an effective manager.
Managing is a relational job, not a technical one. It’s all about people, and you can’t lead people unless you have relationships with them that go beyond their day-to-day work. When someone on my team is going through something personal, even if I don’t know the details, I need to manage them differently. When you can laugh with your team and commiserate with your team, it becomes easy to work with them. Some of the proudest moments as a manager I have experienced have nothing to do with work and everything to do with people and relational growth.
I have also learned as a manager to focus less on the results of my actions and more on the approach. Measuring your effectiveness as a manager is extremely difficult, and it’s easy to find false positive and negative affirmations. While you must remain flexible to feedback, you must also remain committed in approach. Judge your success as a manager on your ability to make progress on your goals every day. Get to the root of what you are trying to drive and make that the focus. If you want to drive continuous deployment in your organization, internalize the benefits of developer efficiency and ability to ship product quickly. Even if you never get to continuous deployment, the changes in the organization you can cause by staying committed to those ideals will be the fruits of your labor.
One of the hardest lessons I have learned as a manager is that I can’t do it all. Early on, I felt like I needed to do all the important work on my team, while also doing all the manager’s duties. Not only is this a recipe for burnout, it’s also impossible to get important work done when you are in sporadically placed meetings and trying to handle larger scale problems. I identified that what I wanted was a team of people that I trusted as much as I implicitly trusted myself. The only way to build that trust is to let go of control. It’s okay if your team approaches problems differently than you, and it’s okay if they make the wrong decisions sometimes. I learned from my mistakes, so why would I rob them of that? As a manager, when I learned to let go, not only did my teams grow, but it freed me up to think further out and more tactically to put my teams in a good place to succeed. I had to give up one type of problem solving to flourish at another kind.
Recognizing what you are signing up for will help manage your expectations and inform your decision-making as a manager. Focusing on building relationships before you are a manager will make relating to those on your team easier when you are responsible for them. Committing yourself to values, while being realistic about expectations, will help you contextualize your success and effectiveness as a manager. Letting go of the day-to-do job of being a great engineer will let you not only be a great manager, but grow and create great engineers on your teams. Making the transition from Software Engineer to Software Engineer Manager is an exciting time in your career, but preparing for transition beforehand will make the move much smoother. You will continue to solve interesting problems, but in a different capacity that is no less intricate and magical than software engineering itself.
Want more great content as you learn to code? See what’s new on the Code Fellows blog »