Transitioning from Software Engineer to Engineering Manager

As a Software Engineer, you're likely well-versed in at least a programming language or two.  You know about engineering best practices, you're solid at technical design and architecture, you know enough to be dangerous with source control.  More importantly, your teammates respect you and you're likely to be an informal leader on the team.

Why become a manager?

Depending on what your career goals are, maybe you don't want to.  But if your aspirations include becoming a CTO or making more money.  Maybe you're becoming more interested in helping Software Engineers navigate their careers or determining business strategy.  Maybe you are more excited about seeing teams of engineers succeed than about your own successes.  For these kinds of things, you should consider moving into people management.

An Engineering Manager is responsible for the success of a whole team.  Are your customers having a good day?  Is your team on track to deliver on their roadmap?  Are each of the Software Engineers on the team developing themselves?  Are your team's processes serving your team and your customers well?  Why or why not?  What are you doing to solve each of these things?

The move to Engineering Manager is a leap of faith.  A Lead or Senior Software Engineer's job is quite different from that of an Engineering Manager.  Depending on your company, you might be writing a little code or participating in code reviews, but more often than not, your activities revolve around three main things:

  1. Setting team goals
  2. Coaching your engineers
  3. Ensuring operational excellence

Skills required

It typically takes around four to six years to become a Software Engineering Manager.  However, the exact amount of time will vary depending on your individual skills and experience.  The skills that are required of an Engineering Manager are a super set of those required of a Software Engineer.

Education

Education beyond what's necessary of a Software Engineer is not necessarily required, though it can be a competitive differentiator in some industries or companies.  A Bachelor's degree is often helpful, even if it is not in Computer Science or a related discipline.  A Master's or a Doctorate degree is also beneficial but usually not a requirement.  That is, unless you're targeting one of the big tech companies that are super competitive.

More important than any degree is self-learning.  Just as you have learned as a Software Engineer, there is a very real need for a commitment to learning and growing your skills and knowledge.  Reading about leadership, career development, and operational excellence is absolutely essential to a successful career as a people leader.

Solid technical background with a track record of delivering

Depending on company culture, you may not be the one making the technical or architectural decisions, but you need to be well-versed in tech and architecture.

Like it or not, it's critical to ship quality software on a regular basis. You will not be taken seriously by other leaders in the organization if you are not delivering consistently.

Communication

You need to be able to communicate effectively with both technical and non-technical audiences.  Clear and concise messaging of complex topics, tailored to the audience is absolutely critical.

You need to be able to listen to and deeply understand your direct reports and team members.  Learn about them as people and seek to understand what their motivations are.  Figure out how to best communicate with them so they're understanding you.

Leadership

Leadership includes learning how to motivate and inspire others, how to delegate tasks effectively, and how to resolve conflicts.  You can develop your leadership skills by taking on leadership roles in your current job, such as mentoring junior engineers or leading development efforts on large features or feature sets.  You can set developmental goals for yourself that may include things such as leadership development courses or workshops.

Relationship Building

You need to be able to build strong relationships with your team members, your manager, and other stakeholders.  As much as possible, get to know them as people, learn about their career history, and ask them about what they're working on.

If you are working in-person, be sure to grab coffee or lunch with your co-workers.  Seek to learn and understand what they're working on, how they are going about the work, what's going well and what's not.  If you are able, offer help.

Networking

Get to know other Software Engineering Managers, both inside and outside of your organization.  Be sure to ask many questions and learn from their experiences.  Attend industry meetups and other events, join online forums, and connect with people on LinkedIn.

Ask for advice or introductions - but be sure to offer what you can in return.

Additional considerations

Time commitment

Much is expected of Engineering Managers and delivering on those expectations often take time and urgency.  The time requirements of managers are usually more intense than that of the Software Engineers they are managing.

Learn as much as you can about the company culture to get a feel for the level of commitment before making the move.  If you are not willing to put in the time, you may not be successful as an Engineering Manager.

Salary and benefits

Engineering Managers earn good salaries and have access to good benefits packages.

Have questions?  Reach out and ask me!