I’m a developer. Is software engineering management right for me?
Tags: career, management, prep
Published: 2022-04-27 23:13:41

Management is a common career transition for developers. It’s a rewarding career that allows you to combine your technical skills with your project management skills and people skills to lead and support a team, drive initiatives, and deliver results. While management is a popular career track, it isn’t for everyone. Some devs may prefer to remain as individual contributors and progress through their careers that way. In this article, we dive deeper into software engineering management to help you determine whether this career path may be right for you.

Let’s get started!


**We’ll cover**:
* What is a software engineering manager?
* Manager vs. individual contributor
* Qualities of a good software engineering manager
* Management hurdles
* How to become a software engineering manager
* Wrapping up and next steps
<br>

<a name="softwareengineeringmanager"></a>

## What is a software engineering manager?

A software engineering manager is **an experienced developer who manages the development and design of software projects**. This usually involves leading a team of developers and helping them with their day-to-day tasks and projects. This role requires you to understand the complex technical elements of the projects your team works on and to effectively lead a team and appropriately delegate tasks and responsibilities to your team members. You’ll also be responsible for **inspiring your team members and for creating and maintaining a positive team and work culture**. As a manager, you’re also responsible for communicating updates on projects and assignments to your leaders and other stakeholders in the company.

To help paint a better picture of what companies look for in an engineering manager, here are some of the qualifications listed for a [Senior Software Engineer Manager with Microsoft](https://careers.microsoft.com/us/en/job/1020076/Senior-Software-Engineer-Manager?jobsource=linkedin&utm_source=linkedin&utm_medium=linkedin&utm_campaign=linkedin-feed?eid=5082902844932096):

* 5+ years of experience with Java/C#/C/C++
* Demonstrated ability and passion for designing and building highly available distributed systems at scale
* Demonstrated problem solving and debugging skills
* Demonstrated ability to exercise sound judgment in ambiguous situations
* Bachelor’s degree in computer science or equivalent is required
Some of the job responsibilities include:
* Driving features for projects
* Working across group boundaries to build strong relationships with partners and drive multiple teams to deliver on scenarios
* Producing highly available systems at scale
* Driving improvements regardless of ownership, identifying bottlenecks in processes and coming up with ways to improve efficiency

When transitioning into software engineering management, it’s important to realize that you’re really **switching career tracks** (and that’s okay!). While there’s no “one size fits all” career path for a developer, progression within the developer career track involves moving from a junior engineer, to a senior engineer, to a staff engineer, to a principal engineer, etc. While some devs view management as the inherent next step to success in their career, being a manager doesn’t necessarily mean you’re more successful in your career. That career move is more of a reflection of what you want out of your career and what skills you want to use in your career. 

Some devs prefer the individual contributor route, while others want to lead and manage a team. Remember that **everyone is unique and everyone’s path is different**. Your journey within software development doesn’t need to look like anyone else’s. It’s important to stick with what you’re interested in and make the steps necessary to reach your own goals, not someone else’s goals!

> As you progress through your career as a developer, you’ll be increasingly **expected to understand system design** concepts and how to apply them. Notice how the job posting for Microsoft is looking for someone with experience “designing and building highly available distributed systems at scale.” When you begin to interview for higher-level positions within software development (in management or not), system design becomes a larger part of your interview process.
>
> Learn more about system design and the system design interview in 2022 on Educative.

<a name="managervsic"></a>

## Manager vs. individual contributor

Each role has its pros and cons. I want to start off by explaining that both career paths are lucrative. It’s a misconception that you have to get into management to make more money. Being a high-performing *engineer* and being a high-performing *manager* require different things from you. Some devs are happy remaining as individual contributors and progressing in their careers that way rather than transitioning into a management role. When you become a manager, it means that you’re no longer an individual contributor. As a manager, your decisions and work revolve around the best interests of your team and organization, not just your individual work. 

Here are some questions to ask yourself when contemplating this career switch:

***Do I like working independently or helping others solve problems?***

Managers spend a lot of their time helping their teams solve problems. As a manager, you must get to know your team well enough to understand their strengths and weaknesses so you can effectively delegate tasks and assign responsibilities. Your team may come to you looking for guidance or advice, and you must be prepared to help them navigate through any problems they face. On the other hand, individual contributors may collaborate with their team or other teams, but they spend a lot of time troubleshooting and problem-solving complex technical problems independently.

***Am I able to switch between various tasks easily and productively?***

As a manager, you’ll have to context-switch constantly. Not only do you have to effectively manage a team, but you also have to effectively manage competing responsibilities, priorities, and deadlines, and figure out how to proceed. As an individual contributor, typically you’ll get to focus on getting your priorities done in order (unless your manager says otherwise). In general, there seems to be less context switching in an individual contributor role than a management role, but it really depends on your company, org, team, etc.

***Can I be tough AND empathetic?***

This is something that is really important within both roles but becomes a bit more prevalent as a manager. In management, you must know when to be a little tougher when various situations arise. It’s important to be able to read situations effectively and proceed appropriately. There may be times when you need to have tough conversations with your team, and you must be able to advocate for yourself *and* for your team, while also showing empathy for others.

***Do I want to lead?***

While there are opportunities to lead in both positions, managers take leadership, ownership, and responsibility of an entire team. An individual contributor will typically take responsibility for solutions and designs. Beyond this, in a management role, you must feel comfortable acting as a leader, mentor, guide, and teacher to a group of people. You must be able to connect with each member of your team to determine their strengths, find their potential, and also find appropriate ways to challenge them and push them to succeed. You must be level-headed and patient when leading a group of people, and you must be comfortable giving constant feedback and advice to others.
<br>

<a name="goodmanagerqualities"></a>

## Qualities of a good software engineering manager

There are **certain qualities that play a key role in managerial success**. It’s important to realize that these qualities can be developed. If you’re interested in management but lack some of these qualities, take the time to develop them in your current role! Some of these qualities overlap with qualities of a good software engineer, while some are more important in a management role or take on a slightly different meaning when you transition into management.

Let’s take a look at some of the qualities of a good software engineering manager:

* **Trusting**: Trusting yourself and trusting your team is an important component of relationships and teamwork. If there’s a lack of trust across the team, that can threaten productivity, create a toxic culture, demotivate your team, and shut down communication. Putting your trust in others can be challenging, but it’s a key to harmony within the team.
* **Empathetic**: It’s important to have empathy as a manager, that way you can understand how your team is feeling and respond appropriately to various situations. Empathetic management improves interactions, communication, and culture. You can practice empathy by watching for signs of overload or burnout in your team, showing interest in their personal needs and wishes, helping them when needed, and showing kindness when a team member discloses a personal or professional struggle.
* **Supportive**: It’s important to show up for your team as a guide, coach, mentor, and educator to help lead them through their work. A good manager will be there for their team and help them with barriers and roadblocks that interfere with productivity and professional development.
* **Motivating**: A good manager seeks to motivate their team, unlock hidden talents or potential, and lift the team up to improve morale and productivity.
* **Collaborative**: If you become a manager, the days of individual contributions are gone. It’s now critical to be an active leader that consistently and effectively collaborates with your team and other leaders and stakeholders.
* **Clear communication**: Part of being a good manager involves knowing how to convey what’s needed to others and how to propose straightforward solutions to orient your team. Good managers can develop a clear vision and communicate it effectively and inspiringly to their team. 
* **Autonomous and responsible**: A good manager can tackle tough choices with their team without external influence. More importantly, a good manager must be capable of bearing the responsibility for those choices, regardless of whether they bring good or bad results. An autonomous manager is unafraid of responsibility and takes accountability for their actions. A responsible manager shows up for their team.
* **Fostering a safe culture**: Good managers foster inclusive, safe, empathetic, and supportive cultures within their teams to ensure that there are diverse perspectives to build products for a diverse audience. Every voice matters on a team. A team with strong diversity and inclusion is a team that thrives.
<br>

<a name="managementhurdles"></a>

## Management hurdles

There are many great aspects of becoming a software engineering manager. There are also a lot of hurdles. Yes, **you may experience similar challenges as a manager that you do as an individual contributor**. But the overall job description is different. As a manager, you’re now a mentor and leader to a team. You must communicate more frequently with stakeholders and executives. You must take responsibility for decisions you made with your team.
You’ll need to meet deadlines, promote teamwork, facilitate customer service, and achieve your org’s goals. There can be a lot of pressure to execute everything perfectly and always perform well. It can be tough to always communicate effectively, balance your work with your personal life, manage a team remotely, and so on. 

As a manager *and* as an individual contributor, it’s important for you to **see hurdles not as failures, but as stepping stones to becoming a more improved version of yourself**. Every person, no matter who they are, is bound to face various challenges at different points in their lives. When we experience a hurdle, the most important thing is to be resilient and learn from those situations. You should always aim to keep moving forward and to be a problem solver.
<br>

<a name="howtobecome"></a>
## How to become a software engineering manager

For starters, you need software engineering experience to become a software engineering manager. Most software engineering managers have **at least five years of experience working as a developer** (and throughout that time, they’ve moved up levels). As you work as a developer, seek out opportunities that will allow you to build and foster management skills to help prepare you for a management role in the future. Try to build your project management skills and soft skills as well, because they are very important in a managerial role. 

As you progress through your developer career, talk with your own manager about your aspirations so that your manager can help set you up for success and help you find opportunities to mentor and lead. It also helps to browse job descriptions to understand exactly what companies are looking for in their managers.
<br>

<a name="nextsteps"></a>

## Wrapping up and next steps

Many devs get into management, but the career switch isn’t for everyone. You can be just as successful in your software engineering career as an individual contributor if that appeals to you more. It’s important to take the time to determine whether which career path makes sense for you and what aligns most closely with your personal and professional goals. If management *is* something that you want to pursue, it’s important to be a manager that can inspire your team and bring out the best in them. 

To get started learning how to be a software engineering manager, check out Educative’s course [**Become an Inspirational Manager: Bring Out the Best In Others**](https://www.educative.io/courses/become-great-engineering-manger-bring-out-best-others?eid=5082902844932096). Written by an experienced, strategic engineering leader with experience leading teams at Microsoft and Amazon, this hands-on course helps managers at all levels remain as integral and inspirational as ever.

*Happy learning!*
<br>

### Continue learning about software engineering management on Educative

* [Become an effective software engineering manager](https://www.educative.io/blog/effective-software-engineering-manager?eid=5082902844932096)
* [Managing software developers: Challenges of a distributed team](https://www.educative.io/blog/distributed-software-developers?eid=5082902844932096)
* [Health & wellness: Improve the efficiency of your team](https://www.educative.io/blog/health-and-wellness?eid=5082902844932096)

### Start a discussion 
Is software engineering management a career that interests you? Was this article helpful? Let us know in the comments below!