/engineering-management

My approach and thoughts on effective engineering management

MIT LicenseMIT

This README no longer maintained. I've left it here as a reference in case other people find this valuable.

This was an experiment that I started in March 2018 with the goal of making my role as an engineering manager more clear.

It had a few successes, notably that expressing the value I wanted to provide forced me to clearly understand that myself. Once I'd written this README I felt much more able to explain my role to my team. I also felt that new people in my team were able to onboard more easily with this document, but that's very hard to prove.

Like many living documents, this didn't work so well when it came to keeping it living. I found that once people had read it once, it wasn't needed much. I tried to keep it as a guide to how various things like catch up and performance meetings would work, but it got left behind and nobody noticed.

If I move to a different role or team, then I might revisit this idea in more of a "here's how I approach my role today" format, rather than a living document.


Sunil Jolly: Manager README

This is a summary of my management style

It reflects what I believe effective engineering management looks like. The goal is to help us work better together by making the reasons behind what I do clear and opening that up to feedback so I can grow as a manager.

This is a living document which I’ll keep updated. That’s the first useful thing to know about my management style, I often change the way I work based on what I’ve learned recently to make me a better manager.

This document is based on other manager READMEs, like this and this.

I’m here to help you to become a high performer at Xero

I believe a good manager can make a company more successful but can also make people’s work lives better. Since we spend 40 hours a week at work, this helps makes people’s lives better. Google’s research around the value of managers is a great summary of what I aspire to as a manager.

In my own words, I aim to help make you awesome by listening to you and trying to understand and empathise with you. I aim to continually set clear expectations, coach, give you honest feedback and inspire you to grow your skills and career.

I’m constantly learning about how to be a better manager and curate a list of articles I find valuable on GitHub which might help you understand more about my management approach.

I’m also here to ensure Xero is a safe place for you to work. I’ll do this by looking out for your physical and mental wellbeing and by making myself available and approachable.

I aim to give you continual feedback

On a daily basis, this might be via Slack, at your desk, in GitHub, in the kitchen or a quick chat somewhere quiet. On a fortnightly basis, this will be at our 1:1 catch ups. On a quarterly basis, this will be at our performance development meetings and reviews.

I’ll aim to tell when I’ve noticed you’ve done something awesome. I’ll also aim to give you constructive feedback when I notice something I believe you could do better next time.

I value your autonomy

You’re here because you’re smart and capable. If I believe you’re thriving with the autonomy you've got: I’ll give you suggestions, but you’ll take ownership of your own solutions. I’ll give you my opinions, but you should disprove me if you think I’m wrong.

If I believe you’re struggling with the autonomy you’ve got, then I may step in and will give you more clear guidance or instructions on what to do.

The same applies for the team. If the team is thriving with its autonomy then I’ll keep out of the way and let the team work its magic. If I feel the team is struggling with its autonomy I may step in and give guidance or instructions on what to do.

I’m a developer as well

I aim to be involved at a code level so that I can understand and empathise with the challenges that the team are facing and keep my coding skills from going rusty. This also helps me have technical discussions around the business to help find opportunities to help the team with its technical challenges.

I aim to spend around half of my time in my developer role, though this will varying depending on my management responsibilities. Unless I’m collaborating with someone else, I avoid working on larger, complex tasks - especially “critical path” tasks. In a typical week I would expect to spend only a few hours doing hands on coding and instead I will typically contribute to code reviews, releases, development support and technical discussions. I aim to spend around half of my time on these kind of tasks though this time will varying depending on my management responsibilities.

I aim to take a step back in team discussions and leave the decision making to the people who are most invested in the work - the team. I aim to offer suggestions and advice to help the team where needed. If I feel the team are making decisions that aren’t meeting the expectations set for them, then I may step in and give the team more clear guidance or instructions on what to do.

I prioritise management responsibilities above everything else

My priorities are management responsibilities > technical meetings > collaborative development > code reviews > individual development.

We’ll have performance development meetings every quarter

These are more commonly called “performance reviews”, but I call them “performance development” since they’re primarily about developing your skills and career.

These will be an hour long and I will have collated feedback from your peers and myself to give you. If I’ve done my job right, there should be no surprises here and it’s a chance to pause for a moment and take a higher level look at what’s happened and where you want to go. It’s a two way conversation and I'll be keen to hear your thoughts and views.

I’ll give you suggestions for how you can build on your strengths and improve areas you have weaknesses in. If you aren’t meeting my expectations in an area, I’ll give you clear information on why that is the case and guidance on how to address this.

I’ll help you to set goals based on the feedback and your own personal objectives, however ultimately responsibility for your goals and your development lies with you.

In between performance development meetings, we'll dedicate a 1:1 catch up to reviewing your goals. The purpose of this is to keep a continual focus on your development and we'll adjust or set new goals as needed. I'll message you before this 1:1 so you have a chance to look over your goals beforehand. If there's anything you want to discuss urgently, then we can reschedule or try to fit both into our 1:1.

Our 1:1 catch ups are to help us understand each other better

We’ll catch up every fortnight for thirty minutes.

If the weather is good, I like to go for a walk along the waterfront. This makes the catch up less formal, gets the brain refreshed and gets us away from the office to help get perspective on things.

This is a chance for me to understand how you're feeling at the moment. It's also a chance for us to give each other some feedback.

Except when we review performance development goals (see above), we'll discuss these questions:

  1. Is there anything you want to discuss?
  2. What are you looking forward to?
  3. What aren't you looking forward to?
  4. Do you have any feedback for me?
  5. Do I have any feedback for you?
  6. Is there anything else that I want to discuss?

Please don’t wait for these meetings to discuss something with me if you need to. Tap me on the shoulder or Slack me if you need me. I can always make time for a chat.

Troubleshooting

I’m human, I have flaws and emotions and I have lots to learn. I need your help to become a better manager.

One of the best ways I can learn is by feedback from you, so please give me feedback in any way you feel best and most comfortable with. That could be in our 1:1s, Slack, email or when my manager asks for feedback.

I learn a lot by making mistakes and in the case of management, that means that I’ll learn by making mistakes when managing you. I’ll aim to be honest about these mistakes when I spot them and will explain how I’ll improve in this area.

The areas that I’ve identified to improve in are:

  1. Giving praise and constructive feedback immediately. I can tend to delay this if I’m busy or if I start dwelling on the best way to give constructive feedback. If I give you feedback that’s unclear or too late, call this out and I’ll do my best to improve the quality and timing of feedback.
  2. Giving clear expectations. I’m still trying to understand the boundaries and responsibilities of my role here and that uncertainty can filter down to my conversations with you. If I give you unclear expectations, then call this out and I’ll do my best to improve the clarity of my expectations.
  3. Time management. I like to have my fingers in many pies, but this means that sometimes I end up with too many things on my plate. If I can’t support you enough or I’m unprepared in our meetings, then call this out and I’ll do my best to find time to support you and be prepared.
  4. Listening. I have a lot of thoughts and ideas bouncing around in my head. At times I’m too keen to get these ideas out instead of listening to what others have to say. If you feel I’m not listening to you enough, then call this out and I’ll do my best to listen actively.