Software Engineering through the lens of Simon

My Engineering Team Management Style

Hello reader! Today I want to talk about my time as an engineering team lead and some of the principles and techniques I put in place in order for my team to be effective, efficient, happy and fulfilled. I developed my management style through conversations with my manager, discussions with my colleagues, various management course and perusing the internet for articles on engineering team management.

If you are in an engineering management role then the following may not work for you given your personality, your team members and your company culture. Regardless I hope this post will provide some good food for thought and help you develop your management style, in the same way that other articles about management have helped me to develop my management style.

Trust

From the outset I made the conscious decision to trust that my team members were able to accomplish the tasks given to them. Responsibility for work given to my team ultimately falls on me as the representative of the team and since I do not have time to do everything I need to delegate the work out to my team members. If I am delegating work, then I need to trust that they’ll be able to complete it to my standards without constant monitoring, otherwise I might as well do the work myself! Except that I don’t have time to do the work!

Autonomy

Inherent to the trust principle is the autonomy principle. I gave my team the relative freedom to decide how to go about completing the work assigned to them. I learnt early on not to fuss of trivial things such as code style and architectural decisions as long as the approach by my team was clear and resolved the task at hand.

“Just Right” Monitoring

I tried to be as light as I can with monitoring my team’s work but also enough monitoring that I knew the overall progress and the likely trajectory to completion. The software development process I used certainly helped here (lean/kanban, but I’ll talk about that in a later blog) and I found the following questions useful during stand-ups to tease out information that I wanted:

Importantly, I tried to ask questions of the task itself, not of the person(s) currently working on the task. This meant that when things were not going well the stigma remained with the task itself rather than the person(s) trying to resolve the task. I felt like this helped maintain a less stressful working environment for my team.

Availability

One of the things I learnt from reading various things online and through management courses is being available to my team members so that they chat with me about whatever is on their mind. I blocked out dedicated time in my calendar for weekly 1:1 meetings but I did not require my team to meet with me every week - I did require that we meet at least monthly to ensure that things were going smoothly.

I made sure to periodically remind them that if they ever have something they want to discuss with me they can message me immediately asking for a meeting without having to wait for the 1:1 timeslot. I think this approach made me pretty trustworthy and I found that I was never blindsided by any issues in the team.

Mentoring and Career Development

For the most part, I integrated mentoring and career development as part of the day to day workflow rather than having separate sessions for these. For example: * “I know that you haven’t done this before but I believe you are plenty capable of doing this. Remember, our team is here to support you so if you think you are stumbling too much then let us know!” * “I see you are a bit stuck on how to proceed next. If I was doing this task I would look at [a], [b] and [c]. These seem like good directions to investigate!”

Importantly, not having dedicated mentoring and career development sessions meant less meetings in our calendars! I did do some mentoring and career development during 1:1s occasionally but only when there weren’t any other topics to discuss.

While this was the approach I took during my time as a team lead, I do have a feeling that I could have done better. I had other concerns on my mind which meant I didn’t dedicate as much time to improving this aspect of my management as I should have.

Task Management

One of the things I tried to do is ensure that all work coming into my team was triaged appropriately with clear descriptions. These tasks were put into a stack ordered from top to bottom by priority. With this system there would be no question as to what work is next - it’s always the task at the top of the stack. This was something that I was not consistently doing however, mainly due to the amount of context switching that was going on with my work (see my previous post to read more about this).

Overall this system worked well, my team was able to keep a steady pace of work and they were never confused about what was most important.


The above are some of the things I did as a team lead to ensure that my team was effective and happy. If you are in a management role I hope this post is good food for thought in helping you develop your management style!