How to get the best out of your team

Like with most of the content you find on the Internet, you should take this article with a grain of salt 🙃

As an engineering manager, trust is the most important resource you are working with. It is the foundation of the relationships you will create, and the main fortune you should aim to build.

Trust comes in so many different shapes, but fundamentally it boils down to the confidence people have in you to not let them down. If you do let them down, you damage some of the trust, and rebuilding it is much more difficult than losing it.

Here are some of the principles that have helped me in keeping a high level of trust:

Don't micro-manage

This is so clear and so much talked about, that there's not much more I can say about it. If you find yourself micro-managing or micro-managed, there's something wrong. Go and fix that first.

Listen carefully and genuinely

Listen carefully and with the intent to act. If you are given feedback, act on it. If you hear somebody struggling, set aside time to think about how you could help, and then do it.

Sometimes listening can be a form of therapy, and it's best to just listen what the other has on their heart and mind. But a lot more often, it is the time when you are getting the most important clues of where you can add the most value.

Take notes

Managing teams consists mostly of small tasks and working with a lot of interruptions. Adapting to this was a challenge for me, and learning to take effective notes was key to navigate that. I eventually converged on something that's heavily inspired from Getting Things Done - GTD and I use Emacs and org-mode to manage the notes. Org-mode is awesome (this is a fact, not a biased opinion 😛).

Give ownership, responsibility and recognition

Engineers should be trusted with fully owning their tasks/projects and become responsible for the outcome. Poor performance should be handled early with direct feedback, decent outcomes should be pushed to become great, and great outcomes should receive recognition. Like a currency, recognition can get easily devaluated if used too much.

Don't forget to celebrate the wins: small or big, individual or team wins. The small wins are often the neglected ones, but they are paving the way to large progress.

Getting to the point of full ownership requires a lot of work in several areas: the engineering culture, the working habits, the tools and the processes. Some of the most obvious are:

  • Make sure everyone understands the "Why" behind a project or feature.
  • Have a trusted relationship to foster continuous communication, especially when tough topics need to be brought up: for example delays or friction within the team.
  • Build culture of learning from mistakes. Something went wrong this time? Then allocate time to understand why, and how you can avoid it next time.
  • If you give responsibility, then give freedom to act and ways to be asked for help

Be honest

Always be honest, and don't sell BS. Engineers are smart and will not buy it, certainly not if you do it multiple times.

If you must pass BS from high management to your team, be very careful. Push back if you can, give feedback on why you think it's BS, and try hard to understand the message and how you can communicate it best.

Managing up is equally important as managing down, and it's your job to bridge the two worlds and not let them drift into their own bubbles.

Be honest, concrete and direct with the feedback you give. Avoid generic feedback and always mention the situation/context, the concrete actions you give feedback on, and the negative effect these actions had. The focus of the feedback should be the actions that need to improve, and not the person.

If you have real deadlines, communicate them clearly, and equally important communicate why the deadline exists. Don't impose arbitrary deadlines to projects, nor allow all time in the world ("work expands so as to fill the time available for its completion"). It's one of the many balancing acts you need to perform.

Be humble and admit your mistakes and lack of knowledge

Engineers will trust you a lot more if you have strong technical skills, and you understand very well what they do.

But when you don't know something, be honest, go figure it out, and get back when you know it. Set time aside to keep up with the knowledge required to understand well what your team is working on, and always be curious.

Maintain a high standard for technical quality. Great engineers want to work with great engineers, and they get demotivated if the quality standard of their project is low.

Involve engineers early in the process

Involving engineers in the early stages of a project/feature is not only motivating, but also very helpful. The engineers know how long something takes or how it fits with the rest of the code, and these are key insights that should go in the initial phase of shaping up and deciding a feature.

This may not apply all the time, but it does a lot more often than not, so should be the rule and not the exception.

Be fair

Compensation and promotions should be fair. As fair as you can humanly do it, and fight bias as fiercely as you can. The squeaky wheel should not get undeserved oil, and the loud voice should not get undeserved benefits.

Don't create a sucking up culture and make that clear very early.

While ideal meritocracy doesn't exit, and while it's hard to measure merits, that's not a good reason to stop working hard towards it. Not being fair is one of the most damaging factors to motivation and trust.