Dev Coaching

Notes on my developer coaching style

Two people bumping fists

What is effective developer coaching? 💡

At its heart, you’re a facilitator.You help someone to help/teach themselves to unlock their growth.

Listen 👂

To coach well you need to listen to what the other person is saying. Don’t assume you know or have the full context of the issue they’re presenting with.

Understand how they like to learn 🤔

Some people like reading tutorials.‌‌Some people like finding courses.

‌‌Some get on best with videos they can play/pause.‌‌

Some need to learn the theory before they can dive into the detail.‌‌

Others like to have a go and then build their knowledge along the way.

You need to meet them where they are, not the other way around.

Encourage them to think through their problem with you 🗣

Often just operating as a “rubber duck” is all the other person needs to get themselves unstuck.‌‌‌‌ You want to hear them out, gain context of their situation before you jump to helping them solve it.‌‌‌‌ Let them explain to you what they think their problem is, and the solutions they’ve tried so far.

Doing this means you can encourage them to come up with ideas for solutions, and build their knowledge.‌‌‌‌

If they list a couple of ways of solving something, and they’re nearly on the right track, you can tell them that.‌‌‌‌

This sort of approach helps them build their own confidence and ways of problem-solving.‌‌‌‌ It stops them from relying on you to just give them the solution.

Patience ☺️

People learn different things in different ways, and at different speeds. When you know the solution, this can mean you feel like you’re sitting on your hands.‌‌‌‌That's ok!

Encourage devs in the team to look after each other 🤝

Sure, you’re the coach, you’re the facilitator, or the lead or whatever the role is, but you should be looking to make yourself redundant in the teaching process.‌‌‌‌

If you know of another dev on their squad or in the wider team who can support, then bring them together and step out of the way.‌‌‌‌ You can still be there to help if necessary, but this sort of cross-dev support helps both devs build and cement their knowledge.

It also means you can take a holiday without things grinding to a halt because you were a bottleneck in the learning process.‌‌‌‌ You can’t be everywhere at once, too.‌‌‌‌

Juniors can look after other juniors if they have a better understanding of an area, or if they’ve just recently learned that thing.‌‌‌ Don’t wait for some marker of them officially reaching more seniority if you’re aware of any of their capability.

Look for win/win situations ✅✅

Sometimes teams are balanced wrong, or people just have personality clashes.

As a coach, sometimes part of the role is navigating these things, and making changes to the wider situation where everyone benefits.

This can mean moving someone off a team/task, or bringing someone else in.

Sometimes it can be a case of just letting people vent on both sides of a situation. You can then mediate quietly on each side to try and encourage more productive behaviour.

Psychological safety ✋

Devs cannot get the best out of you if they don’t feel safe talking to you.‌‌This means constructive criticism of course, not tearing someone down.

This can mean things like not playing “PR table tennis” with a big list of comments.‌‌Have a chat if you notice something that needs detailed feedback.

A call can be better than DMs 🤙

Try not to cold message someone with “I need to talk, can we have a call?”. Give them some heads up as to why/what too.

It’s easy for people to feel like they’re in trouble if a call comes out of the blue and they have no context from you.‌‌‌‌ Instead try and go for something like: “I spotted a few things on your PR and was wondering if you have time to have a call about them"

Iterate in progressive cycles ♼

So, you have someone who is brand new to a particular API or way of doing things, and they’ve just been given a big ticket of work in that area.

Help them break it down into sub-tasks. Have them work through these, coming back to you when they’ve completed one or if they hit a wall.

‌‌‌‌If things are going well, then you can start to bundle the tasks together before they come back to you.‌‌‌‌

You should be looking for them to go longer and longer without needing support, as they pick up the new skill.

Pair programming 👥

Pair programming remotely can be tricky. Make sure you’ve got the dev’s screen share on the biggest screen you have.‌‌‌‌

As you talk them through things, call out line numbers as well as things like function or variable names. ‌‌‌‌It can be easier for a person to follow you, if say “can you just go to line 100 there…” rather than stating names of things.‌‌‌‌ Once there, you can talk through the code itself.

Sometimes it can be easier to drive rather than having the dev go through things from their side.‌‌‌‌ Take extra care to ensure you're being followed if you're sharing your screen and talking through code.

Assign learning material 📚

If someone is learning something brand new or is quite junior, then it can be appropriate to have them spend some time in tutorials or example code first.‌‌‌‌ Sometimes people need guidance on this; if they're feeling particularly pressured you may find they're trying to teach themselves outside of working hours. ‌‌‌‌As a coach, you need to combine knowing their learning style, with your knowledge of materials, to help find them the appropriate thing.

For example, for an iOS engineer, this may be a case of finding the appropriate WWDC session, or a Hacking With Swift tutorial. Have them watch/do the tutorial, and then come back to you with any questions.

Sometimes, it is easier to demonstrate via a blank project that demonstrates the thing you’re trying to help them with in isolation. You can have a call to run through this, and give them the example code too.

Group it up 👫

If you have something that you’re explaining, where you know you’re going into depth (or creating example projects to do so), then have a huddle and invite others to join!

‌‌‌‌Sharing this sort of thing with others is usually quite useful. You will often any others who join the call will ask further questions or even help support you in teaching.

Record it if it’s in-depth! 📹

Use something like MS Teams, and record a session if you’re explaining to a group with a preprepared example.

It’s usually worthwhile rather than repeating yourself again and again in separate calls and meetings!

Last but not least... 🚀

Make your coaching style your own!

‌‌‌‌This list is not meant to cover everything, and started as a brain-dump after a Slack conversation.

Watch how other coaches do what they do, attend others' sessions, read blogs, watch Youtube videos on all sorts of different coaching.‌‌‌‌

Find what works for you!‌‌‌‌