Managing developers requires balancing many different forces. Developers are independent. They dislike meetings and anything else that keeps them from coding.
At the same time, you need to ensure that they're all working in concert in accordance with the team's and organization's goals. Developers pride themselves on their analytical abilities. But they have the same monkey brains as everybody else, with all the emotions that entails. As an individual contributor, you might previously have been tasked with actually doing the work. As a manager, however, you're responsible for more than just the work that you individually do.
Leading a group of people to work toward a common goal is always challenging. And because developers are central to the functioning of many organizations, not leading them well can be very detrimental to the success of the company. So, doing a good job is critical.
This post is about how to manage developers, with concrete tips you can take and implement in your own organization.
Overview of How to Manage Developers
In general, the way you manage developers isn't much different from how you'd manage anyone else. People are people, no matter what profession they're in. Generalized management tips will work. Not being rude, leading by example, listening, and putting people where they succeed matter just as much when managing developers as they do when managing other types of workers. Applying the basics will get you far.
On the other hand, there are some characteristics about development that make it different from other types of work. You'll need to adapt to these as you manage developers.
The Paradox of Managing Developers
Software development is highly skilled knowledge work. As such, developers need a lot of time for what computer scientist Cal Newport calls "deep work," cognitively demanding tasks that produce a lot of value. Frequent meetings, that staple of the knowledge economy, don't work well for those who write software.
In addition, modern work practices like offshoring and nearshoring mean that your workforce may be remote. Remote work brings its own challenges. Shoddy internet connections, time zone differences, and the information lost from communicating virtually as opposed to in person can complicate the transmission of information necessary to manage others.
Concrete Tips for Managing Developers
Now that you have a general idea of the unique challenge of managing developers, I'll share some concrete tips on how to do this. With them, you'll be able to get the developers on your team to work effectively toward your organization's goals.
Leave Time for Deep Work
First, one of the most important parts of managing developers is to give them ample time to code. This can be tricky for managers because what "ample time" means for a manager is wildly different from what it means for a developer.
Computer scientist Paul Graham has written about the difference between the maker's schedule and the manager's schedule. Makers like software developers require long stretches of uninterrupted time, such as an entire morning or afternoon. You need a long time to get into a flow where you can really think about a problem. As such, interruptions are very damaging. The time it takes to deal with an interruption and then get back into a flow state could eat up hours. These setbacks prevent you from delivering the results people depend on you for.
Managers operate differently. You can get things done in minutes. A lot of your job is checking in on people and having short conversations. While working this way, it can be easy to lose the perspective of the maker. That little conversation in the afternoon can be harmless to you but extremely damaging to the developer. They might not tell you, but the quality of their work suffers.
The way to solve this is through common development project management systems, like scrum-based development. In such systems, it's common to have a standup meeting at a set time each day. This meeting gives you the chance to see how everybody is doing, ask questions, and coordinate everyone's efforts. Outside of that, leave your developers alone. Let them work.
Put the Person First
Try to make a personal connection with your developers. This doesn't mean being best friends with them, but rather understanding that your developers are people first and developers second. They have their own personalities and lives outside of work.
Take some time every once in a while to see how your team members are doing. Let them talk about anything that's on their mind. Ask them how things are going, inside and outside of work.
Getting a deeper understanding of who they are will allow you to lead more effectively. People are different. As a result, they respond differently to leadership tactics. For example, one person may need direct feedback. Another may require a softer touch. Someone might have a child to pick up from school, so they're less available in the afternoons. There are introverts, extroverts, and everything in between.
Getting a sense of your developers will allow you to lead them in a way that will bring out the best in them. Using the wrong tactic, however, can backfire, causing conflict and lost productivity. That's why it's important to get this right by knowing your people.
Next, as a manager, one of your duties is to be available for your team when they need help. As someone with more experience, you'll be the one your developers turn to when they have a problem.
Allow the time in your schedule for people to come to you, and help them get unstuck.
Document, Document, Document
On the other hand, you're one person. Having everybody coming to you for every problem and question would quickly create bottlenecks and impede productivity. As such, you should create resources for your developers to turn to. These may include:
- Documentation for common problems so that when they arise, your developers can turn to that resource to know how to solve them
- A repository of common knowledge and files that developers often need
- Someplace where people can know what's being worked on by who
This will eliminate a lot of the "where is X?" and "how do you do Y?" questions that would otherwise take up a lot of your time. The tool that you use matters less than that these systems are in place. Over time, as knowledge builds up, your team will become more independent and be able to get work done faster.
Set Ground Rules
Finally, don't be afraid to set ground rules about how people in your team should behave.
It's common to like flat organizations with little hierarchy, but someone has to be in charge. As a manager, that person is you. Get input from your team when making decisions, but remember that, ultimately, you have the final call. Give people their tasks, and make sure that they stay within the boundaries previously agreed upon. This will keep development running smoothly.
You also need to set boundaries for yourself. If you're going to be unavailable, communicate that so people know where you are. You may have issues outside of work to attend to. Let people know where you'll be and what they can—and can't—expect from you during those situations.
Remember That You're Not Alone
In your management journey, you're not alone. When your developers are stuck on a problem, they go to Google, Stack Overflow, or a colleague for help. You can do the same. If you're struggling with a problem, odds are that someone out there has encountered the same problem and dealt with it. Different teams and companies lead to different management styles and solutions for the issues that arise in a manager's career. You can see what others have done in similar situations and learn what approaches will work best for you.
Tapping into the knowledge of your peers, inside and outside of your company, will make you a better manager. LinearB provides a community where managers like you can learn from each other and connect. By joining their Discord server, you can be a part of it.
Managing Developers Requires a Shift in Perspective
By leaving time for deep work, putting people first, being available, documenting how to do things, and setting ground rules, you'll be able to get the most out of your development team. You'll create a productive and happy working environment, and you'll be a manager developers enjoy working for.
The thing about management is that it requires a different skill set than what you've practiced earlier in your career.
Before, you could disappear and bang out code. Now, you need to be available to your team. Before, you were responsible for your piece of the codebase. Now, you're responsible for more than what you individually create. You once leaned on your technical skills. Now, you rely on your soft skills.
With this guide, you'll have some tips to put to use so that you can effectively manage your development team. By following these tips, you and your developers can work together well and contribute to achieving your company's goals.