The biggest challenges for engineering managers aren’t technical, but personal.
As an individual contributor, your responsibilities are rather clearly defined. You get to work on time, you’re assigned certain tasks, and you’re expected to deliver them efficiently and effectively.
When you become an engineering manager, that’ll change — your responsibilities will no longer be as defined and independent. Your day-to-day life will look different and your responsibilities will increase a whole lot more. With that said, you’ll also get a greater chance to make an impact on your team’s culture and collaborate with other teams to reach important business goals.
Not only will your work responsibilities change, but your entire mindset should change as well. We’ve interviewed a handful of engineering managers from startups like Airbnb, Typeform, InVision, Zapier, and more, with only one goal in mind — to help you become a better engineering manager.
To do that, we will address these common questions in the rest of the post:
Many engineers aspire to become engineering managers. Why? So they don’t have to code anymore? So they can influence people more? Before we dive into how you can be a good engineering manager, let’s take a look at what being an engineering manager actually means.
Engineering Manager can be a confusing and arbitrary title because it means different things to different people in different companies. When engineers are asked why they want to become engineering managers, a common answer is “I want to code less and work with people more.”
Though this is not necessarily a wrong idea, it is not a complete understanding of what engineering management is. Depending on the company you work for, engineering managers may be promoted through the technical track or management track.
If you’re working for a small startup, these “tracks” most likely won’t exist. With that said, there will still be “engineering managers,” whether they actually have that title or not, who can take care of both the technical and the personal side of things.
Here are some of the common things, including both the technical side or people-management side, that engineering managers are expected to do:
If you’re more on the technical side of things, here are some additional responsibilities:
In short, being an engineering manager doesn’t necessarily mean you’ll no longer be coding, and neither does it mean you’ll only be doing people-related work. Depending on your company’s culture, you’ll most likely be doing a bit of both. With that said, your new people-management tasks should be your main focuses.
As an engineering manager, you can make a greater impact on various aspects of your company. Let’s take a look at what kind of effects you can have:
One of the most exciting things about being an engineering manager is the chance to touch the lives of others. As a manager, you’ll have plenty of opportunities to develop, inspire, and mentor your team members. Whether it’s through regular one-on-ones or through your own attitude, communication style, and work ethic, you can encourage engineers to become better professionals and perhaps leaders one day.
Whether it’s influencing their teams to care more about code quality, boosting team productivity, or creating an atmosphere of curiosity, engineering managers can do a lot for the team when they lead by example. Furthermore, engineering managers can improve the overall company culture by building strong cross-team relationships.
As an engineering manager, you’ll get a chance to investigate, propose, and manage new product development efforts or product updates. You will be able to work with different teams (e.g. product, marketing, sales team) to drive product directions design, and development. You may no longer simply be assigned tasks in a certain product, but you will be able to take part in all aspects of a product.
Though being promoted into management often means a bigger pay, a “louder” say, and a wider scope of responsibilities, there are also some potential downsides.
When we asked Thomas, VP of Engineering at Typeform, for one of the main things that deter people away from management, he said
“As a manager, making mistakes are expensive and harder.”
With more freedom to utilize company resources come more responsibilities and possibilities of screwing up. Even if your company is open-minded and does not necessarily penalize you for making mistakes, the prospect of making costly mistakes can be daunting.
Though some engineering managers remain pretty hands-on, many do not continue to code. Even if you continue to code, you’ll most likely be expected to spend a lot more time conducting one-on-ones with your team members, holding meetings with product managers, and interviewing potential engineering candidates. Your responsibilities will diversify and your core responsibilities may no longer be related to coding. Engineers who pride themselves on the depth of their technical expertise may find this especially challenging.
If you get excited from refactoring a particularly difficult piece of code or helping a customer by fixing a bug, this might be the biggest challenge for you. As Jeremy, an engineering manager at InVision, said, “You’re no longer judged on your personal output — you’re judged on your team’s output and what your team can deliver.”
Some engineering managers may have a hard time celebrating the successes of their teams rather than their own personal accomplishments.
Before we talk about how you can be a good manager through effective time management, leadership, and cross-team collaboration, let’s take a look at what make a good engineering manager.
This is one of the hardest questions to answer because engineering managers play different roles to different people. To answer this question more holistically, we interviewed CEOs, engineering managers, and engineers from a handful of startups. Here are some of the common qualities that they highlighted:
Aligned with the company’s overall direction and business goals
Your biggest responsibility as an engineering manager is to drive the company’s business and you’re hired to do that by leading a team of engineers. In the process of doing so, you get to build a unique team, inspire your team members, and work with other teams. With that said, every decision you make should directly align with the company’s business goals.
Long term vision for company’s product
A good engineering manager should be able to make plans based on a product’s long term wellbeing. For instance, he or she must be able to design architectures that are maintainable, instead of making sacrifices for short-term needs.
Delegates based on strategic priorities and engineers’ strengths
Understand the companies’ and products’ priorities, and play the role of a “scrum master” in delegating tasks and designing schedules to help engineers prioritize tasks. Since every engineer will have different strengths, these tasks should be assigned to capitalize on each engineer’s abilities and passions.
Ability to inspire, guide, persuade, but not micromanage
Trying to convince people to listen to you simply because you have the title doesn’t (and shouldn’t) work. Many CEOs, engineering managers, and engineers mentioned that it’s extremely important for engineering managers to have great communication skills. What that means is they must be able to logically persuade, inspire, and guide both their own team members as well as other team members, rather than just issue commands.
Ability to speak two “languages”
Engineering managers are expected to act as liaisons between the engineering team and other teams within the company. This means that they must be able to not only communicate in engineering jargon and non-technical language, but also to translate between the two.
Detailed understanding of engineers’ workload
As previously mentioned, one of your main jobs as a leader is to delegate. Delegation doesn’t mean blindly assigning tasks to your cohort, it means observing each engineer’s strengths and workload, and making necessary adjustments. For instance, if one of his or her team members is suffocating under the workload, an engineering manager should reallocate it so it’s more manageable.
Represents the engineering team well
In order for engineers to trust their manager, they need to feel like their manager represents them well. What that means is that if anyone belittles the engineers or asks them to work on tasks with unreasonable schedules, the manager will stand up for his or her team members. A good engineering manager is one that can manage up as well as manage down — he or she should always have the team’s best interest in mind, without compromising business priorities.
Familiarity with common technologies
Many software developers expressed the importance of having a manager who understands how to code. They don’t necessarily have to code as managers, but they should be familiar with coding enough to have technical discussions and make informed decisions. For instance, the manager should be technical enough to be able to make decisions about what technical stacks the team should use.
Genuine desire to see others succeed
If you’re a people manager, your focus should be on other people’s success. It should never be about how much money, fame, or power you can get, but how much you can help, guide, and inspire someone to become a better engineer or even future engineering manager. This is why leaders like Steve Jobs hire people who are smart — perhaps even smarter than they are.
A good engineering manager is someone who understands the various expectations, from above and below, that he or she must fulfill. In 2002, Google eliminated all managers in order to become a flatter organization. The experiment ended within a few months, when Google realized how important it is to have managers relay information between company leaders and engineers.
The secret to being a good engineering manager is this: the ability to understand the priorities of different parties and communicate effectively between them to help everyone meet their goals.
At the beginning of our interview, Thomas Döhler, VP of Engineering at Typeform, said
“As a manager, you have to become very good at deciding how you spend your time.”
In order to fulfill all your responsibilities in a timely manner, it is important to know when and how things should be done.
Let’s take a look at what engineering managers’ schedules look like on a daily and weekly basis before we get into some time management best practices.
Deepank Gupta, an engineering manager at Airbnb and former employee at LinkedIn and Google, pointed out that there are fundamental differences between an individual contributor’s and engineering manager’s calendar:
Developers usually work best when they’re given 2-3 hours (or even half a day) to code uninterruptedly. As a result, their days tend to be divided up into 2-3 hours blocks. On the contrary, engineering managers usually work in 30-60 minute blocks.
Additionally, developers may see meetings and context or task switching as distractions, while engineering managers see meetings as their main work and context switching as normal. Meetings are so important, sometimes even lunches can be meetings!
Here are some of the main meeting types engineer managers will have:
To give you a better idea of how you can fit everything you have to do in a week, here’s what Thomas’s weekly schedule looks like:
Since Thomas doesn’t code anymore, your schedule might look different from his. A very important thing Thomas repeatedly mentioned was do not reschedule one-on-ones. Rescheduling one-on-ones could make your team members feel like they’re not valued enough to be a part of your schedule. We will discuss the purpose of one-on-ones and how to effectively conduct them in the next section.
The main take away is you should have a clear structure for your week to stay organized and on top of things.
As a developer, you’re probably very familiar with scheduling. With that said, there are effective and ineffective ways to schedule your tasks. Urgency and importance are two concrete ways to help you prioritize tasks:
Deepank at Airbnb explained: “Spending time in the red box is like being in a fire-fighting mode — that can work for a short period of time, but if you do that too often, you’ll quickly burn out.” Crises and emergencies must be attended to immediately, but it is not ideal to have too many tasks in this category.
Ideally, both individual contributors and engineering managers should spend most of their time in the green quadrant. Why is that? If you leave important tasks unattended, they will eventually creep into the red quadrant.
Here’s an example some of you might relate to: remember when you pulled an all nighter because you waited to start your final paper the night before it was due? Whether you poured 10 cups of coffee down your throat or pinched your thighs to keep yourself awake, you had to get it done — after all, your grades depended on it.
Deepank used this example to make one point: start the important tasks while you still have plenty of time to complete them so you don’t find yourself in dire situations.
How can you avoid getting into the red zone? As an engineering manager, when you’re developing a new project, make sure you do all the planning upfront so you and your team can tackle the most important things first. In regards to your personal responsibilities, make sure you know your priorities and don’t procrastinate on finishing important tasks.
If you’re ever asked to work on urgent but not important tasks, the best thing to do may be to delegate the job to someone else, communicate your current workload and ask them to prioritize accordingly, or simply say no. The magic ratio Deepank proposed is: for every 2 yes’s you say to such tasks, you should give out 5 no’s.
Apart from having a structured calendar and good task prioritization skills, here’s a summary of the best practices that can improve your time management skills:
Let’s move on from managing your own schedule and priorities to managing your team. We intentionally used the word “lead” instead of “manage” in our title because a leader is exactly what your engineers are expecting. If you want to be able to manage your engineers, you’re going to have to earn their respect by being a leader first. Here are three ways to demonstrate your leadership.
Creating a unique team culture is one of the most exciting things about being an engineering manager.
Whether it’s establishing weekly sharings, peer code reviews, or simply afternoon drinks on Fridays, you can deeply influence your team’s culture. With that said, before you try to change your team’s culture, it’s important for you to understand how the existing team functions.
For instance, when asked what the engineering team at Codementor cares about the most, each member of the team answered,
“To be able to implement software quickly, correctly, and ‘unbreakably’.”
In other words, the most important thing to our developers is code quality. Our product director (who plays the role of engineering manager as well) is well aware of that, and focuses on improving the software development process and conducting weekly sharing sessions to discuss and identify tools that can maximize our team’s code quality.
Each team’s desires and expectations are slightly different — detailed observation and understanding are the first steps to success.
Now that you have an idea what your engineers are like, it’s time to weed out some bad habits and introduce some good practices.
Lots of companies see their engineers as mere tools. Sounds awful? That’s because it is. Not only because it’s dehumanizing, but also because toxic cultures harm a company’s creativity and overall productivity.
Here are four steps you can follow to determine what kinds of values and practices you should introduce to the team:
Before you start introducing concrete practices like code reviews, hack days, or weekly development sharing, make sure you lay the foundation of your team with robust values. Here are some of the things that engineering managers and their teams may value:
Jeremy at Invision emphasized that
The best culture is when vision, values, and practices are aligned.
Another crucial part of building a strong team is hiring people who already believe in the same values. We will discuss hiring later.
To effectively lead a team, you need to first establish trust. According to the leader-member exchange theory, leaders must establish relationships with their team members before they can influence others’ responsibilities, decisions, access to resources, and performance. These are often emotional relationships based on trust and respect.
As an engineering manager, your number one tool is the one-on-one meeting with your team members.
With that said, one-on-ones are not easy to execute. Why can one-on-ones be hard for engineering managers to master? And what is the right way to go about them? Let’s hear from experienced engineering managers.
One-on-one meetings are times for you to connect with your team members. However, communication can be extremely difficult initially.
As an independent contributor, your daily job consists of communicating with computers — you ask the computer to do something, it interprets what needs to be done, and you get the result. You even have tools like compilers, interpreters, and linters to help structure your “conversation” with computers. If the computer doesn’t understand your command, it’ll respond directly with some sort of error message, which you can use to locate and fix the problem. Humans are not so simple.
“Communication is what the receiver does.” — Thomas, Typeform.
What you’re saying is not the most important part of the communication process — how your words are being received and interpreted are the keys. Since everyone sees the world through different “filters” (culture, language, experience, values, beliefs, mood, etc.), learning who they are, how they think, and, as a result, how they communicate, is the hardest part of one-on-one meetings.
The key to mastering one-on-one meetings is understanding your main goal: building personal relationships with your team. Here are some helpful tips on how to do that:
Remember, the purpose of these meetings is to build genuine relationships with your direct reports. The one-on-one will help you understand what the engineers really desire and how you can help them succeed in their goals.
Cross-team collaboration is difficult because each team has different priorities, different KPIs, and a different allocation of resources. It’s not rare to see departments within companies fighting for resources and recognition. However, each team plays an important and unique role in the company, and each team’s success hinges on another team’s success. Here are some tips for you to collaborate with other teams successfully.
The main reason why different teams fail to work together is because their goals are not aligned, so it’s imperative to unite all teams with a common goal.
“It is important to realize that at the end of the day, you are all working on the same goal, but you might be looking at different angles of how to achieve that goal” — Thomas, Typeform
A tangible way to define goals is to help all stakeholders think about the value your company offers its users.Regularly communicate and emphasize the impact your products have on users to foster user empathy.
Imagine an engineering team working with both the design team and the product team. How might their priorities and expectations differ?
Most engineering teams are either fixated on code quality or implementation speed, while most designers focus on the aesthetics. On the other hand, product teams mostly concentrate on delivering projects on time and on budget.
Though each team and its priorities are important, following these priorities religiously is impractical. Not only is it impractical to think that all objectives will be met 100% of the time, it may also damaging to think your team’s goal should come before other teams’ goals.
“A lot of the times, issues that happen in cross team collaboration are results of misaligned expectations” - Jeremy, Invision
When you’re leading a team of engineers, it is important to manage your own team’s expectations. The team should care about code quality and implementation speed, but should also expect situations where compromise is needed when working with other teams.
When you’re the engineering manager, you’ll have the opportunity to be more involved with product direction and implementation. In some ways, you’ll feel more like a shared product owner with the product manager. With that said, there’s a fine line between having a sense of ownership and being overpowering. As Jeremy at Invision said,
Ultimately, my product manager has the final say, but I really push him if I feel like there’s something wrong with the decision that’s being made.
What Jeremy demonstrated is a healthy cross-team relationship — he respects his colleague’s expertise, supports him and his decisions, but challenges him when the decisions don’t seem to align with the company’s goal.
Ultimately, every manager’s responsibility is to make sure that company goals are prioritized. Since every member of the company has his or her expertise, it is important to respect and learn from their domain knowledge. All constructive criticism should be built on a the basis of mutually respectful relationships.
You’re inevitably going to make mistakes. Senior developer Jace Ju from KKBox said this about an ideal senior engineer:
They understand that admitting mistakes is not shameful; instead, it's a chance for growth. That’s why they’d go back and review their mistakes after the problem has been solved. That’s not to say that senior engineers take all the blame; the point is to allow the team to see the issues and solve them as soon as possible.
Contrary, Some engineers would rather point fingers than take the fall. They might avoid blame by saying it's not part of their job, or just cowardly throw a junior coworker under the bus.
If senior engineers are held to such standards, how can engineering managers not be? In addition to taking personal responsibility, engineering managers should also take responsibility for their team. If they made decisions that negatively impacted a project, another team, or the company as a whole, they should own up to their mistake instead of pointing fingers.
If you’ve been an engineer for a while now, code review and project management are probably quite familiar to you. If you’ve been a leader-without-a-title in your team for a while, even one-on-ones may be pretty familiar. Hiring, on the other hand, may be something new to you.
Before we dive into the xyz’s of hiring, it’s important to remember that hiring the right talent is more important than hiring the “best” talent. In the previous sections, we’ve discussed the importance of creating and curating a healthy team culture.
Imagine that you’re trying to build a lego house — you probably wouldn’t and shouldn’t try to force Jenga pieces into your lego house. Though the lego pieces come in all sorts of colors, they must be able to fit together. If building a team is like building a lego house, you want to make sure you get the building blocks right — your members can have different strengths, cultural backgrounds, communication styles, and more, but they should naturally exhibit behaviors that are aligned with your company culture.
Depending on your company’s culture, the qualities you look for might differ. With that said, when we interviewed different engineering managers, some qualities were repeatedly mentioned. Here are some of them:
The types of questions you ask usually depend on the type of developer you are trying to hire. With that said, the types of interview questions can be broken down into three parts. Since we’ve written a comprehensive interview guide on how to hire a web developer the right way, instead of repeating the questions, we’ll outline the three types of questions here:
Most interview start off with understanding the candidate’s previous work experience. To understand them better, get them to talk to you about the projects they’ve done in the past (what they’re proud of, what they would’ve changed, etc.). The idea is to try to understand their involvement and sense of ownership over different projects. What you also want to get a hang of is their general attitude towards coding, learning new technologies, and preferred development environment. Questions about their coding journey, their thoughts on testing, and ways to improve themselves will all help you understand them better.
Communication and management skills are vital for developers to succeed at their job. With that said, claiming that one has these skills doesn’t mean he or she actually does. You can start off by asking your candidates about some of their best soft skills. When they’ve listed some of them, ask them for specifically challenging instances where they were able to demonstrate their soft skills. To test out their work ethics, you can try to find out how they go about a coding problem when they can’t work it out. For those who have worked directly with clients or have been in a customer-facing role, asking them about these experiences will tell you a lot about their communication and management skills.
Last but not least, try to find out as much about the candidate's’ technical skills and practices as possible. Even though you can always find out about their skills through technical tests, it’s much more probable to get to know their practices during face-to-face interviews. You can find out about your candidates’ development workflow, how they find and handle performance bugs, and their general attitude towards things like unit testing and continuous integration. How they answer these questions will give you an idea of how they work and whether their technical practices match with your team’s. You can also try to pick their brains about OOP analysis and design, ORM, and much more.
If you have the right attitude and practices for time management, team leadership, cross-functional team collaboration, and hiring, you’re well on your way to being the engineering manager your company needs. With that said, we can all use a little help from some tools and books like these:
By no means is this list comprehensive and exhaustive — there are always people working on and releasing new tools and new books on engineering management. No matter how experienced of an engineering manager you are, there will always be new things to learn.
Being an engineering manager is exciting as well as slightly daunting. You’re given more opportunities as well as more responsibilities. Without the correct mindset, beliefs, and practices, managing a team can go terribly wrong. With this guide and all the resources out there, though there may be some growing pains, you will surely become an awesome engineering manager!
Just like everything else that we do, practice makes perfect. Don’t worry or feel defeated if you run into obstacles — the more experience you have, the easier it’ll get.