|
From Think Like a Software Engineering Manager by Akanksha Gupta This article covers
|
Both my husband and I have been passionate software engineers with an interest in computers since our childhoods. We met at Columbia University, New York and were study partners. Being a software engineer at heart, I was personally always interested to eventually move to management (preferably engineering management, which is what this book is all about), having seen my dad in the same field and idolizing him. Fortunately, every time my husband or I made a career move as a software engineer, there were tons and tons of books and resources designed to educate, support, and help with our preparations. When I had spent few years as a software engineer and got serious about finally exploring engineering management career path, it hit me hard that although there were several resources available about management and how to be good at it once you are in the role(like The Manager’s Path, Peopleware), there were hardly any resources to help a software engineer like me—first to understand what engineering management is and if it’s the right move for me, and how to go about making the transition from an individual contributor (software engineer) to an engineering manager. I tried to explore the resources that were available online, but I was the only one in my immediate friend’s circle who was thinking about engineering management, which meant there were fewer people I could reach out to in my friend network. I had to really expand my network, make use of resources like LinkedIn platforms to reach people and get career guidance, and of course my immediate manager was a great help in all this.
It is precisely the set of struggles I faced and the anxieties faced during my transition from software engineer to engineering manager that motivated me to write this book. In this book, you will learn about some of my personal anecdotes and my journey going from an individual contributor (IC), that is being a software engineer, to being an Engineering manage (EM). You will also learn how to determine if this is the right role for you, how to prepare for it and thrive once you make it. You will also learn about the challenges that come with the EM role and some frameworks that can come handy in your day to day job, leaving you with a set of exercises to stop and think about what resonates with your job, role and work. You will also learn about what other expert leaders in the industry have to say about the topics discussed in the book.
Who is this book for?
Let’s first address the fundamental question of who can use this book. If you resonate with any of the categories below, then you have landed on the appropriate book:
- An engineer thinking about engineering management as their next potential career move.
- An experienced EM who is looking to learn and grow in the role.
- An EM who is changing jobs and will be taking over a team from another EM.
- An EM who is mentoring or otherwise helping new EMs.
Management 101
To begin with, let’s try to address the elephant in the room, what exactly is a manager and why do we need one?
Let’s consider a case of a pizza restaurant where say there are ten chefs and each can make four pizzas in an hour. For a 8 hour shift (assuming breaks are separate), the throughput of the restaurant is 10*8*4 = 320 pizzas per day. That’s a lot of pizzas! Now imagine that a manager is hired to supervise these ten employees. This manager joins the team and clearly is able to see some gaps in the current way of functioning: for example, dough preparation could be paralellized and the preparation of similar pizzas could be grouped—so maybe assigning these two tasks to the same person would make it faster. Let’s say that Charlie focuses on the dough machine, while Frank focuses on managing the pizzas in the brick oven. With such supervision and some changes, the productivity of this ten player team increases, resulting in each member of the team averaging 6 pizzas per hour. Also, the manager makes sure to appreciate the work of the employees and introduces a monthly award, given to the most deserving chef based on customer and fellow employee feedback. This manager has added value to this team by helping increase the velocity of production, which is now 10*8*6 = 480 pizzas a day, a 50% increase in team productivity. This is the value of having a manager: making individuals more productive and happy (they now feel more appreciated at work) than they were before having a manager. Similarly, this role can be extended to any industry, e.g. pharmaceutical, technology, customer care, academia, etc.
Management is a core element that, irrespective of the industry, has some underlying basic concepts that boil down to positively impacting the company growth and employee satisfaction. At the core, it involves keeping your people—the employees—happy while helping the business meet its goals. Also, it involves supervising your employees, addressing their needs for the short and long term, providing constructive feedback, helping with conflict resolution, using their potential to steer business goals, planning for the company, and business growth in general. You are also the binding glue between the employees and the higher management, helping bridge the gap between the two worlds. The idea is to empower the employees to provide what they need to be successful in their job role, while abiding by company rules and regulations.
Effective employee management is imperative for the success of the company and the growth of its employees. It encompasses all areas of day-to-day responsibilities such as managing and coaching employees to keep them motivated and productive, hiring, firing, delegating, project executions and delivery—be it if you are a manager for a set of employees working in a company warehouse to a mid-level manager at a big technology company. The three key pillars that in my eyes make up the manager role are: people, projects/products, and processes. These are the dictating forces of structuring this book into three core sections or components to learn in depth about the flavor of engineering management and its nuances that separate it from any other management role. As mentioned, although the core principles and responsibilities of a manager role are the same, this book centers around how the same management concept is used when it comes to managing software engineers and their specific needs. As an example, delegation is an essential skill that every manager makes use of in their role. But delegating work to a warehouse employee is different from delegating to a software engineer to build a set of operational excellence dashboards to be presented to upper management. Even though the core basics in both scenarios will be the same: identify the individual whom we want to delegate the work to, provide them the support they need to finish the task, and then measure the success of the task, the difference lies in how the delegation is executed depending on the skills and role of the employee in question.
There are several resources already available that talk about strategy making (Your next five moves, Good strategy/Bad strategy, Measure what matters, etc.) and how to be a good manager (The making of a Manager, The First-time manager, etc. ), so I will not repeat what is already out there. Instead, I will focus on the concept of management with respect to software engineers and how engineering management plays an essential part in the success of the tech industry. Even if you are a manager in a non-tech industry, you can still pick up the fundamentals of management shared in this book and borrow ideas of how to effectively manage your employees, projects, and time.
Demystifying the Engineering Manager (EM) role
We all have heard the terms Engineering manager or engineering leader. But what does an EM really bring to the table?
Engineering management is both an art and a skill. Engineering manager is not a very straight forward title or role, and expectations for it can vary from company to company. It is a whirlwind of roles and responsibilities, but it can be put in a simple way:
On a basic level, you are a manager for an engineering team that will consist of software engineers and sometimes cross-functional partners. The exact meaning of a title varies from company to company. Some common titles that encompass the responsibilities that I understand as an EM are: engineering manager, software development manager, senior manager software engineering, manager of application development, SRE/DevOps manager, and so on. Different companies use different titles and not all of them even use the word ‘engineering’ in the title, but that doesn’t necessarily change anything with the responsibilities or the expectations in the role.
To build a new company, especially a tech company, there are quite a lot of things that need to function harmoniously. Hence, strong and sustained leadership is required in a variety of things: for example, understanding what to build (Chief Product Officer), understanding how to build (Chief Technology Officer or CTO), understanding how to manage expenses (Chief Financial Officer), and much more. In the very early stages of a startup, one person often plays several leadership roles. This is because, at the early stages, the scope of operations is small and multiple roles can be managed by one person. Engineering manager as a role may not even exist in the company at the early stages, and engineers may directly report to the CTO. However, this doesn’t mean that we don’t need an EM or that the duties of this role are not being carried out, rather that the CTO here is wearing the hat of an EM as well.
As the company grows, this process becomes unsustainable. In a mid-size company you would often see multiple EMs and their career ladder be more accurately defined with expectations against each role. But, you may ask why not just have a company full of engineers without any EM? As I mentioned earlier, a successful and growing company runs like a well-oiled machine.
What happens in the following scenarios, where the company doesn’t run like a well-oiled machine?
- A set of engineers thinks one project is more important to do than another.
- Resourcing for certain projects is not appropriate.
- Conflicts brew within or across different teams.
- Productivity and morale of teams can drop.
You see the general trend of issues that can occur outside of the technical implementation of a product. Do we expect engineers to resolve such problems? Of course not—engineers are expected to build the product. This is where an engineering manager role shines. An EM’s duty is to manage the work of their engineers, allowing them to focus on their duties, and to act as an interface point with other team’s EMs and upper management.
An important observation to make here is that not all Individual Contributors (ICs) can or want to become EMs. To be a successful EM, you need qualities to be able to manage at all levels, demonstrate empathy, have the soft-skills, ability to build human relationships, plan and execute in a timely manner, and (most importantly) be interested in the role. The skills needed are often learned over time and polished every day. The more experience you gain, the better you get at handling various ambiguous situations. A very successful IC may end up being a very low-performing EM and vice-versa. EM is not the only option available when it comes to looking for a career progression or career change. Some of the common tracks people follow are being an individual contributor such as solution architect and prefer to stay 100% technical, or perhaps move to parallel roles such as product/project managers, business analysts, DevOps architects, and so on. There is no one-size-fits-all model and you do NOT have to go the route of engineering manager if it’s not for you. It’s equally fair to be a staff or principal engineer, or lead architect and still take on some level of management responsibilities.
So, what does an engineering manager do, then? The answer isn’t a simple one.
Engineering management is a multi-faceted role where one needs to wear several hats at the same time and be an expert at context switching. Broadly speaking, an EM’s responsibilities range from building talent, managing people, chaos management, prioritizing, delivering projects, establishing processes, architecting and building/supporting the software development life cycle within an organization, problem solving, driving alignment, optimizing, and much more.
Let’s go through some of the main tasks that an EM will be responsible for and dig a bit deeper into each one.
Build Talent
Building talent is one of the fundamental responsibilities of an engineering leader. This involves:
- Regular one on ones and career conversations for engineers (or managers if you are a middle manager), to better understand their motivations and aspirations.
- Helping coach and mentor by addressing career gaps, promoting people and bringing the best out of them, and helping build their careers.
- Managing performance by helping both high and low performers and providing constructive feedback.
- Resume screening, hiring new talent, and providing team members the resources and support that they need to be successful in their roles.
- Growing people from within the organization and knowing when to hire externally.
- Retaining existing talent by keeping them happy, challenged and motivated.
- Building high performing teams which are self-organizing.
- Demonstrating empathy and emotional intelligence.
The idea is to be an enabler and bring out your team members’ full potential. Also, this involves keeping your team’s experience positive and engaging, as this brings engagement and job satisfaction. The stronger the foundations of the workers’ culture and their talent, the stronger the foundation of the company will be.
Providing clarity
People are more productive if they have a clear vision. As an EM, you are tasked with the burden of providing a clear vision and mission statement to your team so they understand why they exist as a team. This involves providing your team with clear tenets and a charter that your team abides by, and an understanding of how their work impacts the broader goals of the organization.
This involves conveying:
- Clarity in terms of team’s mission and charter.
- How the team goals fit the bigger picture and the company’s Objective and Key Results(OKRs)
- Staffing decisions
- Priority of tasks so that engineers know what to work on next.
- Thinking big and sharing the short and long term visions with the team.
- Helping to remove roadblocks for the team so they can be effective, productive and make progress on tasks. This involves helping with any blindspots that others might have missed. The EM can use their 50,000 foot view and years of experience to clear paths for the engineers.
This journey is going to be full of bumps and ambiguity where sometimes you will have to step up and make decisions with limited sets of knowledge and resources and own the outcomes. As an EM, you can’t succeed by always deferring to others or leaving things ambiguous. Hence, you will have to use your best judgment based on experience and skills. Mistakes can prove more costly than they did as an IC, and you will be responsible for not just your work but also your team’s work. This means that it is of utmost importance to keep a problem solving mindset when leading projects and help cut ambiguity.
Scale through delegation
You are now responsible for running multiple projects in parallel, owning engineers’ career conversations, stakeholder alignment, attending meetings—can you do all this alone? The real answer is no. You have to be practical about your time and commitments and learn the art of effective delegation.
This means that you have to:
- Get away from the ‘doer’ mentality and adopt a ‘trust and verify’ mindset.
- Have a coaching mindset.
- Share knowledge to have a multiplier effect.
- Be organized, manage time well and prioritize tasks effectively.
- Be smart about identifying what can be delegated, when can it be delegated, to whom it can be delegated, and how it should be delegated effectively.
Delegation will help boost morale and build trust with your engineers, as you provide them opportunities to grow while keeping their career aspirations in mind. Remember, you always have to think about scaling to be adept in managing multiple teams at once.
Focus on engineering excellence
If you are satisfied with where you are at, you will not continue to learn and grow. As an EM, you strive for fostering a culture of process improvement, and business and operational excellence. Apart from delivering on engineering projects, this often includes improving performance for services, infrastructure costs, reducing downtime, faster delivery, adding more value to customers, and more.
You cannot do everything alone, so you have to have:
- Awareness of tech debt and inspire others in the team to step up their work all the time—this can be in the form of better documentation of on call runbooks, setting up guard-rails on change management, having standard operating procedures(SOPs) for the processes, and so on.
- The knowledge to help raise team’s operational excellence bar to scale for the future.
- The skills to review code reviews, actively participate in design discussions, hunt down bugs, and ensure team services are legally compliant.
These will ensure what your team codes today, can be optimized and scaled with posterity in mind. A bigger role means bigger responsibilities. Now that we understand the core responsibilities of an EM, let’s look at the nuances between leadership and management. Understanding the differences between the two will help you build a good mindset and keep the two facets of EM role in forefront, rather than thinking about it as an afterthought.
Leadership vs Management
Well, for now you will be thinking that we have used the words management and leadership interchangeably, but does that mean they are exactly the same? The fact of the matter is that the title or role can be called an engineering manager or engineering leader, but what you practice should be engineering leadership. One does not need to be a manager to be a leader and vice versa. But if you manage your team as an engineering leader, there is a higher probability you are putting your team and yourself up for success. The best managers are managers and leaders. Let’s look at the table below to see a few key differences between management and leadership.
Category | Management | Leadership |
---|---|---|
Role | It is more of a title or role. This is more of a tactical role. | It is more of a mindset, composed of skills and an approach to things. This is more of a strategic role. |
Duties | Management refers to the operational side of things. You will help with running sprint ceremonies, project deliveries, etc. | Leadership is a superset of operational skills and dealing with people. This means that you will help inspire and coach your team in the process of carrying out operation goals. |
Outlook | Management is rooted in the present situation. | Leadership involves providing vision, and balancing the present situation with the context of the past and future. |
Value | Management is about increasing the developer velocity and striving for stability, focused on quantifying value of team. | Leadership is about trying new things and challenging the status quo. This involves thinking out of the box, i.e. creating value rather than ‘just’ delivering. |
Culture | Endorse the culture of the company. | Shaping the culture of the company. |
Table 1 A table representing the differences between leadership vs management
The differences between the two seem nuanced but, in the larger scheme of things, they often differentiate a successful EM from their less successful counterparts. An engineering leader not only focuses on management of their team but also provides vision and guidance to help create their next success story. They tie all the loose ends of different pieces together and look at the problems more holistically.
What will you learn from this book?
- Learn about the basics of management, what engineering management is and the core skill set that you need to be an effective engineering manager.
- Readers will learn from real-life examples and stories from the workplace that they can relate to.
- Readers will learn about core concepts of dealing with people which encompasses people management, performance management, delegation or learning to let go, learning to recognize people around them, handling hiring and attrition, and addressing the general needs of the team.
- Furthermore, readers will expand on the knowledge of collaborating with cross-functional partners, project delivery, and how to manage expectations at all levels.
- The book ends with a section on processes where one will learn about DevOps, time and change management, and what’s beyond the scope of this book so that the reader can continue to hone their management skills.
- Each section leaves the reader with a set of questions to affirm the understanding of the concept and prepare them to be an effective EM.
If you want to learn more about the book, check it out here.