The Manager’s Path by Camille Fournier
There are many books on programming that engineers can turn to when they need help building a complex feature or solving a specific problem. But when it comes to help with management challenges, the choice narrows.
Enter The Manager’s Path by Camille Fournier, published in April 2017 by O’Reilly. In it, Fournier gives good advice based on her own experience of management, in particular at Rent the Runway, where she worked her way up from director of engineering to CTO.
With each chapter covering a different level of engineering management, from the simplest form of mentoring to the role of a CTO and senior leadership, The Manager’s Path provides plenty of great practical advice that will prepare you for any challenging situation you may encounter as a manager or if you’re planning to become one.
What makes a good manager?
According to Fournier, good managers are, above all, people who “help [employees] understand what is important to focus on, and enable [them] to have that focus.”
To achieve this, managers have several tools at their disposal, such as one-to-one meetings, which are essential. These help them to build relationships with each member of the team, as well as provide regular opportunities to speak in private.
Feedback is also a useful tool that helps employees identify what they are doing well and the areas where they need to improve. Of course, giving feedback publicly should only happen if it is going to be positive—anything negative should be shared with the employee in private.
And finally, managers should provide team members with training and career development by finding the right resources to help them grow and extend their career path.
In order to progress to a managerial role without having to wait too long, Fournier advises finding positions where good technical skills can be quickly acquired and where you will be surrounded by inspiring mentors and managers.
Další oblíbené články pro: Tech
Start with mentorship
To take your first step in testing and developing your management skills, Fournier recommends mentoring an intern.
Important aspects of this role include:
- Careful listening. Mentors need to look beyond the information the mentee openly shares and pay attention to their body language and attitude as well.
- Clear communication. Mentors should be clear about what they expect from the mentee and repeat complex instructions or advice in different ways.
- Calibrated responses. Mentors should be ready to adjust how often they check in with their mentees (it should be at least once a week), depending on how things are going.
In order to be really efficient as a mentor, Fournier recommends assigning the intern a project right from the start, with it broken down into stages. To begin with, a mentor also needs to spend as much time as possible with their mentee, and start with simpler tasks, for example helping them to install the integrated development environment (IDE) and check the code. In fact, Fournier explains that the mentor should “touch base several times a day to make sure [the mentee isn’t] feeling lost or overwhelmed by the volume of new information.”
One step further would be to mentor a new hire. Not only could this be simpler than mentoring an intern, it’s also “an opportunity […] to see the world of your company through fresh eyes.” It also helps you to better understand how your company actually runs, for example when it comes to identifying which rules are taken for granted but not written down and which are clearly set out in the company handbook. Mentoring will also help you to build your network, as you may come across your mentee again if and when they move on to other companies.
Dozvědět se více o Engineering management
The tech lead
There doesn’t seem to be a common definition of the position of tech lead but Fournier explains that it includes several main roles, such as systems architect, business analyst, project planner, software developer, and team leader. She turns to Patrick Kua’s book Talking with Tech Leads to try to pinpoint a comprehensive definition for the tech lead role: “A leader, responsible for a (software) development team, who spends at least 30 percent of their time writing code with the team.”
Fournier warns against putting someone in a tech lead position just because they are the most experienced engineer in the team. The candidate also needs to be interested in developing people skills and gaining project-management experience.
So what skills are expected from a tech lead? According to Fournier, above all, being effective requires “the willingness to step away from the code and figure out how to balance your technical commitments with the work the whole team needs.”
Her breakdown of what needs to be mastered in order to become a great tech lead includes the following:
- A good understanding of the architecture of your system.
- The ability to share the more interesting work with your team without sacrificing what you want to be doing.
- Making sure you involve the team in some of the major technical decisions.
- Being able to communicate efficiently on behalf of your team.
How to become a good manager
The necessary people skills
Managing a team is mostly about the individual members of it, as a “team is only as healthy as its individuals.” So it’s important to take some time when you start your managerial role to get to know the people in the team properly. Asking for feedback with a set of questions like, “What is your preferred method of communication for serious feedback?”, or “Are there any manager behaviors that you know you hate?” will help to build trust and show how to manage each individual the right way.
Once those are out of the way, communicating with the team should then be done through regular one-to-ones. Fournier recommends holding these once a week to begin with and then adjusting if necessary, and to avoid holding them on Mondays and Fridays.
Delegating correctly is also crucial for effective management of a team. In order to achieve this, Fournier recommends the following:
- Identifying the team’s goals to understand what areas you need to dig further into.
- Getting an update by checking what information is available on the system before speaking to the team.
- Adjusting the focus according to the stage of projects.
- Developing standards for coding and system management.
- Encouraging the open sharing of information.
Managing also means making hard decisions, and knowing how to make them so that they have the least negative effect on team cohesion is important. Fournier includes advice on how to decide whether underperformers should be fired and how best to prepare for carrying that out.
The necessary technical skills
Being an engineering manager is about more than managing people. It also requires having good technical skills in order to be able to guide the technical side of decision-making and to gain the respect of your team. “If you don’t stay in the code, you risk making yourself technically obsolete too early in your career,” explains Fournier. It will also help you recognize where process issues are, for instance when deploying code takes too long. Finally, staying close to the code will help you to determine the feasibility of a requested feature.
The necessary project-management skills
Fournier also offers some great advice for successful project management at a management level. For example, when planning, she recommends you bear in mind that you can only really expect to have 10 productive engineering weeks per engineer, per quarter. She also advises allotting 20% of the project time to testing, debugging, cleaning up legacy code, and migrating languages, as well as not hesitating to double any estimates when you’re asked how long a task will take (but make sure you ask for proper planning time when it comes to bigger tasks).
How to manage multiple teams
Managing multiple teams requires you to manage your time efficiently, which “comes down to one important thing: understanding the difference between importance and urgency,” says Fournier. Emails and messages on Slack are often considered urgent but are they really important, she asks. An important yet non-urgent task could be to prepare for meetings or to write job descriptions.
Managers with this kind of responsibility may not not be writing production code anymore, but it doesn’t mean they have to stay away from it. “Code reviews are a good thing to stay in practice with, at least as a secondary reviewer,” says Fournier. It is also possible to perform some debugging, pair programming, and production support.
Deciding when to delegate is also very important here, too. The basic rule, according to Fournier, is delegate everything apart from the tasks that are infrequent and simple. And you should also consider using infrequent tasks that are complex as training opportunities for leaders-in-the-making.
Keeping an eye on the health of the development team is also essential. A good team is productive and satisfied with their work, but Fournier explains how to spot the warning signs of a dysfunctional one. As she goes on to say, “frequency of code change is one of the leading indicators of a healthy engineering team.”
How to manage managers
“People who are good at managing a single team, or even a couple of related teams, fall apart when asked to manage managers, or teams that are outside their skill set,” says Fournier. So what are the key points to follow in order to succeed in this position?
The first advice Fournier gives is to set up skip-level meetings—that is, meetings “with people who report to people who report to [the senior manager]” in order to find out more about the health and focus of the teams.
Learning how to hold managers accountable and making sure they are reporting the hard truth is also key, Fournier says. This is particularly important when things are not going well—causes for this might include the product roadmap being unstable, the tech lead working on tasks that aren’t important, or the team always having to work in firefighting mode.
And to stay technically relevant, senior managers should ensure they are reading code, attending postmortems, or asking engineers to explain particular aspects of the project to them.
It’s also crucial for senior managers to remember that they are no longer part of the team but the person in charge, and remain aware that their behavior will be copied by the team. “If [senior managers] openly make mistakes and apologize, they learn that it’s OK to make mistakes,” says Fournier.
The great advantage of The Manager’s Path is that you can use it as a reference for the management level you are currently at or to understand what is expected from you at the next level. Putting those skills into practice now is how you will get there. The book was written to be practical—each chapter ends with a section called “Assessing Your Own Experience,” with questions to help you improve. And with Fournier’s recommendations for further reading, you’ll also be able to go deeper into some of the points she raises.
This article is part of Behind the Code, the media for developers, by developers. Discover more articles and videos by visiting Behind the Code!
Want to contribute? Get published!
Follow us on Twitter to stay tuned!
Illustrations by WTTJ
C# .NET developer @ CSN Energy
- Přidat mezi oblíbené
- Sdílet na Twitteru
- Sdílet na Facebooku
- Sdílet na LinkedInu