As a software engineer, your responsibilities are usually defined very clearly: Tasks are assigned to you, and your job is to implement them on time and effectively.
In the engineering manager role, however, responsibilities are often not defined as clearly . Management isn’t binary; there are no straightforward answers to certain questions and problems. How successful you are as a manager will depend on how well you are able to lead your people, manage your product, and administer your technologies.
People Are Your Priority
In the engineering manager role, your new priority is your team. So how do you ensure that you have a great team?
Building a Team and Establishing Trust
The first step is to ensure that you hire the right people for your team if you don’t already have a team in place.
A bad hire will not only waste their time but also waste the time of your other team members, who will need to pick up the slack. This will demoralize the rest of your team. Even if a person is a brilliant programmer, they can still be a bad hire if they aren’t a good fit with the team’s culture.
Make sure that you ask not only technical questions but also open-ended questions about working in a team or taking a leadership role. For example, ask a candidate:
- To describe a recent problem they had to solve
- How they implemented the solution
- Which alternative approaches they considered
- To talk about a time when they had a critical issue in production, how they responded to it, and what they did to prevent the same type of problem in the future
Once you have a team, dedicate time to earn your team’s respect and establish trust. To lead a team effectively, you need to develop a healthy relationship with your team members. Take time to understand their career goals and what is important to them.
The one-to-one meeting is an essential tool for forming a bond with each of your team members and getting to know them better. What is the ideal one-to-one meeting frequency? That will depend on the specific needs of your team members, but it’s a good idea to meet with them at least a couple of times every month.
However, if you and your team collaborate closely or you have a large team, you can conduct meetings once a month.
How Engineering Managers Empower and Improve Teams
A big part of your job rests on identifying the strengths and weaknesses of individual members. Help them address their weaknesses by pairing them with a senior engineer and performing frequent code reviews, and focus on their strengths. After all, it’s our strengths that motivate us and shape what we enjoy doing.
Assign tasks based on each engineer’s abilities and traits in order to extract the best out of each person and create a great team. Automation can go a long way in this regard. Set up continuous integration to identify broken or suboptimal code and the person who commits such code frequently.
Your team members will constantly seek to learn, improve, and grow in areas that matter to them or the team. The roles and responsibilities that made sense for each team member last year may no longer be the right fits this year. To ensure that each team member continues to feel challenged and improve:
- Pay close attention to their personal growth, invest in their development, and help them to achieve their ambitions.
- Meet individually with team members to create personal development plans and empower them to map their career strategies.
- Try to allocate extra time for self-development, allow team members to switch roles periodically, and organize internal workshops or training courses.
In addition to ensuring everyone’s professional growth, an engineering manager’s responsibility is to protect their team. You should empower your team to make decisions without being afraid of failure. If things do fail, take responsibility and learn from the mistakes.
This will foster boldness in your team as it tries new approaches and develops a growth mindset. That said, mistakes shouldn’t happen more than once if you have provided proper feedback and taken timely action to steer your team in the right direction.
Product Managers and Engineering Managers
The second important aspect of an engineering manager’s role is the product. You will have to form a close relationship with the product manager to align expectations and leverage technology and your team’s skills to deliver a great product.
Here are six engineering manager responsibilities you should pursue:
Ensure that the project is prioritized well
What is the six to 12 month goal for your team? Who is your audience? What do your customers expect from the product? Your team probably knows what they will be working on for the next few weeks, but it is crucial to understand the full product and where it is headed.
Be involved in product development decisions
As an engineering manager, you will work with different teams and be more engaged in product direction and product updates than you were as an individual contributor. You don’t necessarily have to agree with every decision regarding the product, but you must believe in the product and want to make it better. You can challenge the product manager if you disagree with their decision but keep in mind that the product manager has the final say. Respect them and support their decisions.
Define and drive the technical strategy and development methodology
While the product manager’s job is to define product strategy and concepts, your role is to define the architectural vision and technical design for the product. You are also responsible for defining the development methodology and ensuring its adoption by the team. Remember: The product manager may own the product, but you and your team own the product’s implementation.
In some cases, it may be possible to implement helpful features with a small engineering effort. For example, check if upgrading to the newer version of the framework that the product uses can help you implement some specific feature faster or more efficiently. Having a good overview of the product can help you and your team identify such cases and suggest them to the product manager.
Balance creating and repaying technical debt, and developing new features
When you build your minimum viable product, time to market is the top priority so you may accumulate some technical debt. As the product evolves, the focus shifts to adding new functionality and improving the product while repaying technical debt. Without addressing the tradeoffs you made initially, adding new features will take more time and be more costly. Take time to understand and keep track of the compromises you have made and find a balance between resolving the debt and adding new features.
Use technology and automation to help manage technical debt**
Use source code static analyses to identify the code with the highest number of maintainability indexes and prioritize refactoring the code. This way, it becomes easier to work on new features and the performance of the product will be improved.
Ensure that product execution is on track
You should have an understanding of the current status of your team’s work. If your team is behind schedule, identify the apparent blocks and remove them. For example, if the team gets stuck on technical issues regularly, set up frequent pair-programming sessions to improve team members’ knowledge sharing. If the team spends a lot of time deploying the code to servers, automate the process to save time and make it less error-prone. Minimize interruptions and create clear processes for how to take on new work and address bug reports.
Technology and Delegation
Even though you are still an engineer, as a manager, developing software solutions is no longer your primary function. You have senior engineers on your team, and they are responsible for most technical solutions. Generals don’t fight wars with rifles; managers shouldn’t have to micromanage every line of code.
However, you should use your knowledge and experience to ensure that the decisions made by senior engineers fit the product’s technical roadmap and direction. Delegate technical decisions to your senior engineers but ask the right questions to ensure that the product is scalable, secure, and reliable.
For example, 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?”
You can and should propose alternative solutions and frameworks based on your knowledge and areas of expertise, but do not force or pressure your team to accept them. Apart from technological suggestions, you can also make recommendations related to the development process and methodology.
Also, make sure to monitor the key metrics of the product. Business and technical metrics are equally important. Work with the DevOps team to create alarms for monitoring the system, and keep your team informed about operation issues. Finally, develop a methodology for addressing incidents when they occur to ensure that they do not happen again.
Last but not least, stay up to date with the latest technologies and trends. The more choices you have and the more you know, the more solutions and frameworks you will have at your disposal. Designate some time to read articles, do code reviews, and participate in technical discussions with your team.
The more you know about technical matters, the more your team will respect you. Staying familiar with new and emerging technologies—and encouraging your team to do the same—will help you create an atmosphere of curiosity and challenge your team to seek new and innovative ways of solving complex technical problems.
Understanding the basics
Experience. Most engineering managers are software engineers with extensive experience and a proven track record in relevant fields.
Engineering managers usually don’t write code, though it isn’t unheard of. In some cases, they may choose to contribute. Also, they can play a role in code reviews.
Engineering managers are in charge of the most vital aspects of software development. They choose the people to work on the project and the technologies the team will use. They oversee the project from inception to completion, coordinating their efforts with product managers and other stakeholders.
A good engineering manager has to have an excellent understanding of the technologies used by their team. They also need to know the team inside and out. Additionally, they have to be able to communicate and coordinate with other leads and managers.