Despite the technical nature of a Software Engineering Manager’s (EM) work, it is still a leadership position focused on empowering others. During my years at Facebook Reality Labs and WhatsApp, I explored multiple strategies to manage and support teams and ensure we achieved desired results and exceeded expectations.
Below, I am excited to share hard-earned insights and best practices for being an efficient EM leader, delivering consistently, and keeping the team happy and well-balanced.
- Define the “North Star.” At times, it’s hard to get the team to focus on what we want to accomplish. We discovered that coming up with a single upper-line metric helps a lot. For example, it’s a tedious job to fix bugs. But what if the team owns the Onboarding Flow, and we tackle bug fixes to increase the onboarding success rate? This way, every person will see the real impact of their work. Moreover, knowing what we are optimizing for, we choose the most significant bugs to be fixed first.
- Monthly Surveys. People tend to vocalize positive feedback and be nice to each other and their managers during everyday business. To get a more accurate picture of the team’s sentiment, consider conducting a quick, anonymous survey once a month. The survey could include 5–10 questions about working with their manager, career support, and intent to stay with the team. Accumulate these answers monthly, study the trends, and do a follow-up asap when needed.
- Recognize Good Work. Make sure to express gratitude and appreciation for your team’s hard work. I built a habit of saying “thank you” at least once a day to someone working with me or the team to encourage and acknowledge their accomplishments.
- Goals and Milestones Document. Each of your reports will appreciate having an individual document outlining their goals for the half (or whatever performance cycle your company uses). Disciplined team members will be eager to keep the document updated with their progress. This way, you and the people you support can identify gaps and hold each other accountable for the deliverables.
- Career Check-Ins. Once a month, replace a weekly 1–1 with each person you support with a “Career check-in” 1–1 meeting. We are too busy to discuss career planning in regular one-on-ones, so having a dedicated slot will significantly help. I suggest having such a check-in for every person you support, whether they are doing just fine, overperforming, or underperforming for their level.
- Individual Metrics. I wish we could establish quantifiable goals for each engineer. Just as simple as the number of pull requests, interviews, documents written, or bugs closed. But in our experience, the individual metrics rarely serve as the upper line/goal. However, they offer a good bottom line to show the bar. Make sure to get alerted when someone drops the ball. You must zoom in and understand the situation when someone takes 3x of average to review the pull request or ignores pings during on-call shifts.
- Work Hours. Agree with your team on the expected online hours and in-office days to foster a collaborative environment. With the time zone differences, we saw distributed teams opt to be online from 10 am to 4 pm in the time zones where most of the group is located.
- Writing. Sharing updates and decisions is crucial, especially in large, distributed teams. Does your team have communication expectations? A good baseline is to provide updates before the start of a project, present each project for technical review before starting implementation, have a weekly or bi-weekly progress update, and broadcast updates during rollouts. And, of course, you want to insist on hearing bad news immediately.
- Performance Notes. Start a private document to track positive and negative events during the week, including notes on directs and partner team commitments. These notes can be helpful during performance reviews, career discussions, and will save you a lot of time writing your own review.
- Weekly One-on-One Meetings. As this has become a standard in many companies, having one-on-one time with each of your directs every week is essential. The agenda for the meeting may be set by both parties, as well as meeting notes captured.
- Projects Sync Weekly Meetings. This is the team meeting focused on execution and high-level updates. Every engineer reporting to you is invited, tech leads are mandatory. Product Managers and other stakeholders are also invited to address any ongoing questions. Someone takes notes — on each project — what was done last week and what is planned for this week. This is also an excellent place to bring up blockers and possible product pivots.
- Workstream Weekly Meetings. Your team owns a bunch of projects. For each project, assign a directly responsible individual (DRI) from the eng team responsible for its delivery. The DRI is expected to hold weekly syncs with other engineers and stakeholders and keep the project tracker current. The EM may attend these meetings and step in only when things are heading south.
- “Strike Team” Meetings. When you need to get something done fast, consider scheduling a “Strike” meeting series. Several times a week, to triage and prioritize issues. This works well when stabilizing the product after making significant changes.
- Build Relationships with Partner Teams. A while back, a partner team complained that I treated them as “contractors,” asking them to fix bugs without giving many contexts or a bigger picture of what was going on in our program. Make sure you treat your partners with respect and take the time to understand their perspectives. Inviting your partner teams to offline gatherings you are hosting is a good idea.
“It’s all personal, every bit of business,” Michael Corleone of The Godfather said. Your partners don’t owe you anything. It’s their goodwill that helps and supports you.
- Daily Walk-Around. It’s human nature to share good news and keep bad news to ourselves, especially when speaking with our boss. Make sure you appreciate getting bad news quickly. Encourage people to speak up. Make a morning habit of checking your project dashboards, stability metrics, pull requests, and on-call chats.
- Be a Role Model. People tend to (consciously or unconsciously) copy the behaviors of their managers. Make sure you, as a manager, lead by example. You care about each person and each project, push for the best quality, and go the extra mile, especially when the road gets tough.
- Everyone is the Leader. Empower your team to operate as CEOs of projects they are responsible for. People own what they build, and when issues pop up, they come to you with issues and their suggested solutions. This topic is worth a deeper dive, and I highly recommend “Turn the Ship Around” by L. David Marquet as a good framework to build this mindset.
That’s it for today! As you embark on your leadership path, remember to prioritize the well-being of your people, showing care and dedication every day. Please comment, ping me on LinkedIn, and share other topics you’d like to discuss about success in tech. Cheers!
Thanks to Igor Podkhodov, Maria Pon, and Jury Govorun for reviewing this post and providing valuable feedback.