Welcome!
Hi this is John with this week’s Developing Skills - Skills for Developers looking to develop their careers.
If there is a topic you’d like to see covered, please let me know by replying to this email📧
Tip of The Week: You’ve Got To Know When To Teach ‘Em, Know When To Mentor ‘Em, Know When To Coach ‘Em…
As a software engineering leader, it’s crucial to address any gaps in the skillset, aptitude and behaviours of your team. Not only will it keep your team productive but it will also foster growth, adaptability, and satisfaction among your engineers.
The challenge, then is to choose the most effective way to support your team’s learning and development.
There are three primary approaches you can use: teaching, mentoring, and coaching. Each offers unique benefits, but their effectiveness depends on the needs of the individual and the team. Understanding when to apply each method is key to cultivating a high-performing team.
Teaching
Teaching is the direct transfer of knowledge from an expert to learners. It involves structured learning, such as workshops, courses, or lectures, where a subject is presented systematically and in detail. Teaching follows a clear plan, designed to build understanding from foundational concepts to more complex ideas.
When to Use Teaching:
For foundational skills: When engineers lack essential knowledge in new tools, languages, or methodologies, teaching is the most efficient way to bring them up to speed.
Clear knowledge gaps: If there’s a defined need (e.g., learning a new programming language), teaching provides the structured approach to fill the gap.
Limited time: When there’s a tight deadline and you need to quickly equip your team with specific technical knowledge, teaching can offer fast, targeted learning.
When Not to Use Teaching:
Soft skills development: Teaching is not as effective for developing interpersonal skills like communication, problem-solving, or teamwork.
Long-term growth: Teaching provides short-term knowledge but may not encourage the continuous, critical thinking required for ongoing development.
Experienced engineers: Experienced engineers may already possess foundational knowledge and benefit more from hands-on guidance or situational learning.
Mentoring
Mentoring is a relationship-focused approach where a more experienced engineer (mentor) guides a less experienced engineer (mentee) over a period of time. This relationship allows for informal learning through discussion, feedback, and advice. The mentor shares with the mentee their thought process, explaining how they would tackle a problem.
When to Use Mentoring:
Career growth and guidance: Mentoring is ideal for helping engineers navigate their career paths, offering advice not only on technical skills but also on industry trends, leadership, and soft skills.
Building confidence: For less experienced engineers who need support and encouragement, mentoring can help them grow confidence in their abilities through regular feedback.
Long-term development: Mentoring works well for sustained personal and professional growth, where incremental improvements and thoughtful reflection on experiences are key.
When Not to Use Mentoring:
For immediate technical skills: Mentoring isn’t designed for rapid, intensive learning. If the team needs to master a specific tool or skill quickly, mentoring may not deliver fast enough.
Mentor availability and expertise: If mentors are not well-matched in terms of expertise or availability, the mentoring relationship may not yield the desired results.
Coaching
Coaching is a goal-driven process where a coach helps engineers unlock their potential, usually through structured questioning, active listening and reflection. Coaching focuses on empowering individuals to find their own solutions rather than providing answers.
When to Use Coaching:
For problem-solving skills: Coaching helps engineers improve their decision-making and analytical skills by encouraging them to think through problems and find their own solutions.
For high-performers: Coaching can be particularly useful for experienced engineers who want to enhance their leadership, communication, or strategic thinking.
For behavioural change: When a mindset or attitude adjustment is needed (e.g., improving team collaboration or handling stress), coaching is a great tool to foster introspection and self-driven improvement.
When Not to Use Coaching:
For technical skills acquisition: Coaching isn't the best method when your team needs specific technical knowledge. It's more about fostering development in skills such as leadership, communication, or adaptability.
For skill acquisition: Coaching focuses on helping the person apply what they already know, if they need to acquire new skills, use teaching or mentoring as appropriate.
For novice engineers: Coaching might be less effective for inexperienced engineers who lack enough foundational knowledge to ask the right questions or drive their own solutions.
Choosing the Right Approach
Upskilling your software engineers is crucial, but it’s important to choose the right method depending on the situation. If your team needs to quickly learn new tools or methodologies, teaching is the best route. For sustained growth and personal development, mentoring offers a nurturing environment, while coaching helps unlock an engineer’s potential, driving high performance and behavioural change.
By understanding when to apply each approach, you can tailor your upskilling strategy to meet both the immediate and long-term needs of your team.
Two Ways I Can Help You Level Up As A Software Engineer:
I write another newsletter, Coding Challenges that helps you become a better software engineer through coding challenges that build real applications.
I run a YouTube channel sharing advice on software engineering.
John I just read this helpful post of yours. Had I known before I'd have linked this as an additional resource to my latest post. Your post does a great job of describing and differentiating the three with examples.