How to be an awesome coach
Teaching programming edition
Hi! If you are reading this you are probably coaching or you want to coach someone. That means you are an awesome person. The world grows through sharing knowledge and it’s great you are taking part in that. Go you!
I have had the luck to be coached by many brilliant people, and to work with many inspiring people as a coach. To me, teaching is an utmost fulfilling and rewarding experience. Trough the exercise of describing concepts and ideas, you can observe how the horizons of both parties involved expand tremendously. It’s beautiful. The more if it is programming.
I love programming. I love programming because I love making and creating. I love teaching programming because the more people learn how to make and create the richer our world would be. If you love making things and want more people to be able to live that joy as well, consider coaching someone!
There are many different situations you can find yourself in where you can have the role of a coach. It could be in an academic environment, a short workshop, a mentorship programme, some freestyle coaching. In all of the situations:
- Encourage, support and inspire.
You have the privileged position of instilling passion for learning and hunger for knowledge in your mentee. Take this seriously!
The human element in learning is really important. Being at the beginning is hard and having someone taking the first steps with you is priceless. - Make a plan. But really, make it. Spend some time on it. You will almost in every case have a limited time, and a certain goal. When teaching total beginners programming, you have a lot of concepts to cover. Almost every second word in your sentences in the beginning will be a new concept (try to be mindful about the technical jargon!). If you don’t take the time to make a proper plan how to introduce them, you will make it harder on the mentee. Even if people are not total beginners, you will greatly increase the success of the coaching if you spend some time crafting a plan.
I plan to make a follow-up post in detail about planning as it is a subject in itself and very important. - Never say “it’s easy”.
You have to take a step back and adjust perspectives. Ask yourself: how was it for me when I didn’t know this? Try to put yourself in your mentee’s shoes. This will improve your approach in not overwhelming them, as well as avoiding crashing their confidence with declaring things “easy”. - Teach them how to search for answers.
Show them that you don’t know all the answers. Show them that it is not important to know all the answers. Show them that what is really important is to ask questions. Show them how you do that.
Make a mistake and paste the error in your search engine and press search. Go trough a Stackoverflow or a random forum answer and try to implement what it says. Show them how to query the global knowledge on their specific problem. The best thing you can give them is the confidence and tools to search for their own answers. - Let them do the work themselves.
Always remember that your role here is supportive, not lead. You can show off your brilliance elsewhere, but here you are in the position to let someone else’s shine through. You should go through every concept a 1000 times, introduce all the tools they need, give hints in hard times, but you should never do the actual work for them. While mastering something, you need to go through the experience of making the mistakes yourself, as essentially, you get better at solving the new problems by recognising the patterns of old ones. Please let them take the feel of that, and have all the victory moments for themselves. Needless to say: never ever take their computer and type for them. - Listen.
Ask a lot of questions, and listen to the answers. Listen how they describe the problems and solutions. Try to catch their way of thinking and help them improve, or be amazed by it and learn something yourself. Often ask about the “why”, and use the chance to check if the things you have been learning about in the past meetings have sunk in. Be genuinely interested and don’t judge. - Give feedback.
Your mentee will be hungry for feedback. They are unsure of every step they make, so they will be looking up to you a lot. Be constructive in your criticism, and remember to say many well-dones and great-jobs and you-are-corrects. If it is a longer term coaching, review code promptly and leave meaningful comments. Open up the next learning sessions with feedback. If it is a one day or short term coaching, give feedback throughout the continuous introduction of new things: “You absolutely nailed this part! Well done! Here there seems to be a little problem as this indicator here tells us. Do you know what it is? Please feel free to try guessing. An excellent point, but it would help if we think about it in a bit different way…” and so on. - Share your network with them.
You have been around for some time and you can easily find your way in the tech community. All that buzz could look a bit foreign or intimidating to a new comer. Introduce them to groups and individuals who can help them further with learning and reaching their goal, and talk to them about the all the meetups, events and conferences out there that they could also take part in. Help them by spreading the word in your network if they are looking for a job. The social capital is extremely valuable to a struggling learner, be generous with it.
And most importantly — HAVE FUN. Learning is enjoyable only if it’s pleasurable and fun. Don’t stress yourself or your mentee. The biggest goal should be acquiring new skills, not finishing the curriculum or delivering apps. There will be plenty of time for that in the future.