In software development, we have a tendency to glorify the self-taught. It's understandable—self-directed teaching is an important skill! Our industry changes rapidly, and to keep up we have to do some of the learning on our own. However, we tend to underestimate how powerful it can be to learn from someone with hands-on experience.
A direct transfer of knowledge can speed up the learning process and supply real-world context, clarifying why we solve problems in specific ways. Many industries have the concept of apprenticeships for this very reason—but in software development, the human component of learning is commonly overlooked.
Even if you're not involved in a formal mentorship, you've probably experienced some form of mentoring in software development. We frequently help out newcomers, share new concepts with one another, and even do pair programming. While some of us have had gratifying experiences learning collaboratively, there are others whose interactions have probably felt cold or impersonal. A successful mentorship is like an art: it has the power to combine human connection and empathy with knowledge and experience. In this post, we'll cover some fundamental approaches to mentoring that highlight the human aspect of learning while teaching.
Everyone starts as a beginner; at some point, you were one too. When you're mentoring, make an effort to remember your early learning experiences and be open about your triumphs and failures. Your job as a mentor is to be a voice of experience—the good and the bad—so your mentee can forge their own path, armed with the ability to spot both opportunities and potential pitfalls.
Be upfront with what you don't know. If you're asked a question you don't have the answer to, use it as a teaching moment: take the time to research with your mentee and sketch out possible solutions together. This will show them that it's okay not to have all of the answers, and helps them understand the problem-solving process for similar dilemmas in the future.
Memorization isn't an effective way to learn software development. A solution presented without context or reasoning is quickly forgotten. Say you ask someone how to approach a common problem in a project, and they give you a list of steps to handle it—you don't want to take up too much of their time, so you hurriedly follow the steps to handle the problem. Did you learn what caused it? Will you remember the solution if the problem occurs again?
Understanding the motivation and context behind an answer not only helps mentees retain the lesson, but also creates a framework of reference they can apply to similar problems in the future. Teaching the "why" is just as necessary for the mentor as the mentee: explaining something out loud to another person—or even a rubber duck, in the case of rubber duck debugging—reaffirms the mentor's knowledge and deepens their own understanding of the problem.
Remember, people seek mentorship because they are looking for personal guidance. A mentor should ensure they have enough time available to provide it, and make sure to offer direct support first (if possible) when questions arise. Immediately referring a mentee to an external resource avoids the human element of mentorship and feels impersonal, which can leave the mentee feeling discouraged from asking for help in the future, or even damage the relationship.
Think of a time you've had an issue with a service, like a bank. Your first instinct is to call the company and speak directly to a person to figure out the problem. Naturally, you become frustrated when your call is handled by an automated phone support system, because you want to resolve the issue quickly, with an actual person. Say the problem persists and you repeatedly try to reach someone for support, but are repeatedly redirected instead of getting through to a human. Would you continue to use that bank?
Of course, it's okay to refer a mentee to another resource if you don't know the answer or as a way to provide extra information about a solution, but the most successful mentorships will try direct support first.
One of the best benefits a mentor can bring to the table is their professional network. Involving other smart, capable people in a person's learning process increases their chance of success. Introducing your mentee to people you work closely with can amplify the mentorship experience without losing the human touch. Your network can provide additional support by being available when you are busy, or answering questions that you can't. They can even serve as subject matter experts if the mentee wants to deepen their knowledge on a topic beyond your expertise.
Sharing your network with your mentee doesn't just provide extra support they can rely on; it teaches them how to collaborate effectively with different individuals in the field, which will help prepare them for the rest of their career in software development.
When we keep the human perspective of learning in focus, a mentorship can be one of the most fulfilling relationships we will ever experience. The empathy and understanding required for teaching and learning builds bonds that can last well beyond our time at any one company. And if we do our jobs right, the genuine human connection can serve as a lasting example: a blueprint for the people we're mentoring today, helping them turn around and mentor future generations of software developers.