When you manage a software engineering team and someone tells you that great engineering management doesn’t exist, it can be more than a little frustrating. Because you know it does.
In fact, the degree to which software engineering management has been debated and deliberated is somewhat surprising.
Apparently, there are those who believe our commitments to code can curb our capacities to lead.
Daily Standups, Check-Ins, & OKRs.
14-day free trial. No credit card required.
I can relate to both sides of this argument. On one hand, managing a team doesn’t always come easily to great engineers who prefer to continue working in parallel positions alongside other great engineers.
On the other hand, teams often need a superstar supervisor to facilitate collaboration, unite everyone around goals and prevent burnout. And in my experience, the best managers are the ones who don’t feel like they have it all figured out but instead are continually making adjustments and adopting different approaches.
The best managers are the ones who aren’t afraid to step in and help, and also understand the intricacies of each job title below them. They’ve spent their time in the trenches. Now it’s their time to lead an effective team.
“The Best Managers Are The Ones Who Don’t Feel Like They Have It All Figured Out”
I know how challenging it can be to lead a group of autonomous engineers—or any group of employees, for that matter. So, for what it’s worth, I’d like to share my current go-to list of nine things all great engineering managers do.
9 Elements of Great Engineering Management
While these best practices and leadership qualities reflect my viewpoint in engineering, they can be applied to many other disciplines, departments, and roles such as product, marketing, sales, and human resources.
1. They Hire Well
PayPal’s Max Levchin said it best in his interview with First Round Review:
“There are some legendary-ish tales of me not hiring people because they used the wrong word in an interview…It’s better to err on the side of losing a superstar here or there than make a hire that’ll disrupt or ruin a company.”
Levchin and the early team at PayPal simplified the hiring process by bringing in people they knew, spurred by a belief that “the most foolproof way to recruit a good person is to know, over years of interaction, that the person is great.”
One of the most surefire ways to set up your team for success is also the most basic: Hire people with proven track records of innovating and producing, set some simple standards and then…well, let them get to work.
Here’s how Juan Montemayor approaches hiring decisions at Rackspace:
“I’m a big believer in team dynamics and ensuring everyone will work well together. So when it’s time to hire, that’s what I look for. It’s not that we’re looking for a specific aptitude, but rather the right sort of disposition—the right temperament and the right style for our team, specifically. Communication is the number one skill because we are always collaborating and sharing.”
Of course, this is often easier said than done. And many managers are inheriting, rather than hiring, the teams they lead. So while having a say in who gets hired can help, there are plenty of ways to get even the most divided team back on track. This brings me to common characteristic number two…
2. They Get Out of the Way
If there’s one thing great engineers tend to be really good at, it’s working autonomously. I’ve found that when you have a brilliant software engineer in your midst, it’s best to get out of her way and be available for support as it’s needed.
In TechCrunch, Metamarkets founder Michael Driscoll shared why he considers protecting an engineer’s time as one of the most important roles of a manager.
“The foremost priority of good engineering management is protecting the quality of your engineers’ work time and ensuring a distraction-free office environment.”
Great managers figure out how to support the team without getting in the way of progress. For example, effective engineering managers—while technically competent—aren’t making many technical decisions anymore. Instead, they’re empowering teams to make those recommendations and decisions. They’re probably not even approving pull requests, opting instead to rely on team members to review the product and keep each other accountable.
Actionable tip: Take autonomy a step further by allowing your team to work remotely as frequently as needed, regardless of where they’re located.
3. They Stop Coding
There’s no way around it: To become a manager, you’ll have to give up something you love. In engineering management, that something is coding. Engineering managers face an ongoing battle to balance the need for leadership with a desire to continue coding. But what if I told you that you don’t need to quit doing what you love?
Marketers might struggle to give up control of content management systems and automation programs. Human resources directors sometimes fight the need to pour over every job application.
Regardless of what type of team you lead, I’d bet there’s at least one thing you miss doing.
But…
At some point, you have to stop to lead. At least for a little while. Great managers make successful transitions by recognizing that their primary job is to manage people and hone their leadership skills. None of this is possible if you’re devoting hours every day to working in the trenches.
4. But…maintain technical competence and help out your team when they need help.
Joan Gamell said it well in Hacker Noon:
“Hands-on, technically competent managers are the best leaders for engineering teams.”
Although their days are no longer devoted to coding, technically competent managers will still keep a finger on the pulse of the tools, technologies, and methods their teams are using. As Gamell put it, the technically competent manager understands the hidden complexities of the tasks team members may struggle with. This makes it much easier to communicate and mentor, and to recognize when a new approach may be warranted.
Something as simple as taking online courses and reading up on the latest industry news and trends can go a long way in letting the team know you can still “cook.” While the head chef may not do much of the hands-on day-to-day work, she certainly knows how to keep the restaurant running if all other kitchen staff quits. Also, a good manager steps in when it’s necessary. If a manager’s sales team is struggling to field the incoming volume of phone calls, a good manager helps the sales team out by answering phone calls. Don’t be afraid to get in the trenches and work with your team. Your team will respect you for it.
5. They Set Effective Goals
To manage a team effectively, you need to set good goals. It doesn’t matter how talented or driven your employees are; if you’re not working toward a common objective, there’s no way your team is going to help drive the business forward.
I’m not saying it’s imperative to have your vision perfected before you launch a new project. In fact, devoting too much time to deliberating on team goals or objectives and key results (OKRs) can actually do more harm than good. The best goals are usually the ones that evolve along with the performance and needs of your team.
Actionable tip: New to the process of setting, sharing and scoring team goals? We’ve put together an OKR template you can use to get started.
6. And Minimize Meetings
By taking a “less is more” approach to meetings, effective management will limit unnecessary interruptions and protect those precious hours when employees are uber-focused and ultra-productive. They know better than to insist on regular attendance at group brainstorming sessions and daily standup meetings, which can eat up valuable time that could otherwise be spent producing.
Great engineering managers stick to the meetings that are meaningful, such as one-on-ones. For day-to-day matters, they use team collaboration tools to keep everyone in sync without having to pull people away from important work just to touch base.
For a good example of this approach in action, here’s how Fog Creek Software handles team meetings:
“We have weekly random chats with coworkers in other departments, arranged by an open-source tool called CoffeeTime. Every month, we have an all-hands GoToMeeting called the Town Hall where we talk about feelings, problems, upcoming events and company-wide changes.”
Actionable tip: If you’re trying to determine whether or not you’re pulling your engineers into too many meetings, check out the Jell meeting calculator.
7. Engineering Management Still Gets Their Hands Dirty
The work of an engineering team is often punctuated by times of crisis. It’s in these times that great managers build trust and develop a spirit of camaraderie by simply “doing.” They can tell when it’s time to be the first responder, and aren’t afraid to roll up their sleeves and get their hands dirty along with the rest of the team.
For example, in engineering, there are times when a 3 a.m. software patch just has to be done. Good managers will be on-hand to support their teams as they work through it. But great managers know when it’s time to take their turn and do the actual work. They’ll get out of bed, pore through the logs, respond to angry customers, or do whatever else is required to get the job done.
Teams respect leaders who really help—the ones who won’t ask others to do something they wouldn’t take time to do themselves.
Of course, engineering managers are ultimately responsible for building processes to reduce downtime and remove chaos. But they’re also ready and willing to support their teams by working alongside them during tough times. The same can be applied to any number of disciplines: The public relations manager who handles media calls during a communications crisis, for example, or the product manager who interacts personally with disgruntled customers.
8. While Still Thinking Long-Term
I really like what MITer and startup founder Jessica McKellar had to say about this in another excellent First Round Review article:
“There are two things you should always be thinking about: people’s day-to-day and they’re year-to-year. You should imagine every individual is traveling on both of these tracks at the same time. And as a leader, you can shape their experience on both to help them find a trajectory that meets their goals and your needs.”
On the day-to-day front, you can keep employees engaged by holding regular one-on-one meetings and making the time and space to talk about issues and roadblocks as they come up. As McKellar put it, “You need to balance the efficiency of a structured weekly routine against having the unallocated time to give and receive feedback about the work in real-time.”
At Jell, we rely on a daily team reporting process to help each engineer stay focused on what it is they want to achieve. As part of this structured routine, we keep tabs on progress toward quarterly goals. Employees are also encouraged daily to make it known if any problems are standing in their way and be clear if there’s something they need from other members of the team.
By identifying challenges early on, we’ve been able to catch issues before they lead to bigger problems that could slow down the processes of writing, debugging, testing, and shipping code to production.
Actionable tip: Sync day-to-day tasks with long-term objectives by integrating goals directly into your daily and weekly team reporting process.
9. They Evolve
The best managers know when to stick with a process that works—and when it’s time to try something different.
As engineers, it’s easy to get into the weeds and focus on new software and features as a way to solve problems on the team. But that’s a distraction from what’s usually at the core of the problem: Your processes need to be improved.
Instead of chasing shiny objects, start by mapping out your ideal process for team communication and collaboration. Don’t think about the tools or technology; just focus on the needs of your team. After you have the process nailed down, then you can go about finding the technology that will fit your ideal process rather than the other way around.
Popular Articles
Daily Scrum: The tools, methods, and tips to pull them off successfully
Free OKR template – How to set objectives and key results
5 ways effective teams run daily Slack Standups
In summary, great software engineering managers:
- Hire well
- Get out of the way
- Stop coding but maintain technical competence
- Set effective goals
- Minimize meetings
- Think long-term
- Evolve
As a manager, you don’t need to have it all figured out. It’s a constantly evolving process of becoming the best you can be, and your employees are on this journey with you.
What about you? I’d love to hear what else you’d add to this list via Twitter.