Coaching & Mentoring.

How I approach coaching & mentoring in my day-to-day work.

Coaching & Mentoring are both a means to offer guidance to individuals to help them grow their skills, knowledge and capabilities. Over the years, working with Software Engineers, I have developed a heuristic that I use to determine whether a situation requires coaching or mentoring.

In this context, I am not referring to structured coaching & mentoring relationships where there is an agreed-upon arrangement for offering guidance with a coach/mentor title. Instead, this pertains to an opportunistic encounter with a learning situation. This is part of how I collaborate with other engineers on a day to day basis.

There are 3 questions I try to answer to help me decide whether to mentor or coach:

  1. What level of competency is the individual?

  2. How urgent is the matter at hand?

  3. How interested are they in learning?

Before we get into the details, an important note of establishing the right foundation for a successful relationship.

Trust.

Contrary to what most people believe, trust is not some soft, illusive quality that you either have or you don't; rather, trust is a pragmatic, tangible, actionable asset that you can create - much faster than you probably think possible.

The SPEED of Trust: The One Thing that Changes Everything.

One lesson I've learned over the years is the profound impact of trust in both professional and personal relationships. Trust can either amplify or hinder progress, necessitating careful curation and nurturing for the relationship to thrive. Therefore, I prioritize investing time in nurturing trust before offering guidance to those I work with. I highly recommend dedicating time to earning and extending trust to others before attempting to coach or mentor them.

What level of competency is the individual?

One of the main factors that determines whether I lean into coaching or mentoring mode is the individual's mastery level on the subject matter. Experienced and knowledgeable people usually have the capacity to think through the details, explore alternatives and assess trade-offs in a meaningful way. While less experienced individuals need more guidance, and less room to get lost in the weeds.

To assess an individuals' experience, I do a rough mapping of their skills level according to The Dreyfus Model for Skill Acquisition and if they are in at the Competency and above level I lean into coaching. Posing questions that help them have clarity on what they are trying to achieve, what are they optimizing for, what are the trade-offs, what are the alternatives, what are the short-term vs long-term benefits or disadvantages et al.

On the other hand, for individuals still in the beginner stages, then mentoring is more suitable. First port of call is to understand why they have taken the approach they have so we are aligned on what they were hoping to achieve. If it turns out there is room for improvement, then I propose an alternative based on my expertise and offer backing material in the form of online tutorials, books, articles, videos, or reference implementations. I always give the individual time-boxed time to go through and understand the detail before they start implementing according to their own understanding.

How urgent is the matter at hand?

If the stability of the systems on production is at risk, or if there are time sensitive strategic deliverables needed, then there is not much lee way to coach/mentor in real-time. In these cases, focus is usually on recovering from the incident or making the timely delivery before anything else.

When the urgency has been overcome, the situation presents an opportunity for some reflective coaching and/or mentoring for those involved. In the case of a production incident a culture rooted in learning from failure would be a perfect antidote. Or for a due date met or missed, then an Agile Retrospective provides the ideal canvas to unearth improvements or anti-practices that are impeded progress.

Postmortem cultures are ideal for reflective learnings, and for authors to postmortem document compounded with blameless reviews the growth can be substantial. I advocate and take opportunity to use such reviews to launch coaching and mentoring relationships. Well facilitated Agile Retrospectives also provide a similar launchpad.

How interested are they in learning?

The idiom "you can lead a horse to water, but you can't make him drink" weighs heavily on my mind when deciding whether to put on my coaching or mentoring hat for some individuals. For individuals open to learning, the growth mindsets, the lifelong learners, this is a natural path to take with them. They thrive on closing the gap on what they know today and what they don't so they are intrinsically motivated to seek answers to questions they have. In this case, it is easier to ask the probing questions that would make them think and explore the answers.

There are also situations where someone is not interested in learning a lot about the subject matter, and they simply need guidance to get whatever is in front of them out of the way. In this case, providing more directed guidance is the best option. This is more of mentoring than coaching as they are presented with a clear and pre-defined path to the answers they seek. An example, is a backend engineer troubleshooting a frontend or a devops issue.

Conclusion.

Coaching & Mentoring in the software engineering world are informal ways to offer guidance to individuals. In rare cases, some organisations have some structured formal process that allows individuals to enter into coaching and mentoring relationships. In my experience, I have been involved in the informal on the job coaching and mentoring, and in the above passages, I have shared how I decide whether coaching or mentoring is appropriate for the given situations.

This is by no means foolproof; this is an account of my experience and I am open to feedback on alternatives or critique. If you have feedback, feel free to leave a comment.


Definitions.

  • Coaching is a more about asking questions, providing feedback, and offering support to help an individual improve and develop strategies to reach their goals. Coaching results in self-discovering, and relies on the "coachee" doing the work to get the answers. As a result, coaching heavily relies on intrinsic motivation, which has a long lasting effect on the growth of an individual.

  • Mentoring is where experienced individuals offer guidance, advice, and support to less experienced individuals, with mentors sharing their knowledge, experiences, and insights to help mentees navigate their careers, make decisions, and overcome challenges.

On collaboration.

When pushing someone out of their comfort zone I offer to pair with them. When more than one person is involved in such discussions, then I turn to mob programming. Such collaborations are an effective way to learn, and from personal experience everyone involved learns something. This also applies in situations when I am dealing with plus-competent individuals. Pairing with senior contributors is something I turn to when they show hesitation in adopting a new idea/approach.

Being involved in these collaborative sessions has helped with 2 things. Firstly, it offers assurance that I am vested in the proposed approach and not creating "extra" work for no reason. Secondly, it also gives a great platform to stay close to the implementation and offer more timely guidance should some unforeseen issue arise.

The Dreyfus Model of Skill Acquisition

A simple explanation of The Dreyfus Model of Skill Acquisition, courtesy of ChatGPT follows:

The Dreyfus model of skill acquisition, developed by brothers Stuart and Hubert Dreyfus, is a framework that describes how individuals progress through stages of learning as they acquire expertise in a particular domain. The model outlines five stages of skill acquisition:

  1. Novice: Novices have little to no experience in the domain and rely on rules and guidelines to perform tasks. They typically require explicit instructions and supervision.

  2. Advanced Beginner: Advanced beginners start to recognize patterns and develop some situational understanding. They can perform tasks with less guidance but still lack deep understanding and may struggle in unfamiliar situations.

  3. Competent: Competent individuals have gained enough experience to start making more independent judgments and problem-solving. They can prioritize tasks and begin to understand the bigger picture.

  4. Proficient: Proficient individuals have developed a deeper understanding of the domain and can anticipate outcomes based on their experience. They are more flexible in their approach and can adapt to various situations effectively.

  5. Expert: Experts have a wealth of experience and intuition in the domain. They can perform tasks effortlessly, often without conscious thought, and are highly skilled at problem-solving, decision-making, and adapting to novel situations.

The Dreyfus model emphasizes the importance of experience and practice in skill acquisition, with individuals progressing from reliance on rules and guidelines to intuitive and context-based decision-making as they advance through the stages.