The engineering managers at Localytics have been working together for over a year, and through ups and downs, we’ve grown and learned a lot as a team. The goal of this post is to share some of the lessons we’ve learned with the community. Some of the content is aspirational but all of it is what we believe are best practices for leading software teams, presented to you in cookbook form. We hope these recipes provide value to fellow software leaders as well as a window into our engineering culture.
Weekly one-on-one meetings between managers and reports is a fundamental component to a healthy engineering organization. The purpose of these meetings is for managers to support engineers in their day-to-day work as well as help them define and achieve long-term career goals.
- Schedule a weekly 30 minute meeting with each direct report, preferably Tuesday, Wednesday or Thursday (Mondays and Fridays are often holidays or vacation days).
- Make time to prepare for each one-on-one to make sure you are using the time effectively to support your employee. Options include:
- Send an email or survey before your meeting that solicits the most pressing discussion topics (see Team Surveys below)
- Suggest the employee set the agenda to make sure the discussion starts with what is top of mind.
- Always come prepared with a list of questions designed to initiate constructive conversation (see articles from Other Resources for examples).
- During each meeting:
- Try to facilitate a discussion where the employee does most of the talking.
- Consider getting out of the office. This can help shift from short-term mindset toward broader matters such as career goals.
- At the end of the meeting repeat out-loud, all action items to which you committed during the discussion, include expected date to deliver each item, and make sure to follow through.
- Resource planning will take into account individual career goals because they are well-understood by managers.
- The team will enjoy higher morale because engineers feel supported and unblocked.
- Managers will have a strong pulse on morale and will swiftly respond to morale problems.
- One on One from Ben Horowitz
- Master the One-on-One Meeting and Make One-on-Ones More Productive from Harvard
- Conducting Effective and Regular One-on-Ones from Moz
- A 101 on 1:1s from Spotify
Collecting periodic surveys is another way to keep a channel open between managers and employees. Even if you are holding effective one-on-ones, it is important to augment them with weekly surveys:
- Answers to a well-formed survey can provide important context for one-on-one’s (so make sure surveys are collected beforehand).
- Surveys can be used to extract a superset of data that is relevant to one-on-ones including:
- Discovering priorities on the team (e.g. “What technical debt should we be addressing that we are not?”).
- Providing an opportunity for peer recognition (e.g. “Who on the team is doing a great job?”)
- Soliciting feedback for management (e.g. “What is something I could be doing better as your manager?”)
Surveys should be conducted weekly and be lightweight. 15Five CEO David Hassel believes employees should spend 15 minutes every week to fill out progress reports and managers spend no more than five minutes to read each of them.
- Sign up for an employee engagement or survey tool such as 15Five, TINYpulse or Google Forms.
Create a set of questions designed to elicit informative responses that take 15 minutes to answer. Include a set of standard questions (e.g. “what do you plan to accomplish this week”) and a set of questions that rotate every week.
- Make sure notifications and alerts are setup to collect these at the beginning of the week.
Review all survey responses before the first one-on-one of the week.
- Meet monthly with your management team to review and update the rotating questions to make sure you are pulling the most relevant information.
- Make sure to allocate time to address broader issues revealed by surveys. Weekly manager meetings are a good time to review aggregate survey data, identify trends and develop strategies to address issues.
- What did you accomplish last week? [required, every week]
- What do you intend to accomplish this week? [required, every week]
- What do you feel is going well on the team? [optional, rotating]
- What is not going well on the team? [optional, rotating]
- Where do we have a particularly high bus-factor or single points of failure on engineering? [optional, rotating]
- What part of your work frustrates you the most? [optional, rotating]
- Who on the team deserves recognition for doing a great job? [optional, every week]
- More effective one-on-one’s
- Ability to quickly address a broad set of emerging issues across the department including decreased employee engagement, delayed projects or risk areas in the organization or technology.
- Easier to get funding to address issues if survey results contain clear patterns. For example: "we need to slow down roadmap because everyone feels overworked."
- More frequent recognition for employees who are doing great things.
One-on-ones and surveys will have little impact if employees don’t feel comfortable sharing their thoughts. “Psychological safety” is described by HBS professor Amy Edmondson as ‘‘a sense of confidence that the team will not embarrass, reject or punish someone for speaking up’’. Google has found this to be the most important quality of high performing teams and if any member of your team does not feel that your workplace is a safe environment then it should be management’s top priority to address.
- Include culture questions (these are good) in your next weekly survey to determine how your work environment is perceived by employees.
- Create learning processes for when things go wrong.
- Run blameless postmortems after each production issue or missed deadline. Basically, any event that could precipitate blame should have a corresponding, institutionalized reaction that focusses the team on improving the system and not castigating individuals. A properly executed postmortem is a great tool to accomplish this.
- Run retrospectives after each development cycle and identify things that could be improved. Use a tool such as Awesomeness to run them effectively and track progress.
- Schedule quarterly social or team-building events. Incorporating time for team members to share personal details with the rest of the team is a good technique to improve trust among team members. The best team building event our management team had was a dinner that began by each manager sharing two things with the group: the moment they knew they wanted to code and one thing they are trying to improve professionally.
- Allocate Q&A time at the end of every department or company meeting and encourage employees to ask tough questions. It is important for employees to know this is accepted and encouraged behavior.
- Share research from Google and HBS with company executives and provide them with examples of how they can help foster a safe environment.
- After 3 months send another survey to see if you improved.
- Higher team performance as members develop instincts to improve the system rather than blame their peers.
- More innovation will develop organically from within the teams because employees are more comfortable exploring creative solutions with teammates.
- Higher retention due to happier and more engaged employees.
It can be difficult to find the right format and frequency with which to disseminate status information across a multi-team department. Transparency is important but oversharing can dilute your message and cause information overload.
- Schedule periodic (weekly, bi-weekly, monthly) department-wide meetings
- Connect department effort to company strategy
- Provide time for teams to demo their work
- Celebrate team and individual wins
- Deep dive into technical areas, focussing on those that impact all teams
- Send weekly status emails. If you collect team status from each lead, the information can be consolidated into an email and sent to the department. Help the leads be concise with updates and focus on information relevant to the broader group.
- Create a public
firstname.lastname@example.org to receive notes from any meeting with 3 or more people. This will enable anyone to see discussion points from meetings across all departments and is powerful way to improve transparency across the company.
- Leverage team surveys to determine whether engineers feel siloed from the other teams and/or if they feel there are too many meetings. Use the information to adjust your operating system (meetings, stand-ups, status updates).
- Schedule periodic retrospectives for a management team to review and improve the process.
- Improved alignment. Engineers will feel more connected to the company mission.
- Improved coordination on projects with cross-team dependencies.
- Engineers will feel more invested in other teams missions which will help avoid local optimization.
It’s important to develop teams that are resilient to changing priorities and attrition. This can be accomplished with a thoughtful approach to team size and composition. Teams should be large enough to withstand more than one member leaving and diverse enough to handle a wide variety of work.
- Choose a team lead by focusing on leadership over technical skills. Leads should be able to foster productive team discussions and deliver real time feedback to team members even if they do not manage them.
- Pick 4 to 8 additional engineers and be deliberate about their mix of skills
- At least one engineer should have the potential to assume lead in the event the existing lead moves on. Immediately begin developing her leadership skills.
- Prefer thoroughly full-stack teams. This will help minimize skills-based dependencies on other teams and enable teams to ship features end-to-end which is important for focus and motivation.
- Teams can take up to 6 months to reach peak efficiency so consider how to structure the organization and workflow to keep them together for between 9 to 18 months.
- Allocate budget for the team to schedule social events at least once a quarter.
- Attrition or minor team adjustments will not cause cascading organizational changes.
- Technical debt is better tracked because there is strong continuity.
- Velocity constantly increases since most retrospectives are spent learning how to work together better as a team rather than starting from scratch after a re-org.
The best developers keep up to date of the latest technologies and techniques and so should their managers. Reading blog posts, articles and books are basic ways to sharpen management skills. Many managers don't spend as much time connecting with their peers within the company or industry but learning from other’s experiences one-on-one can be an effective way to step up your game.
- Find available training in your area and seek sponsorship from your employer. Localytics has sponsored courses at local management schools such as Sloan and enrolled most of our managers in Intelligent.ly courses.
- Read some of the great management and leadership books available. Some of our favorites include: The Hard Thing About Hard Things, Good to Great, How Google Works, Rework, The Phoenix Project, Death by Meeting, High Performance Management, and we're eagerly awaiting DevOps Handbook. Bonus: start a management book club in your office.
- Connect with other managers within your company or community by scheduling coffee, one-on-ones or organizing weekly manager meetings. Bonus: start a company-wide manager guild.
- You’ll have a stronger impact on your employee’s career growth.
- More engineers will want to work with you which will make it easier for your manager to expand your role.
- Becoming a great manager makes you qualified to become a manager of managers and help other managers be great.