I've always held a strong belief that managers in software engineering sharpen their skills over time, and my early career certainly tossed me into the thick of it. Right from the get-go, I was tasked with hiring the right engineering candidates, managing engineers, overseeing projects, and making pivotal decisions that significantly swayed team dynamics and project outcomes, all while making decisions that sculpted my leadership style and strategic approach.

After all these years, I now fully understand what it means to be a good engineering manager. It's more than just people management or engineering expertise. Here’s how I deconstructed this indispensable role in the software development process.

Read more: Mastering the Engineering Management Interview

What is a Software Engineering Manager (SEM)?

So, what makes a good engineering manager? Is it being able to combine the nuances of tech acumen with the finesse of leadership? In my opinion, mastering an engineering manager's responsibilities must be cultivated not only through acquiring a master's degree in engineering but also through hands-on experiences managing engineering teams. This blend of skills, occasionally in varying proportions, may necessitate additional refinement to handle the duties of an engineering manager.

What Are the Responsibilities of a Software Engineering Manager?

Teamwork & Leadership

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.

  • Provide leadership and direction to the software development team.
  • Set clear goals, expectations, and priorities for team members.
Transform Team Engagement with One Click

Project Management

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.

Technical Guidance

It's more than just answering technical questions - a typical day in the life of an engineering manager involves sharing tech know-how during every phase of development. When I became a senior engineer manager back in the day, a developer approached me with a perplexing challenge. Together, we dived deep, 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 them to ask the right questions.
  • Assist in solving complex technical challenges.
  • Keep up with industry trends and best practices.

Knowledge Sharing

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 within the team.
  • Promote a culture of learning and knowledge exchange.
  • Share your own experiences and insights to help team members learn and grow.

Recruitment and Hiring

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. Recognizing potential, aligning it with our ethos, and ensuring technical prowess was a matrix that we religiously followed.

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 and candid dialogue, we jointly unearthed personal challenges that were affecting his work and focus. 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 1:1 meetings.
  • Address performance issues as needed.
  • Have candid conversations about performance.

Mentorship and Career Development

On a personal note, mentoring has been a huge focus at our company. I recall a junior developer 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. This transformation underscored the importance of nurturing talent, offering guidance, and investing time in developers’ professional trajectories.

  • Act as a mentor, offering guidance, career advice, and 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. One particularly turbulent project required transparent communication about potential setbacks, fortifying trust amongst stakeholders.

Resource Allocation

One of the most challenging projects required a swift reshuffling of resources. 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.

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? Check out our Effective Engineering Manager Training Course here.

Transform Team Engagement with One Click