Lead Teams, Not Lines of Code
Tags: leadership, management, cryptocurrency, programming
Published: 2023-10-22 19:51:53

View a tl;dr on [Substack](https://open.substack.com/pub/cmdfang/p/lead-teams-not-lines-of-code?r=2upx1p&utm_campaign=post&utm_medium=web)

Managing people is nothing like writing software. Code is often binary - it either works or it doesn’t. People are messy - they are undecipherable globs of emotions and desires. Developers thrive when given focus time, but effective management requires constant collaboration and connection.

The career ladder for a software engineer usually involves climbing up to a managerial role, but the requirements for an engineering manager are distinctly different from that of a developer. 

This transition is difficult to make, and isn’t meant for everyone. Good engineers aren’t necessarily good managers. If you don’t want to spend your work-life dealing with people, then consider a more technical role (such as a principal SWE).

During my time in a management role, I’ve screwed up many times and learned something from each of those failures. I’ve distilled my mistakes into 3 major themes.

### Mistake #1: Being an engineer

I hinted at this already above, but `management != engineering`. Contrary to popular opinion, engineers aren’t logical robots: They are human. This means that:

- They are irrationally driven by their own goals & desires.
- They have their own private social / family lives.
- They are imperfect communicators.

You are going to fail if you approach management like an engineering problem. The better you become at understanding the influence of human psychology on behavior, the better you’ll become at leading a happier and more productive team.

A lot of this comes from experience, but it also helps to peruse popular books on human psychology.

### Mistake #2: Giving too much autonomy

To be promoted into a managerial role, you are likely skilled in your craft and have a high level of motivation. Don’t assume the same of your coworkers:

- Identify team members who need more supervision. Especially in a remote/hybrid workplace, it’s important to set goals and deadlines with these individuals.
- Identify team members who need more technical guidance, and make sure they have the help they need to unblock their work.
- Identify team members who function best when given autonomy, and shift your focus **away** from them so that they can operate in a way that works best for them.

### Mistake #3: Not protecting your own time

I mentioned at the start that a manager spends most of their time collaborating and connecting with others. This doesn’t mean that you cut out **all** focus time. Especially at smaller companies, managers are also expected to be developers. In fact, engineering managers are sometimes the ones championing the most complex of projects.

You need to be ruthless about prioritizing your own work. Some things that have helped are:

- Block out focus time for yourself in your calendar, during which you prioritize your own work over assisting others.
- Ensure that your coworkers have multiple tasks in their backlog, this means that they can always switch to something else if they are blocked.
- Consciously muting notifications / using focus mode / quitting slack & email so that you can create a quiet environment.

### It's okay to screw up

Becoming an engineering manager means that you have exceeded expectations, but it also means that you're now in a position to fail.

Learning to manage people instead of lines of code is no easy task, but I hope that you can avoid making many of the same mistakes that I have during the process. 

Ignoring and trying to explain away your screw-ups is a fast track to failure. As much as it hurts, embracing and analyzing your mistakes is the only way to become better at this new craft. Success isn't about being the best leader out there, it's about being a better leader than your past self.