Mentoring Software Engineers

By: Matt Brown

Nothing has advanced my skill and career more than being around programmers who are much better than I am at programming. There's something awe-inspiring when you first meet people who are better at coding than you. They are like wizards, commanding all of nature to bend to their will. In an hour, they sling out code it would take you weeks to get finished. Maybe you've gotten a chance to work with these masters of computation and hoped that some of their skills would rub off on you.

The first time I experienced this was when I started my new job at a game company. You hear stories about the game industry: it's hard work, lots of hours, competition can be tough, etc. All of that can be true, but one thing that caught me by surprise is how incredibly smart every single person who works in games is. And this was especially true for the lead engineer, Ryan.

When I met him, he was like a programming god. He knew everything about all of the application’s code: server, client, infrastructure code, you name it. He would write in 3 or 4 languages in the course of the day without breaking a sweat.

I wanted these powers for myself, so Ryan mentored me in what has most likely been the most productive 2 years of my life.

Since I started my career as a software engineer, I've intentionally sought out participation in both sides of the mentoring process. I've watched my father (who's also a software engineer) transform complete newbies into effective and highly respected engineers. From him and others I've learned that good software mentors stress writing more code, encourage finding your own answers, provide challenges, and most importantly are respectful of those less skilled than them.

Write code

I read this all the time (and I'm sure you do too), but it bears repeating: the best way to get better at programming is to write code. If someone you're mentoring is complaining about not getting better, ask her how much new code she’s written recently. There are plenty of resources available for developers to start writing new code regardless of their level of programming skill.

Get them to RTFM

When I was a kid, I would often go up to my parents and ask them how to spell some word or what a word means, and they would almost always tell me the same thing: look it up. It's not that they didn't know the answer (although I'm sure they didn't always know the answer despite both of them having English degrees), they were trying to teach me something.

Trivial knowledge, such as API calls or language syntax, is the sort of thing that is very quick and easy to look up. Encourage the person you're mentoring to Google for answers to simple questions; for example, if she ask you what the syntax for scp is, tell her to check the man page.

Not only will the act of looking things up and reading documentation make your mentee a much better developer, it will seriously cut down on the number of trivial questions you get.

Provide challenges

As a mentor, one of your jobs should be to provide challenges to your mentee. In a mentoring relationship where the mentor is much more experienced than the mentee there's going to be an implicit challenge for the newbie to try to become better than the expert. Offering explicit challenges to your mentee will help push him beyond his notions of what they are able to accomplish and get them closer to becoming a master.

However, you can’t just give a challenge to someone and then ninja vanish. Make sure that the challenges you give are obtainable and be ready to assist. Try to have a good idea of how long a particular task will take and check in with your mentee if the task is taking longer than expected.

Ryan was particularly good at challenging people. Often he would give me tasks, and I’d have to google half of the words he used to even know what he was asking for. But knowing he completely believed in my ability to accomplish any challenge he gave me helped make it possible to complete the challenge.

And the sense of pride I felt on finishing that task made me hungry for more.

Be respectful

Arguably the most important skill you can learn as a mentor is how to show respect to your mentee. You may have more experience, but it does not make you smarter or more important than the person you are mentoring. Here are some very simple ways to show respect:

Why mentoring

Mentoring someone does not just make that person a better engineer, it makes you better too.

By teaching someone else about your craft, you help to further reinforce your understanding. When you challenge someone to move beyond their skill, you think about how you can challenge yourself. Learning to be more respectful towards those with less skill or experience than you just makes you a better person.

Mentoring improves the skills of everyone involved.