80% of the Engineering Managers I talked to considered going back to developer roles at some point. Some actually did that.

In today’s article, I’m going to share how I keep my sanity and enjoy the role (spoiler - delegating important things). As usual, based on personal stories and mistakes :)

Why is it so hard?

The responsibility and scope of work are overwhelming. You need to:

  • Interview and hire

  • Train new employees

  • Perform code reviews

  • Deal with the day-to-day

  • Have 1:1s with your developers

  • Work with the PM on the roadmap

  • Create a long-term vision for the team

  • Handle alerts and production incidents

  • Write technical designs and lead new epics

  • And somehow still find time to write quality code!

The first few months are ALWAYS a complete mess. You are stressed out in the best-case scenario, or burned out in the worst.

This is what worked for me:

Delegating the work on these 2 things - dealing with the day-to-day and leading new projects.

Dealing with the day-to-day

What wasn’t working

Before being promoted, I was a senior developer on the team. I loved knowing everything that was going on, jumping on every Pagerduty alert or Sentry error.

This habit moved with me to my new role. In the first year, the support team talked only to me. I handled 50% of the production issues (the rest I passed to the team only after understanding the problem) and I still investigated all the alerts.

It made so much sense to me:

✅ I kept the team from being distracted

✅ Important things got done fast, as I saw the whole picture and could prioritize

✅ Nothing fell between the chairs, there was no confusion about who is responsible

But in reality…

⛔ I kept the team from valuable experiences (and knowledge)

⛔ There was a huge bottleneck. Me. The response rate was slow.

⛔ When I was away - everything fell between the chairs

“But how can you delegate the day-to-day?”.

Turns out you can.

What did I change

After a year, we implemented ‘The Team Rep’ (short of representative). It’s a concept I took from being a DevOps team lead, which at first I didn’t find relevant to a Fullstack team.

It works like this:

  1. Every day, there is a team member who is the Rep*

  2. The Rep is responsible for:

    1. Monitoring all alert channels

    2. Helping the support team in anything they need

    3. Debugging new issues

  3. The Rep is NOT responsible for fixing everything! If developers release a bug, they will be the ones fixing it (mostly). But the Rep will Coordinate it, and learn something new along the way.

* Tip - make sure it’s on the calendar. I created a recurring meeting, with guidelines. It’s very useful for the first couple of weeks.

I expected some resistance from the developers, but there was ZERO. Good developers enjoy knowing what’s going on, and having more responsibility. And in practice, it doesn’t take more than an hour each week (except in rare cases, with big production incidents).

Note: Don’t leave yourself out of the cycle. It’s important to share the load, and understand how the day of the rep looks like.

Benefits:

  • No single point of failure (passing the ‘bus factor’)

  • Increased ownership and debugging skills for the developers

  • A feeling of ‘we are in the same boat’. Much healthier in the long term.

Do you have any questions about the process? Ask in the comments, I’ll reply to each one.

Leading new projects

What wasn’t working

I had an assumption this was the MAIN thing I should do as a team leader:

  • Prepare a high-quality technical design.

  • Verify that the decisions the PM makes are sensible.

  • Break down the Epic into chunks, so it’ll be easier for your team to start working.

It took tons of time from me and isolated the developers from the rest of the organization. It took me 3 years of management (and 1 in the current role) to understand I can share that work.

What did I change

Each Epic/effort now has a team member assigned to it.

They are responsible for:

  • Meeting with the PM

  • Doing the technical design

  • Breaking it down into small tasks

  • Deciding on the work distribution among team members

At each step of the way - I’m involved. I share my thoughts and suggestions, without withholding anything on purpose. My involvement changes, based on the scope of work, and the experience of the developer. But they make the decisions.

Benefits:

  • Valuable experience for your developers - no matter the career path, the skills learned are super useful!

  • Increased quality of technical design(!) - As each developer leads only one project at a time, they can be 100% dedicated to the work, without skipping steps

  • More time for you to focus on other important areas

Summary

It’s worth revisiting once in a while what takes you time (and energy), and whether you can delegate it. Some things you definitely can’t (like 1:1s), but they are rare.

4 tips to remember:

  • Delegation is not about throwing off responsibility to others. It’s about sharing it.

  • Never delegate 100% of a specific area. Do it yourself once in a while.

  • You can share at least 50% of your current work.

  • It helps the whole team when you do it.

Reply

Avatar

or to participate

Recommended for you