I’ve always held a strong belief that managers in software engineering sharpen their skills over time, and my early career is a perfect example, as I was tossed right into the thick of it.

Right from the get-go, I was tasked with the most difficult of engineering manager duties — I had to hire the right engineering candidates, manage engineers, oversee development projects, offer technical expertise, and make pivotal decisions that significantly influenced team dynamics and project outcomes, all while making decisions that sculpted my leadership style and strategic approach. An effective engineering manager needs a combination of engineering and leadership skills, including technical competence, effective communication, and the ability to positively influence decisions.

Over time, as I kept learning, I developed a profound understanding of what we were building and how we were building it. But I realized that I was most effective at my job when I showed my dev team that I trusted them by leveraging their knowledge to make informed decisions. Working cooperatively, rather than like previous managers who worked authoritatively, made me a leader that everybody wanted to work with. Acting as primus inter pares, I was able to be a good people manager who was as process-oriented as people-oriented. Here are some crucial lessons I learned along the way.

Looking to become a great engineering manager?
Learn more

What Are the Responsibilities and Duties of a Software Engineering Manager?

Teamwork & Leadership - the Foundations of Engineering Management

Research and development teams, project managers, and product managers - EMs need to be able to work with them and all other managers. Engineering managers also need to inspire and guide developers within their team of engineers.

During one of our quarterly review sessions, I encouraged one of my developers to outline their individual visions. By establishing clear goals, it became simpler to align personal aspirations with project objectives.

Project Management for Engineering Managers

Project management is one of those things that require constant attention and adaptability. Engineering expertise is crucial in managing projects, including planning, designing, and overseeing projects. While overseeing a major rollout for a product we’ve been recently building, we used an agile approach – like many in the industry. Agile allows you to adapt swiftly to unforeseen challenges, ensuring that you meet your deliverables on schedule without compromising on innovation or quality.

In order for smooth completion of a project, an engineering manager needs to oversee the team’s inputs and outputs rather than contributing directly to the work. Their focus should also be on eliminating obstacles, streamlining processes, and ensuring that team members can work efficiently and remain in a state of flow without unnecessary interruptions.

Technical Guidance and Expertise - Getting the Most Out of Your Engineering Team

Technical guidance often involves filling gaps, such as re-architecting systems, managing technical debt, and overseeing the implementation of new features. Here’s where engineering managers step in, to support other engineers in these efforts, ensuring the technical integrity of the project.

A typical day in the life of an engineering manager’s job also involves administrative responsibilities such as reading and writing emails, scheduling time with team members, and keeping distractions away from the engineering team. Additionally, sharing tech know-how during every phase of development is crucial. When I became a senior engineer manager back in the day, a developer approached me with a perplexing challenge. Together, we explored the issue, resulting in not only a solution but also a richer understanding of a subtle algorithmic concept. Such moments underscore the importance of being technically available for your team.

  • Offer technical expertise and guidance to team members.
  • Encourage teammates to ask the right questions.
  • Assist in solving complex technical challenges.
  • Keep up with industry trends and best practices.

A Good Engineering Manager Shares Knowledge

During one of our Friday Tech Talks, one of our engineers shared some insights on Blockchain and privacy. This facilitated a culture of shared wisdom, creating a repository of insights and best practices, constantly refined and enriched.

  • Facilitate knowledge-sharing sessions or workshops with engineering teams.
  • Promote a culture of learning and knowledge exchange.
  • Share your own experiences and insights to help team members learn and grow.
  • Mentor and help engineers in their career progression.

Recruitment and Hiring - Getting the Right People On Board

A few years ago we shifted – or better to say we began considering on a deeper level – the hiring of developers who had as much cultural synergy as technical acumen, often prioritizing candidates with a master’s degree in computer science. Recognizing potential, aligning it with our ethos, and ensuring technical prowess was a matrix that we religiously followed. A master's degree not only highlights a candidate's academic qualifications but also their ability to transition from a technical role to a management position.

Looking to become a great engineering manager?
Learn more

Onboarding

An engineering manager must follow the current recruitment trends in software. During the recruitment phase of one of my hires, my goal was to ensure the developer's proper integration into the team. For example, we have a buddy system, where we pair new developers with seasoned team members, ensuring an effortless assimilation into our culture and workflow.

  • Play a role in the onboarding process for new team members, helping them acclimate to the team and company culture.
  • Pair newly hired developers with a buddy during the onboarding phase.

Performance Management

An incident comes to mind when one of our rockstar developers hit a sudden slump. Utilizing a blend of performance metrics, organizational skills, and candid dialogue, we jointly unearthed personal challenges that were affecting his work and focus, and the other engineering teams. It wasn’t about reprimand but simply understanding and supporting. The said developer rebounded with renewed enthusiasm, reminding me that performance management is as much about empathy as it is about evaluation.

  • Conduct performance evaluations and provide feedback.
  • Hold regular check-ins or one on ones.
  • Address performance issues among development team members.
  • Have candid conversations about performance.

Mentorship and Career Development

On a personal note, mentoring has been a huge focus at our company, especially within the engineering manager role. I recall a junior software engineer joining our team a few years back. With regular coffee chats, shared coding sessions, and goal-setting exercises, he managed to turn himself into one of our most innovative thinkers. A management position wasn't too far off into the future. This transformation underscored the importance of nurturing talent, offering guidance, and investing time in developers’ professional trajectories.

  • Act as a mentor, offering technical expertise, guidance, career advice, and other forms of support.
  • Help team members set and achieve their professional development goals.
  • Provide opportunities for skill enhancement and learning.
  • Encourage continuous learning and growth within the team.

Communication

Acting as a conduit between the development brigade and higher echelons meant candidly sharing challenges and triumphs. Engineering managers lead teams by supervising and guiding multiple engineering teams, identifying training opportunities, and supporting individual team members. One particularly turbulent project required transparent communication about potential setbacks, fortifying trust amongst stakeholders.

Exceptional managers also dedicate a lot of their time to understanding the team's needs and securing the necessary support from the company. They ensure the team is comfortable with their workload and has access to essential resources. This could only be achieved when there is trust and open communication.

Resource Allocation

Engineering managers serve as liaisons, translating company demands into actionable tasks for the team. When demands turn into change allocation of resources, it's the engineering managers job to coordinate the various components involved, ensuring resource use is carried out within the given timeframe and corresponding workloads are assigned to the right team members in a collaborative manner.

I remember once a challenging project requiring a swift reshuffling of resources within the engineering team. The key was to understand the team’s dynamic needs, ensuring optimal utilization without overstretching.

Budget Management

During a particularly resource-intensive quarter, I had to dive deep into strategic budgeting, ensuring financial efficiency without compromising innovation.

Process Improvement

We once revamped our deployment process after feedback during a quarterly retrospective. As an SEM, it's pivotal to identify bottlenecks, adapt, and refine workflows to ensure the team works efficiently and happily.

Quality Assurance

During my early days as a developer, a missed bug cost us weeks in rectifications. That incident instilled in me the importance of robust QA processes. An SEM must prioritize thorough testing, ensuring the delivery of defect-free software, and fostering a culture where quality is everyone's responsibility.

  • Ensure software quality by implementing testing and quality assurance processes.
  • Address and rectify any quality issues that arise during development.

Risk Management

I recall a project where unforeseen challenges nearly derailed us. As an SEM, it's crucial to anticipate potential pitfalls, have contingency plans in place, and foster a proactive mindset in the team to navigate risks and keep the project on track.

Conflict Resolution

I still remember an incident when two engineers started butting heads on an approach to code testing. As an SEM, it's my role to mediate such disputes, ensure all voices are heard, and guide the team towards a constructive resolution that aligns with the project's objectives. In the end, we considered the new approach only after a solid few rounds of testing - we stuck with the standard approach for the duration of the project.

Documentation

We once faced a crisis due to a missing piece of documentation. This experience underlined the fact that thorough documentation isn't just a formality—it's the backbone of sustainable software development. It's the SEM's responsibility to ensure that documentation is comprehensive, current, and clear, enabling smoother transitions and setting the foundation for future projects.

  • Ensure documentation is up-to-date, including technical specifications and project documentation.

Collaboration

Once, two teams had different visions during a critical project at our company. A coffee chat turned that potential setback into our most innovative feature. As an SEM, promoting a culture where ideas freely intersect and teams collaborate is essential. It's not just about getting along—it's about leveraging diverse perspectives to achieve excellence.

Security

During a client project, I learned that even the slightest vulnerability can have massive repercussions. As SEMs, our role isn't just to build, but to build securely. This means staying updated with the latest security protocols and ensuring that the team considers security as a fundamental aspect of every project.

Customer Focus

An engineering manager is someone who focuses on delivering superior customer value and satisfaction. For example, to improve our product, we constantly look for feedback from our customers. In some cases, they have the power to change our product roadmap for the better. Being customer-centric means constantly realigning with their needs. As an SEM, instilling this customer-first mindset in the dev team is paramount. After all, we're not just coding; we're solving real-world problems.

Continuous Learning

Working in tech taught me that the tech world is constantly evolving. What's relevant today might be obsolete tomorrow. That's why, as an SEM, I always emphasized the importance of continuous learning. I often encourage my developers to attend workshops, webinars, or even informal tech meetups as a way to ensure that we're always at the forefront of innovation.

Productivity Metrics

Metrics were always more than just numbers – they're about people too because they tell a story of progress, setbacks, and potential. An engineering manager is responsible for monitoring key productivity metrics. But beyond that, engineering managers also have to interpret them correctly within the project context to guide the dev team toward optimal performance.

Strategic Planning

I remember a project that initially seemed straightforward. However, with some strategic foresight, we transformed it into a game-changer for our Android team. Strategic planning as an SEM goes beyond immediate tasks—it's about envisioning the long-term impact and directing the team towards that larger vision.

What Is the Salary of an Engineering Manager?

The salary of an engineering manager can vary significantly based on factors such as location, industry, company size, and the individual's level of experience. On average, an engineering manager in the United States can expect to earn between $120,000 to $160,000 annually, with the potential for higher earnings in top tech hubs like Silicon Valley, where salaries can exceed $200,000. Additional compensation may include bonuses, stock options, and other benefits.

What Degree Do You Need to Become a Software Engineering Manager?

To become a software engineering manager, a bachelor's degree in computer science, software engineering, or a related field is typically required. Many successful engineering managers also hold a master's degree in business administration (MBA) or a related field, which can provide valuable skills in leadership and management. Additionally, practical experience in software development and prior leadership roles are crucial for advancing to this position.

Conclusion

While the job description for a Software Engineering Manager can vary significantly, there's no denying their pivotal role in ensuring the successful delivery of projects by leading and supporting their engineering teams. However, the journey to becoming an engineering manager or director of engineering isn't for everyone. The key is to understand its job duties, and if management and leadership don't fit in with your career path, get off it right away.

Looking to become a great engineering manager?
Learn more