How to be an Effective Code Mentor - Part 2: Long-term Mentorships
In addition to people looking for help with solving their current/urgent coding problems, there are a lot of folks out there looking for long term mentors who would help them grow as engineers and teach them new languages, tools and frameworks. The opportunity is huge, but you have to keep in mind that long-term mentorship needs a lot more of personal attention and time investment, as now you are responsible for growing and grooming another engineer over weeks, months, or even longer periods of time. Long-term mentorship is all about building relationships based on trust and making sure that everything that you do together will benefit your mentee both in the short and long run.
Having spent over seven years designing, developing and delivering training courses to developers from all walks of life all around the world, I’ve learnt a lot about what works and what doesn’t and let me tell you- it’s a STEEP learning curve. So here are some tips on how to make long-term mentorship program really work for you and your mentee.
Establish why the person wants to learn and set up the goals together
Everyone has some sort of motivation for reaching out to you to learn a new language. Some people want to learn a new language to help them get their dream job, promotion or to change careers; others have a cool idea for a startup but don’t have the technical “know how” to get things started- the list goes on and on.
That’s why it is essential to know their motivation so you can tailor the mentoring sessions around those specific personal goals. If somebody wants to learn iOS so they can write a food-tracking app, then the best way to get them motivated is to teach them hands on, while writing a food-tracking app together! Help them achieve their goals with every session. Be their number one fan and make every minute spent together count.
If they’re looking to learn a new framework to help them get their dream job, then take a moment to set a list of specific features/tasks they need to understand in order to pass the technical tests and get the role. For example, if someone needs to learn Angular for a new job, then it might be a good idea to break the goals down as milestones:
- Write custom controllers & understand $scope
- Be able to write custom directives
- Write custom factories/services/providers
- Describe the $digest cycle
Make sure to assign a timeframe to those milestones. It’ll help you both to stay on track and to be mutually accountable for the work put in. Also, if your mentee is on a fixed budget it will give them a peace of mind, and in case of any delays, you can make the necessary adjustments together.
You’ll find that after a few sessions your mentees will see their own progress and they’ll start hacking away on their own- the feeling of a huge achievement and pride you will experience then will make all the little bumps in the road beyond worth it!
Do NOT run through decks of slides
There’s a time and place for everything in life, including the decks of slides and one-on-one mentoring sessions are NOT IT. Sticking to a script while you present new material can easily turn people and their brains off. That said, it doesn’t mean that you can’t put together a simple slide that will help you explain a particularly complex feature, or one that would be a little “cheat-sheet” for their future reference. Just keep those to a minimum, keep them fully personalized and be thoughtful- including some links that a mentee could read up later on in their own time to further extend the scope of the subject at hand.
Find out what they already know
Education psychologists have shown that kids learn faster when they can use their existing knowledge to hang new information onto. It’s easier to retain new knowledge when it has familiar features, so find out what the person already knows. Maybe they’re a pro in Java and want to learn Objective-C. In that case, show them which Objective-C features are similar to Java (for example compare classes in Objective-C to classes in Java). Show them what’s the same and then focus on what’s different.
Repetition is a key to retention
Let them do ALL the work! Yeah, you read it right. Let them write ALL the code. Some people will want you to write code for them, but that won’t help them learn anything. There’s no shame in telling them exactly what to write on each line (in fact for beginners that’s sometimes the best way) but don’t write anything for them! The more they write, the more they will remember. Simple as that. Don’t be afraid to let them make typos too. Making mistakes is an important part of the learning process. Help them understand what’s wrong, fix it together and they will learn to avoid it next time. Also make sure to double check that they understood what they’ve done by asking THEM to explain it to YOU.
Always remind them that it’s just code
Code works logically, humans don’t. Every problem can be solved with logic, and the limits are our patience and how deeply we want to drill into the framework. Getting stuck on a problem can be incredibly frustrating (especially when you’re a rookie) so encourage your mentees that getting stuck is a natural part of any stage of development. I often encourage students to debug frameworks. It can be a great way to learn more about how others write code and about other people’s decision-making processes. For some people it also opens up doors to contributing their first bug fix, which gives them a real sense of pride and accomplishment.
Long-term mentorship has huge benefits for both parties involved. I’ve found no better way to learn a new language or framework than by teaching it and explaining it to somebody else. It forces you to acknowledge your own gaps in your knowledge and pro-actively fill them up.
So buckle up and get ready for the ride- I guarantee you will get addicted to the thrill of helping others become the best engineers they can be.