The Role of Tech Leads and Engineering Managers 👑
And how to assign their responsibilities in real-life scenarios.
Last week I had a call with some friends, one of whom is transitioning to an Engineering Manager role. He didn't know what to expect and asked for some guidance.
We did our best to help, but in these cases talking with peers doesn't always work. You might have a friend that holds the same title in another company, only to discover that what you do is radically different.
In tech, some roles are just confusing and each company seems to implement things in its own way.
But why is that? Let's go back to the basics and try to find out 👇
3️⃣ The Three Responsibilities in a Product Team
Whatever way your team is organized, I believe there are three major leadership responsibilities that should be assigned: 🎨 Product, 🔨 Tech, and 💬 People.
On paper, these shoes should be filled respectively by:
🎨 Product Managers — they own the product roadmap, feature requirements, and communication with customers & stakeholders. They create alignment and remove obstacles from the way of the team.
🔨 Tech Leads — they own the technical direction of the product. They make design decisions and guide the development. They spend part of their time coding, part of their time leading the rest of the team.
👥 Engineering Managers — they take care of people growth and well-being. They work on processes, hiring, and career tracks. Their technical background is critical in order to be effective in communicating with their reports, but they don't have big technical duties anymore.
In most companies I have seen, some of these duties conflate on the same people, so instead of having three separate roles, you often have two (or one 🙈).
And this is...fine! There are big overlaps between these roles, so it's natural to have people who end up wearing multiple hats, especially if you don’t work in a big corp.
I want to stress that there is no answer that is right for everybody — every solution is a tradeoff between some qualities. I can't provide any magic recipe, but I can try to shed some light on these tradeoffs, to help you make the best decision for what you want to achieve.
I will do this by talking of two things:
🔀 Hybrid Roles — the three major ways you can assign multiple roles to one person, with upsides and downsides.
🎽 Team Organization — how the same responsibilities change based on the way your team is structured.
So let's dive in! 👇
🔀 Hybrid Roles
You might have legitimate concerns about having three separate people for these responsibilities — maybe because of your headcount, your people's skills, or your team organization (we will see it later).
If you want to give more than one hat to the same person, you have three possible scenarios:
Product Manager who also acts as Engineering Manager
People in the team report to the Product Manager, with a separate Tech Lead. This is common with Product Managers coming from a tech background. This can lead to:
➕ Tight-knit teams, strong on the operational side. Engineers become important stakeholders and PM has visibility into their problems.
➖ Less effective on strategy and bold directions, as the PM 1) has less time for that, 2) is biased by the here and now.
➖ Only really possible if PM has a relevant tech background, which doesn't happen very often. Hiring for that role might be challenging.
Tech Lead who also acts as Engineering Manager
People in the team report to the Tech Lead, with a separate Product Manager. Some considerations:
➕ Engineers are usually happy to be managed by someone with hands-on tech expertise. It also helps hiring them.
➕ It creates a single owner for the Engineering area, which simplifies relationship with PM.
➖ It messes up engineers' career track, as you don't have (at that level) clear separation between Individual Contributors (Tech Leads) and Managers. It also limits your hiring choices for that role.
Product Manager who also acts as Tech Lead
This is rare and may only happen in teams that deal with very technical products, like APIs or dev tools.
➕ It can lead to very fast execution and decision making.
➖ It's very hard for one person to be effective at both roles — trade-offs are better resolved via negotiation between multiple stakeholders.
➖ You may apply it only to a few specific contexts.
🎽 Team Organization
Now let's see how Tech Leads and Engineering Managers fit into the two most common team configurations: Functional Teams vs Cross-functional Teams (aka Squads).
Functional Teams are organized by area of expertise — e.g. backend, frontend, design.
Product initiatives are usually led by temporary cross-functional teams ("feature teams"). These teams are assembled just in time to deliver the project, and dismantled later.
Since functions are the only long-lived structures in the team, reporting lines are usually created around them. You don't want people to change who report to very often, so it's unlikely you will make them report to PMs in this case, as PMs rotate across projects.
Cross-Functional Teams (Squads)
These configuration creates teams that own specific areas of the product, from top to bottom. They are made of people with diverse skills, with the goal of being independent from the rest of the company.
They are usually long-lived, as they benefit from having people increasing their expertise in that product area over time.
This is good for companies with a certain level of stability and with a sizeable headcount. Without both, it is hard to split people into product areas and keep things that way for a good amount of time.
Let’s see now the options for Tech Leads and EMs 👇
Function Engineering Manager
A common solution is to have Engineers reporting to an Engineering Manager from their own function.
➕ Function EMs are good at finding bottlenecks both in processes and tech, as they work on a specific domain.
➕ Likewise, they are good at hiring Engineers within the same function.
➖ By not having any project responsibilities, and not managing enough people working in a single project, they might not have enough context to be useful at resolving conflict. (see the Spotify example)
Function Tech Lead
Function Tech Leads aren't responsible for any specific project — they make sure any project can be built efficiently on their level of the stack.
➕ They enforce good practices and good design across the function
➕ Engineers are happy to have a leadership role specific for their own domain.
➖ For any project, PMs need to negotiate with Tech Leads from all involved functions.
➖ Tech ownership for a given project is unclear as it is split across multiple people.
Project / Squad Tech Lead
Each Squad or Feature Team may have a dedicated Tech Lead. In this case, if the PM is a mini-CEO, the Tech Lead acts as a mini-CTO.
➕ Clear tech ownership
➕ Efficient decision making
➖ Teams have a higher risk of becoming siloed — functions are weaker if tech leadership is at project level.
➖ Tech Lead skills should span multiple domains, which is generally harder to pull off.
As I wrote at the beginning, there isn’t a single best way to organize your team. Reading stories from other companies is very useful to form your opinion and make informed decisions.
Here are a few articles to dig deeper into this topic:
📑 Failed Squad Goals — by Jeremiah Lee, reflects on the shortcomings of the famed Spotify model, in part revolving around Engineering Managers' responsibilities and their interaction with Product Managers.
🎁 Deals and Sponsors
Waydev helps engineering leaders gain complete visibility of their teams with a data-driven story of key business initiatives.
As a subscriber, you can try it for free and then get 20% off with the following code: LUCA20
That's it for this week! How is your team configured? Do you have both Tech Leads and Engineering Managers? Let me know in the comments 👇 or via email