Whether mentoring a five-year-old or a fifty-year-old, there are surprising parallels. This write-up is an aggregate of how lessons learned mentoring my children can be applied professionally. I include practical examples from both kid and professional contexts. Feel free to skip over these.
When our children were born, it was hard for me to grasp just how little they knew. Not only were they ignorant of everything, but they didn’t understand how to apply what they do know. A child might know that “Stove is hot” and “hot hurts,” but still be in utter disbelief when they touch it anyway! Over many lessons, many trials, and many errors, I discovered that I was learning a far more important lesson than my kids - how to be a great mentor.
Abstracted away from the technical and interpersonal complexity found at work, leveling up kids creates a nearly perfect laboratory environment for studying mentorship. Kids are innocent, trust you completely, need only basic material, and are (usually) eager to learn. Kids give you years to try new things, observe what they’ve retained, and build upon it. My children became my mentorship lab rats, helping me upgrade my mentorship game.
Even further, I was playing this game on hard mode due to some (now managed) developmental delays. My wife and I read countless books, took parenting courses, and received additional professional coaching. This write-up is an aggregate of how these lessons can be applied professionally, with some practical examples sprinkled in.
A Foundation for Great Mentorship: Collaborative Problem Solving
Background: The Collaborative Problem Solving model was developed by Dr. Ross Green to help behaviorally challenged kids. I’ve simplified the nuance of the model to focus on what applies in professional contexts. Dr. Green chose to rename the model “Collaborative & Proactive Solutions” after Mass general hospital
When mentoring, most people focus on sharing information and teaching tasks. However, the value a good mentor provides isn’t just the knowledge of some new task. It is the reasoning, independence, and decision-making skills we nurture. Over time, teaching moments aggregate into a virtuous circle of confidence, competence, better judgment, and, ultimately, independence.
The Collaborative Problem Solving model helps us equip mentees to solve their own problems. We provide mentees the assistance they need without solving their problems for them.
- Listening (with empathy) - Listen to how your mentee frames their problem. Do they have the right information? What context are they coming from? What are their blockers? Do they feel frustrated? Give them the space to finish explaining before moving on. Fairly often, helping a mentee talk through their problem is all the help they need.
- Kid examples: Let’s imagine we hear our child screaming: “Get off!” Our goal is to understand the child’s perspective, be empathic, and diffuse tension. “Let’s all slow down. Help me understand what is happening. I want to help. … How did your sibling make you feel frustrated?” In the context of parenting, de-escalation and helping children understand their emotions is paramount.
- Professional examples: Perhaps you’re reviewing a pull request for a bug fix that includes some problematic, deeply nested conditional logic that’s begging for a better abstraction. Ask your mentee to walk you through the code, using their own words to frame the problems they’re trying to solve. They might realize the issue before you point it out.
- Inject and Align - At some point, we all incorrectly frame problems, miss important context, or focus on the wrong problems. If you see your mentee needs guidance, now is the time to inject your concerns and align everyones’ thinking. In the best case, ask leading questions that prompt your mentee to reevaluate and discover the right framing. If your mentee can think their way through it, they’ll be better able to apply their learnings next time. Of course, be more direct when required. Once everyone is aligned on the problem, solutions often become obvious. If not, on to the next step!
- Kid examples: In the “Collaborative & Proactive Solutions” model, this step is called “Define the Problem.” It is where a parent would introduce their concerns to their child. “I’m sorry your sister took your blanket. I would be very frustrated, too… [Pause] …but what can happen when you yank out the blanket from under her feet?” Here we would gently lead the child to understand the concern, getting increasingly specific if they don’t discover it on their own: “What could happen if she is on the blanket and you pull it?” “Could she lose her balance?” “If she fell, could she get hurt?"
- Professional examples: Let’s return to the deeply nested conditional logic example from before. After your mentee has explained their perspective, help them discover your underlying concern: “How hard will it be to maintain this conditional logic? Will other devs be able to understand it quickly? Could we make this logic easier to test?"
- Brainstorming Solutions - Let your mentee lead as you brainstorm to help them find a good solution. Ask your mentee what they’ve tried. Encourage them to speak up, even if their ideas are not well-formed. Ask leading questions, help them find the right path, but, ideally, avoid giving mentees their solution. You might even suggest just taking a break: Provide some helpful resources - blogs, documentation, etc. - and give them time to digest and figure it out. Whatever you do, don’t let your mentee flounder or feel helpless.
- Kid examples: If we continue with the blanket example, you might ask questions with increasing specificity: “What other ways could you have gotten your blanket back?” “Could you have asked nicely?” “Who could have helped you?” If questions start to feel like a quiz or test, feel free to be more direct. In the end, we’re enabling kids to build the capacity to solve their own problems.
- Professional examples: Continuing with the previous example, mentors should help find a solution but avoid directly providing it. You can lead the mentee toward it, gradually increasing levels of help, asking “Are there ways to make this easier to read/understand? What abstractions can we use? Here are some good examples; let’s try to apply them to this case?” Don’t let mentees flounder - be more direct when needed. After you’ve agreed on a solution, follow up with other empowering resources - an applicable blog post or book for future review will help reinforce learning.
1 Prepare Yourself
- A slow, multi-step process - Be prepared for a slow, multi-step process, especially if you’re mentoring beginners. They’ll miss things the first time around and you’ll have to repeat yourself. As long as they are putting in the effort, keep any feelings of impatience or frustration in check. It will only discourage them.
- Model desired behavior - Your mentee is undoubtedly observing you - probably more closely than you realize. Don’t be that annoying parent/manager: “Do as I say, not as I do.” Practice what you preach. For many, this can be the most challenging aspect of being a great mentor.
- Be Approachable (with limits) - Most mentoring happens spontaneously, driven by context-specific questions. “My friend was being mean to me” “What’s the best practice in this case?" “I cannot figure out this error message." When a timid mentee approaches, be available. Boundaries are reasonable - you surely have other work to do - but ensure mentees feel safe approaching you.
- Set Goals - Think about what your mentee should get out of your mentoring efforts. Perhaps more capacity or independence to fulfill a specific role? Defining those goals can be involved and context-specific, so we’ll leave that discussion outside the scope of this article. However, even loose goals will help guide and organize the mentorship.
2 Create a Learning Environment
- Trusting and Safe - Mentees need to feel comfortable, safe, and free from judgment. Make sure they know that you support them and that mistakes are not just normal - they’re expected! Reinforce this message often. Ideally, your team has a culture of sharing and learning from each other’s mistakes without judgment. Save the judgment for when those mistakes make it to production! 😛
- Kid examples: When our kids practice writing, our daughter is constantly trying to “flex” on her brother. “My rocket is much better than yours.” He gets embarrassed and discouraged. Now, we ensure we have focused, one-on-one time where he won’t feel competition or judgment from his sister.
- Professional examples: If you’re in a small open office, other teammates within earshot can be enough to make a mentee self-conscious. If possible, isolate your discussions so your mentee doesn’t feel judged. Remind them that mistakes are a part of the learning process. Demonstrate your team’s culture of learning from each other.
- Tailored Approach - Take time to get to know your mentee and their capabilities. Where are they strong? What are they missing? What are they afraid of? Are they comfortable with more direct feedback, or do they need a softer hand? Learn where you can help them push their comfort zone without letting them flounder.
- Kid examples: The deep end of the swimming pool terrified one of our children. After carefully listening, we discovered it wasn’t the depth that was frightful - it was the darker blue. After all, what if there were sharks down there!? Only by addressing the “darkness” rather than “deepness” could we help conquer fears of that scary blue end.
- Professional examples: Let’s say you’ve tasked a fresh hire to transform some JSON with
jqand other command-line tools. They struggle. You could take the task away from them, but that will hurt their confidence. Instead, figure out why they’re struggling. Are they afraid of the command line? Do they how to use
manor find documentation? Do they need a little help breaking down which commands to use?
- Empowerment - Does your mentee know how to get unstuck on their own? Do they know where to find documentation, how to navigate your internal knowledge base, where to ask questions, or when their mentor is approachable? Empowering your mentee to navigate challenges independently is probably the easiest thing you can do to help them build confidence and capacity.
3 Align Context and Expectations
- Common Understanding - Good managers ensure a common understanding of a task’s expectations, value, and business/technical context. This is especially important during mentorship, where skill and information asymmetry are more pronounced. As a mentor, it’s easy to make assumptions your mentee won’t share. Be explicit. Get aligned.
- Don’t Trivialize Complexity - Avoid saying things like “X task is easy, let’s give it to the mentee.” Tasks easy for a mentor might be quite challenging for a mentee. Let mentees communicate their own perceptions of complexity.
4 Begin with Best Practices
While your mentee doesn’t need to learn every best practice upfront, what you do teach - teach it the right way. It is far easier to learn and practice the right way to do something than to re-learn it later.
Kid examples: Most kids learn to write their names in all capital letters. Our kindergarten teacher tells us she regularly has to reteach kids to write their names with both lower and uppercase characters. It’s slow and, even years later, kids still forget. If taught the correct ways, years of re-learning and frustration could be avoided.
Professional examples: Many devs have never been taught the importance of a project’s commit history. Start early teaching good commit messages - don’t accept “bug fixed,” “spacing,” or “oops.” Another example might be teach mentees to embrace linters and avoid arguments over code formatting. Of course, trying to mentor every single best practice can be overwhelming - choose wisely.
5 Break Tasks into Digestible Chunks
- Break it Down - Nothing can feel more overwhelming than a giant task one doesn’t know where to start. For the inexperienced, even the simple stuff can seem daunting - “Upgrade this dependency,” “debug this issue,” “Open a PR,” “Clean your room,” or “Draw a rocket.” We need to help our mentees break down daunting objectives into achievable tasks. This is a key area to apply the Collaborative Problem Solving theory discussed earlier.
- Kids examples: Instead of “clean your room,” break things down. Lead with questions “How could we start,” or “What could we clean first?” If the child doesn’t know - don’t let them flounder. Ask “What if we start with these pillows?” or “What about these blocks, where do they go?"
- Professional examples: Instead of asking a mentee to “Upgrade XYZ,” we could provide more context and try asking, “How could we learn more about upgrading this dependency?” “How worried should we be about the upgrade?” “What is a good first step?”
- Multipass - Another great way to deconstruct large tasks is to tackle them in multiple passes or iterations. This is similar to how you might apply TDD with “red, green, refactor.” It helps mentees learn in smaller, more digestible chunks. Let’s say you were reviewing a pull request for three commits called “fix bug,” “oops better bug fix,” and only then is there a commit to “add tests for bug.” The first pass might focus on improving the commit history (i.e., Begin Early with Best Practices). In a second pass, teach your mentee to validate bugs with automated tests before attempting to fix them.
6 Quick and Precise Feedback
Provide feedback quickly and precisely.
- Quick Feedback: Help mentees evaluate their actions - if we delay feedback, we force our mentees to guess what they should do more of or stop doing. Delayed feedback can cause major course corrections later, which requires more rework, disrupts flow states, and hurts our mentee’s confidence.
- Precision: Especially in situations with large skill asymmetry, vague feedback isn’t terribly helpful. It puts the burden of interpreting and responding to that feedback on the mentee - the person least skilled in doing so. Instead of “This could be better,” say “these functions are doing too much and should be abstracted away.” Instead of “Great job,” say “Great job testing that edge case.”
Types of Feedback: Praise & Correction
The feedback you provide generally falls into two categories: corrective and praising.
- Correction - We want to give our mentees the opportunity to discover and correct their own mistakes. Occasionally, you’ll need to be more proactive. You’ll need to jump in to save your mentee from large, time-consuming mistakes. When you do intervene, lead mentees to discover their errors with little nudges and leading questions before being more direct and firm.
- Kid examples: If you were putting together some Legos, a good question might be, “Are you sure that piece goes there,” or “should we double-check the directions again?” If those subtle hints don’t work, a mentor could slowly escalate. “I think a different piece might go there,” or “why don’t we try this one."
- Professional examples: Starting with a slight nudge, you might say, “Are you sure your tests include relevant edge cases,” and give your mentee some time to reevaluate. If they still aren’t there, gradually get more specific, ending at: “Can you add a test to cover XYZ?”
- Praise - We don’t always notice when we’ve succeeded - compliments for a well-done task grease the wheels of motivation and reinforce desired outcomes. Don’t overdo it - too much praise starts to feel insincere. Also, be specific - it shows you’re paying attention and ensures you’re reinforcing the right things. In the best case, you can praise both the desired behavior and results.
- Kid examples: “Wow, those clouds were so carefully drawn - I can see you took the time to make the curves very even,” praises both the result (nice clouds) and the behavior (taking time), “Every Lego is in the exact, right spot. You followed the directions perfectly,” praises the result (legos in the right spot) and the behavior (following directions).
- Professional examples: “Nice job keeping those queries performant. No one noticed that missing index” is very specific. “Thanks for thinking through the edge cases, these tests do a great job covering them” praises both the effort (thinking about edge cases) and the result (good test coverage).
7 Provide Emotional Support
Some mentees won’t take disappointment personally, but others will struggle with imposter syndrome. Don’t let your mentee get discouraged and help them deescalate frustration. Exactly how depends heavily on context, but try sharing your own more vulnerable moments or stories from other developers you’ve helped.
In the end, everyone needs to understand that failure and frustration are expected parts of learning.