As a software engineer, your tasks are typically straightforward: you’re given assignments and expected to complete them efficiently and on time. However, as an engineering manager, the path is less defined. Management isn’t about right or wrong answers; success hinges on your ability to lead your team, manage your product, and oversee your technologies.
Prioritizing Your People
Your team becomes your top priority as an engineering manager. But how do you cultivate an exceptional team?
Building a Team and Fostering Trust
It starts with recruiting the right individuals, especially if you’re building a team from scratch. A poor hire not only wastes their time but also impacts the entire team’s productivity and morale. A technically skilled person might still be a bad fit if they clash with the team’s dynamics.
Go beyond technical inquiries during interviews. Ask open-ended questions about teamwork and leadership. For instance, ask candidates to:
- Detail a recent problem they solved
- Explain their solution implementation
- Discuss alternative approaches they considered
- Describe a critical production issue they faced, their response, and preventive measures taken
Once you have a team, prioritize earning their respect and building trust. Effective leadership relies on healthy relationships. Understand their career aspirations and what matters to them.
One-on-one meetings are vital for connecting with and understanding your team members. The ideal frequency will depend on the specific needs of your team members, but aim for at least twice a month.
However, if you work very closely with your team or have a large team, once a month might suffice.
Empowering and Elevating Your Team
A significant part of your role involves recognizing individual strengths and weaknesses. Help them address weaknesses through pairings with senior engineers and regular code reviews, while also capitalizing on their strengths. After all, our strengths are our driving force and shape what we enjoy.
Delegate tasks based on individual skills and traits to optimize output and build a strong team. Automation can be beneficial here. Implement continuous integration to detect flawed or inefficient code and identify frequent offenders.
Your team members will constantly seek growth and improvement. Roles suitable last year might not be ideal this year. To maintain their engagement and progress:
- Prioritize their personal growth, invest in their development, and support their ambitions.
- Hold individual meetings to create personal development plans and empower them to chart their career paths.
- Allocate time for self-improvement, encourage role rotations, and organize internal workshops or training.
Beyond professional growth, you must protect your team. Encourage decision-making without fear of failure. If things go wrong, take responsibility and extract lessons.
This cultivates a culture of courage and a growth mindset within your team. However, mistakes shouldn’t recur if you’ve provided constructive feedback and steered them correctly.
Bridging the Gap Between Product and Engineering
Another crucial aspect is the product. A close relationship with the product manager is vital for aligning expectations and leveraging your team’s skills and technology to deliver an outstanding product.
Here are six key responsibilities for engineering managers:
Ensuring Project Prioritization
What are your team’s goals for the next six to twelve months? Who’s your target audience? What are the customer expectations? Your team likely knows their short-term tasks, but understanding the bigger picture of the product’s direction is crucial.
Active Involvement in Product Development Decisions
As an engineering manager, you’ll collaborate with various teams and be more involved in product strategy and updates than before. You don’t have to agree with every product decision, but believing in the product and striving for its improvement is essential. Challenge the product manager if needed, but remember they have the final say. Respect their decisions and offer your support.
Defining and Leading the Technical Strategy and Development Methodology
While the product manager defines product strategy, your role is to define the architectural vision and technical design. You also establish the development methodology and ensure its team-wide adoption. Remember: the product manager owns the product, but your team owns its implementation.
Sometimes, valuable features can be implemented with minimal engineering effort. For example, could upgrading the product’s framework to a newer version facilitate faster or more efficient feature implementation? A comprehensive product overview helps you and your team identify and suggest such opportunities to the product manager.
Balancing New Features with Technical Debt
When building your MVP (minimum viable product), speed to market takes precedence, potentially leading to technical debt. As the product matures, the focus shifts to new features and improvements while managing this debt. Ignoring initial compromises makes adding new features time-consuming and costly. Understand and track these compromises, finding a balance between addressing technical debt and implementing new features.
Leveraging Technology and Automation to Manage Technical Debt
Utilize static code analysis tools to pinpoint code with high maintainability indexes and prioritize refactoring. This simplifies new feature development and enhances product performance.
Ensuring On-Track Product Execution
Stay informed about your team’s progress. If they’re falling behind, identify and remove roadblocks. For instance, if technical issues are frequent, implement pair-programming sessions to boost knowledge sharing. If deployment is time-consuming, automate the process to save time and reduce errors. Minimize interruptions and establish clear workflows for handling new work and bug reports.
Technology and Delegation
While still an engineer, your primary focus shifts from individual software development. You have senior engineers for that. Generals don’t fight on the frontlines; managers shouldn’t micromanage every line of code.
However, utilize your expertise to ensure senior engineers’ decisions align with the product’s technical roadmap. Delegate technical decisions but ask probing questions to guarantee scalability, security, and reliability.
For instance, challenge their choices with “What if we had 20 times more users? Would that be sustainable?” or “Will this technology still be supported in two or three years?”
Offer alternative solutions and frameworks based on your knowledge, but avoid imposing your preferences. Besides technology, offer recommendations on development processes and methodologies.
Monitor crucial product metrics, both business and technical. Collaborate with DevOps to set up system monitoring alarms and keep your team informed about operational issues. Establish a methodology for addressing and preventing incident recurrence.
Lastly, stay current with technological advancements and trends. A wider knowledge base equips you with more solutions and frameworks. Dedicate time to reading articles, conducting code reviews, and engaging in technical discussions with your team.
Your technical proficiency earns your team’s respect. Staying updated on new technologies—and encouraging your team to do the same—fosters curiosity and encourages innovative problem-solving approaches.