From Code to Leadership: My Journey from Software Engineer to Engineering Manager
This blog post will shed some light on my own journey from developer to engineering manager and provide considerations for engineers who might be in the same situation.
As software engineers gain experience in the field, a common question arises: what does the next step look like? Senior engineers often face a fork in the road, with options to either continue building their technical expertise or branch into a management role. I was in a similar situation several years ago, and ultimately decided to pursue the people management path. This blog post will shed some light on my own journey from developer to engineering manager and provide considerations for engineers who might be in the same situation.
💡 Key Takeaways
1. There are no fixed Engineer Manager’s responsibilities. Each organization has different requirements and might have different definitions.
2. The challenges of an Engineering Manager are very different from a Software Engineer as it has involved more soft skills.
3. Enjoying helping others is the key to stick to the Engineering Manager path. It is also the standard answer to the interview question: “why do you want to be a manager?”
How I Transitioned from a Software Engineer to a Software Engineering Manager
Before I moved to the management path, I had been a software engineer for around 8 years. As a software engineer, my focus was primarily on coding, architecture, and solving technical problems. I enjoyed the process, improved myself day by day, and gradually moved to a senior position.
I never thought about moving to a management position until the day when I found myself very excited about the organizational changes that occurred once in a while. For example, a new role of owning a single microservice in the team was introduced to alleviate the burden of the technical leaders, who were in charge of multiple microservices in the team. Changes like this always excite me, making me wonder about what would happen. Is this change going to make the team more productive? Or is it another change that will be buried in history without making any difference?
After several occasions like this, I started to realize that I might be interested in the Engineering Manager role. I was not just excited for the organizational changes, but it made me want to be part of that decision-making process.
Recognizing this pattern, I spoke with my manager, who played a crucial role in my transition. We created a tailored growth plan that involved transitioning leadership responsibilities to me such as OKR planning and resource allocation. My manager's support was key to this process, and I gradually learned the leadership tasks in the team. And at one point of time, he told me that he was leaving the company, and he congratulated me that I was qualified to take over his position. I’m not sure whether that’s his plan along the way, or if it’s an opportunity coming to him without his knowledge.
Anyway, that started my Engineering Manager journey.
Engineering Manager’s Responsibilities
“What does an Engineering Manager do?” You might ask. There is no good answer for that. Different organizations have different requirements, and they would create different job descriptions for Engineering Managers. A good example is that division between:
Engineering Team Lead or Tech Lead: This is closer to a senior developer role. The role might spend 50% of the time doing hands-on coding, technical design document review, and technical discussion. The other 50% would be on people management and team organization.
People Manager: On the other hand, this role is a typical manager role where hands-on coding is not a priority. This role might spend 20-30% of the time working on technical discussions but most technical work is delegated to the senior developers in the team. There are more organization-related tasks such as improving collaborations across multiple teams, designing the interview process, and structuring the roadmap of the Engineering Division.
However, the responsibilities can usually be summarized into the following:
Strategy Planning & Execution
Engineering managers play a crucial role in strategy management within their organizations. This involves planning, which includes setting goals using tools like OKRs, creating and merging teams, and managing technical decisions. Some projects that I have handled include merging two teams together in order to avoid resource duplication since the two teams were working on highly similar goals and using similar technologies.
Execution is another critical aspect of strategy management, where managers are responsible for monitoring the progress of their strategies, collecting feedback, and adjusting directions as needed. This ensures that the organization stays on track and adapts to any changes or challenges that may arise. Using the example above, starting from the execution, I had to monitor the progress by regularly checking in with the members in both teams and see if they had any feedback about the change.
People Management
People management is another essential responsibility for engineering managers. This involves motivating team members by removing blockers, setting clear goals, tracking performance, and providing regular feedback. Managers also need to handle low performers and resolve conflicts within the team. The goal is to ensure a productive and positive working environment.
Building a Healthy Engineering Culture
Building a healthy and positive engineering culture is also a key responsibility. This might not sound essential, but every engineering team needs to have a good culture to move into the right direction in the long-term. A good culture means that team members feel valued, respected, and encouraged to drive.
For example, “blameless culture” is a recent trend adopted by a lot of organizations. It promotes that when incidents occur, the focus should be on improving the process and guidelines, instead of targeting individuals. With an established blameless culture, it’s easier for developers to try new ideas and make mistakes. We assume good intentions in everyone and a good process would help us eliminate risks and issues.
Hiring
Engineering Managers are responsible for recruiting and hiring new team members, maintaining the hiring standard, and ensuring that the hiring process is efficient and effective. This involves identifying the skills and qualities needed for the team, conducting interviews, and making hiring decisions that align with the organization's goals and values.
Project Management
Project management is also an important responsibility for software engineering managers. They work closely with product or project managers to oversee the planning and execution of projects. This involves setting timelines, allocating resources, and ensuring that projects are completed on time and within budget.
However, there is a gray area between an Engineering Manager and a Project/Product Manager. Both roles need to pay attention to project execution, but there are parts that both roles are held accountable, especially when the results matter to both the engineering side and the business side. This is usually handled by having a clear RACI matrix in the organization or agreed between the EM and PM.
Technical Leadership
Engineering Managers are responsible for overseeing the technical decisions and directions of their team. This includes ensuring that all technical work meets the organization's quality standards and aligns with its strategic goals. By providing strong technical leadership, managers can ensure that their team delivers high-quality, innovative solutions that drive the organization's success.
However, as stated above, depending on the organization, technical leadership is usually delegated to technical leaders or senior developers.
The Challenges for a New EM
As I started my Engineering Manager career, there were many unexpected challenges, and most of them were completely different from those I faced as a Software Engineer. They can be roughly categorized as the following:
Longer Feedback Loops
Transitioning from a software engineer to a management role brought about a significant change in the feedback loop. As an engineer whose only job is software development, most of the time I can see the result of my work immediately. The unit test result will tell me whether a test case passes, and the monitoring system will tell me whether the release is successful or not.
However, in a management position, the outcomes of decisions often take much longer. For example, the impact of hiring a new team member may not be evident until they have had sufficient time to integrate into the team and demonstrate their contributions. This delayed feedback makes it more challenging to measure the success of decisions in the short term.
Technical Skills Become Less Relevant
Another major shift I experienced was in the prioritization of skills. As a software engineer, technical skills are prioritized. However, as a manager, skills such as prioritization, navigating organizational politics, building relationships, and effective time management became more important. This required a significant adjustment, as the metrics for success in management are quite different from those in a purely technical role.
For example, in hiring, it’s more important to be able to see whether a candidate’s presence in the team would be helpful or not. Making such a decision would have an impact on the team’s productivity for the next 3-6 months. It’s not only about evaluating the technical skills, it’s also important to evaluate culture fit and team fit.
Politics
The introduction of people management also brought with it the complexity of office politics. I found myself contending with conflicting priorities and the need to make decisions that balanced the well-being of the team with the goals of the organization. Learning to navigate these relationships and identifying which voices to trust were new challenges that required a different set of skills compared to those needed in a technical role.
Tasks Full of Ambiguity
One of the more difficult aspects of the transition was dealing with ambiguity. In technical roles, there is often a clear-cut solution to a problem. However, in management, I encountered situations where, despite careful analysis, there was no obvious right answer. This uncertainty can be particularly challenging for individuals accustomed to the precision and clarity of engineering work.
Emotional Burdens
Last but not the least, managing people is an emotional burden. Decisions are no longer making impacts only to the servers, but also human beings. People’s reactions are part of the feedback. Feeling a sense of responsibility for the team's successes and failures became a part of the job.
For example, as part of the responsibilities, Engineering Managers need to make tough decisions, whether it’s saying no to a prominent candidate due to resourcing issues, or stopping someone from being promoted for a political reason. When making a tough decision or delivering bad news, it’s not only a burden for those who receive the news. It is hard for Engineering Managers as well as we see their reactions and emotions.
The Joy that Keeps Me Going
“Why do you want to be a manager?”
One of the most common interview questions for aspiring engineering managers is, "Why do you want to be a manager?" The industry-standard answer and the most important one is a genuine love of helping people and the organization succeed. Our passion for this aspect of the role will keep us going, no matter how senior we become in management.
It's easy to get caught up in the day-to-day challenges of management – those long feedback cycles, tricky interpersonal issues, and moments of ambiguity. Passion is what fuels us during these inevitable hurdles. When we deeply care about the success of our team and the broader organization, we'll find the extra push we need. Let's consider a few situations:
Delayed Feedback: Waiting for the results of a strategic decision can be nerve-wracking, causing self-doubt. It is our passion for the company's mission and our belief in the potential of our team members that helps us stay the course and see the plan through, even if results don't immediately appear.
Conflicts: Navigating conflicts within a team can be stressful. But a genuine desire to see team members understand each other's perspectives and function collaboratively gives us the determination to approach challenging conversations. We are driven by the goal of a harmonious, productive work environment.
Ambiguity: As a manager, we will inevitably face decisions without textbook answers. It's our passion for finding the best solutions, guided by the company's values and the team's best interests, that will cut through the fog and keep us moving forward.
Passion isn't just an abstract concept. It translates into perseverance, a willingness to take calculated risks, and an unwavering commitment to seeing our team and the organization thrive – qualities that are indispensable for overcoming any obstacle in our management journey.
Finding The Joy
Stepping into management has been a rewarding experience for me. The satisfaction of seeing a team overcome obstacles, achieve common goals, and watching individuals grow brings a different kind of fulfillment than technical problem-solving alone. Even though those tasks initially can be stressful, when we witness the positive impact, they usually bring a great sense of accomplishment 😁.
On the other hand, if we don't genuinely enjoy the process of working with people, it's going to be more challenging to stay on this path. While engineering managers have a wide range of responsibilities, the core of the role revolves around managing people and the organization. Our job as a software engineer will lessen over time, and our ability to delegate tasks will become crucial.
Conclusion
If you're a software engineer considering your next career step, take some time to honestly ask yourself: does the technical work excite you better, or does the idea of leading and developing a team resonate with you more? Understanding your own passions and preferences is crucial to making the right career choice.
However, if you're not sure about the career decision, it's also ok to give it a try first and then go back to the software engineer path. I've seen many cases like this and it actually helps engineers having a different perspective when they view their work.
Let me know if you have any questions in the comments! Or, if you are wondering about your software engineering career, feel free to book a consulting session with me 😄