After interning at Causes for a few weeks now, I’ve been asked a couple of times what I think defines a great mentor. This is a hard question to answer, because it seems like a good mentor consists of so many qualities (especially if they’re a great one). I’ve personally had the pleasure of having some amazing mentors at great companies. However, when I take the intersection of all the characteristics of these individuals, I find the intersection of “winning” traits is surprisingly small. I’ve decided to list what I think those magical qualities are, relating them back to my own personal experience. I’ll also cover some concrete activities you can do to encourage a great learning experience.


The great mentors I’ve had have always been incredibly patient. People learn at different paces, and it’s easy to forget that a subject you find so easy is something in which your mentee has no experience, whereas you have plenty. Be supportive in their learning process, and when they make mistakes, be constructive rather than critical in pointing them out. Remember that no one intentionally makes mistakes, and sometimes it simply takes repetition to help foster the positive patterns you’re trying to imbue in your mentee’s mind.

In keeping with this, you should strive to encourage an open and friendly relationship with your mentee. One of the worst things that can happen is for your mentee to feel like asking you a question is bugging you. Obviously, there’s a fine line here between asking too little or too often, but erring on the side of too often is better than having a clueless and frustrated mentee. I personally haven’t had a situation where I felt like I was overly imposing when asking questions, but I can imagine how intimidating it would be if I didn’t have an open channel of communication where ideas and questions could be bounced around without fear of wasting someone’s time.


Before you start calling me sappy, let me be specific: empathy is the identification (and sometimes sharing) of the feelings, thoughts, or attitudes of another being. To empathize does not mean you coddle, it means you tailor your mentoring style to that of your mentee’s current mental state. Being aware of what your mentee might be thinking and customizing your teaching to that thought process is an infinitely better method of teaching than the standard same-template-for-all approach. If you sense your mentee is lacking understanding in a particular topic, don’t ask them if they understand—they’ll feel pressured to say yes for fear of making you explain again, or even worse they’ll say yes thinking they understand. Instead, elaborate more on that particular topic, and ask questions to encourage your mentee to actually think, rather than absorb. This will let you catch errors in their understanding and correct them.

Throughout this, remember that your mentee probably feels pressured to perform and succeed—everyone does. When mentees start comparing their accomplishments to yours and other experienced employees in the company, a mild to serious case of Imposter Syndrome can occur, as they’ll feel like they aren’t being a worthy contributor.

One of the most eye-opening experiences I had while working with a large number of other interns was revealing to the others that I felt like I wasn’t succeeding or contributing in any meaningful way. Considering these other interns bright and talented individuals, I was shocked to hear them all reveal the same feelings: a sense of not living up to expectations, of not being worth their salt. We’re sometimes blind to our own successes, and this can hurt our confidence in ourselves and our motivation to succeed. Great mentors understand just how badly their students want to succeed, and do everything in their power to encourage an intern’s success and make them know their contribution is indeed valuable.


This is admittedly a difficult quality to describe, as they say the moment you think you have wisdom, you don’t have it at all. When I use the term wisdom, I’m referring more specifically to experience, not only in the particular field in which you work, but also with regards to life. Being well-versed in that which you are trying to teach is pretty important, but raw knowledge about your domain isn’t the only thing you should try to pass on to your mentee.

With years of experience, a mentor should offer advice that is both prescriptive and practical, ideally something that took them years to learn. You have an opportunity here to give another person a huge leg up in their career–they won’t forget it when the time comes for them to do the same.

I’ve personally enjoyed mentors who not only showed me how to be a great engineer, but also gave me pointers in areas I would never expect. Whether it be advice on traveling, financial planning, or simply living a balanced life, the mentors who have offered me knowledge in areas outside the realm of work always leave the greatest impression.

Some Practical Advice

While I feel the qualities listed above can describe a good mentor for any profession, I was originally asked to discuss some concrete things that an engineer can do to be a great mentor. Listed below are two simple practices that I think are a great way to facilitate a great learning experience for your mentee.

Code Review

Code Review is a valuable way for a mentee to get solid feedback on their work, and also allows you to catch any mistakes they may have made before code goes into production. If you happen to be working at a company where code review is the cultural norm, congratulations! You probably already have a system or tool you can use to give your mentee feedback. If you don’t have such a system, you should instead take the time to sit down with your mentee and go through the code together.

I’ve always seen code reviews as an quick way to learn various nuances of the codebase I’m working in, and the technology stack as well. Especially when it comes to learning a new language, code review allows me to come up with something that works, and then receive feedback on the “right” way to do things. This also gives a mentor a better sense of where the mentee is at in their understanding of certain concepts, and they can address any discrepancies as necessary.

I’ve always looked forward to having my code reviewed. In fact, I feel slightly edgy about pushing something that hasn’t been reviewed. There’s something comforting about having someone else look at your code and point out some things that can be changed (however minor), as it leaves you with a feeling of having a solid set of code in the end.

Pair Programming

Pair Programming is like code review on steroids. You and your mentee sit down and write a piece of code together, taking turns driving. In your working together, you can see areas where your mentee needs improvement, and your mentee can watch and learn from a master through observation.

This is also a great onboarding process, as early on you (the experienced engineer) do most of the driving and your mentee can observe without worrying about implementation details for code they are not familiar with. You can take this time to point out the big picture of your system, and point out any gotchas that might not be obvious, easing them into the company codebase.

My personal experience with pair programming has been very positive. When being introduced to a brand new codebase, I feel that when my mentor is driving I’m able to actually make suggestions and comment on what I see, as I’m not preoccupied with thinking too much about the implications of the code being written. It allows me to feel like I’m being productive despite not writing anything, and I’m still learning the codebase in the process. When I finally get around to driving, it feels like having someone right next to me makes me more productive, as I’m reminded that I’m not only consuming my time but another person’s as well. You don’t end up getting distracted when you’re pairing, which is a huge win.

The Right Stuff

At the end of the day, if you’re passionate about what you do and want to pass on your passion and knowledge to someone else, you’re 90% of the way to becoming a great mentor. The rest is all in how you harness that enthusiasm.

The onus isn’t entirely on you, however—having a good mentee is also very important in fostering a great mentoring relationship. I’ve seen interns who misinterpret constructive criticism as just criticism, and it’s ugly, as both the intern and the mentor walk away feeling like failures. Perhaps a discussion of the qualities of a good mentee are in order for a future post. In any case, I hope this post gives aspiring mentors out there some food for thought. Remember that you’re a big reason why interns want to be an intern, and I think I speak for all aspiring young software engineers when I say “thank you” for your efforts.

Blog Logo

Shane da Silva



Shane da  Silva

Coding by the woods

Back to Overview