While it seems to be a trend that software engineers over time move over to management, being a manager brings with it a completely different set of expectations compared to being a software engineer. The skills and abilities needed for success as a manager are quite different; here are the top five, in my opinion, that determines your ability to function and thrive as a manager.

1. Know your domain to gain your team’s respect.

Engineering teams exist to solve infrastructure problems that exist in business. Gone are the days when simply having some experience in managing people was sufficient to manage an engineering team; to be an effective engineering manager today, you need to be able to both understand the problem domain (aka the business problem) and the solution space (aka the technical implementation), and manage the people that make up your team.

The problem domain encapsulates everything about the problem your team is empowered to solve: the clients and their systems, the stakeholders and their priorities, sister/dependent teams and their systems/priorities/problem domains, your team’s infrastructure, the overall market for solutions in this space, etc. You are paid to have this global view; it behooves you to understand this global view to be able to manage effectively.

Not understanding the problem domain and the solution space your team owns in affects their perception of you, which informs their willingness to work with you. Furthermore, without understanding the problem domain, you’ll end up setting vastly unrealistic expectations of your team; and subsequently, when issues arise, you’ll tend to focus on treating the symptoms rather than treating the root cause - which is a lack of knowledge on your part.

This does mean that you’ll need to do extra legwork to actually learn the problem domain, even though you’ll never work on building solutions directly. This is perfectly ok: the time spent on learning something that is seemingly useless actually pays off by making you more strategic and enabling you to see obstacles facing your team more clearly.

2. Find the right people to supercharge your team.

Employees that greatly determine the success or failure of a company, more than the technology, customers or the business model. A small but highly motivated team working from a garage on a boring problem can get more done than a large company that’s mired in political infighting and is filled with prima-donnas. The same logic applies at every level: within an organization, and within a team.

This is what is commonly referred to as culture fit; this applies more to each person’s inclination to work as a part of a team, to make the right decisions and to think as a business owner than a renter. The best place to make this call, despite the limited availability of evidence, is during or before hiring; interpersonal issues after the fact are almost always harder to resolve, and result in a net loss for everyone.

Another important consideration is whether the person’s skillset is appropriate for the team. This is especially important during the growth phase of a company. When your company has just closed a recent funding round, and has expansion plans, you may be feeling the pressure to simply hire to fill up the head count. This in my experience is the most counterproductive thing you could do for the team. Far often than not, teams need a few people with specialized skillsets, and more importantly, passion in their problem area to work with, rather than generalist software engineers.

I’m not arguing that generalist software engineers aren’t needed; however, it’s likely that you’ll need engineers to have some level of specialization or interest in one particular area to really gain that edge. It’s far easier to engage an engineer motivated and passionate about your team’s problem domain than to grow said passion in someone who simply writes code for a living. Your ability to distinguish between the two, and hire the former rather than the latter, is important for the company’s continued growth. This means that you’ll need to be selective, and your team grows slower; but in my experience, it makes for a far more cohesive team that accomplishes more than a large team of individual contributors, each pulling in one random direction or the other.

3. Measurement is important to manage effectively.

There’s a famous quote, attributed to Peter Drucker: You can’t manage what you don’t measure. Not having an understanding of your team’s current state of affairs - be it project progress to service uptime to sales calls to performance reviews - leaves you with no idea as to where to focus your team’s efforts. Worse, measuring the wrong thing can have disastrous effects, misleading you into focusing your efforts into areas where there isn’t any value. Hence, having good, accurate KPIs are essential for every manager to be able to manage effectively.

It may be fairly difficult to motivate your team to measure these things - after all, ensuring that your systems are properly instrumented, logs are properly collected and sitting and building SQL queries and dashboards isn’t most people’s idea of a good time. However, it is crucial for the ongoing success of the team - and so, even if your team members do not recognize that, it is on you to do so, and insist upon building a solid base of measurement that you and your team can rely on.

To some extent, solving the ‘who’s going to bell the cat’ conundrum is easy: either hire someone with the requisite skillset and motivation, if you can (see my point #2: find the right people), or, be transparent to motivate your team: explain to your team what type of metrics you’re looking for (this requires a good amount of homework from your end), why it is crucial to measure these things, and most importantly, how you’ll be using this data in the future to guide the team. This does require that you sit down and think, at length, about which metrics are essential - and, if you’ve internalized #1 - know your problem domain - it would be easy to come up with them.

One word of caution about measurement: it’s very easy to fall into the trap of optimizing for your metric, losing sight of the bigger picture. Metrics, by their very nature, provide a limited perspective on your effectiveness; you need multiple metrics to really understand the state of the world. As a result, optimizing for any one metric, without consideration to others, can lead to an overall decline in your team’s effectiveness. Furthermore, it is usually what you don’t measure that eventually gets you - so always keep an eye out for anomalies that your metrics don’t really explain. Bottomline: use metrics and KPIs as a guide to point you in the right direction; but don’t optimize for them.

4. Encourage collaboration, inclusion and diversity.

Companies today are increasingly global in their reach, and it is essential that the engineers that build products that serve a global audience be diverse as well. Diversity encompasses everything that makes each of us unique: our economic, social, biological, theological and cultural background. However, embracing diversity only during hiring isn’t just enough; it also has to be an integral part of the team’s culture as well - the values, beliefs, attitudes and behaviors shared within your team.

Why is this important? Because a diverse team brings to the table a wide variety of perspectives, colored by their own experiences. While these experiences may not directly be relevant to actual bytes-in-buffer (C++ will always be C++ no matter who writes it), they play an important role in the approach taken by your team to solve the problem. For instance, a men-only team may be blind to the experience a woman might have with your app; a US-centric team might be blind to the user experience of someone living in India. Bringing these perspectives to the table means that your product will be inclusive of a much larger swath of the world, instead of catering to a narrow demographic.

This is also the reason why encouraging your team members to bring their whole self to work - and being inclusive of their opinions and preferences - is important. If, in spite of diversity in hiring, if everyone were expected to align with the cultural norms and values of the team’s dominant demographic make up - you’ll end up with a monoculture which defeats the purpose of this diversity.

5. Put people over process, always.

Prioritize people. Don’t get lost in process. Measurement is important, but blind adherence to measurement is counter-productive since people will tend to optimize for the metric rather than optimize for the business. Oftentimes, poor team performance comes out of external factors - role confusion, murky mission, unaddressed conflicts, rigid processes, lack of trust, fear, and burnout. ReWork: https://rework.withgoogle.com/blog/five-keys-to-a-successful-google-team/ Without passion, you’re just a renter. Look for what you’re passionate about. Own, don’t rent - have a stake. Your product is a reflection of you.

https://medium.com/swlh/you-cant-manage-what-you-don-t-measure-7d344fbeea26