SlideShare a Scribd company logo
Technical Mentoring
What works and not
stanly@odd-e.com
@stanlylau
Lives in Singapore
Software development coach / mentor
Agile Singapore 2013, 2014, 2016
http://www.marketingfirepower.info/the-minefield-you-didn’t-know-you-were-in
Code Smells &
Refactoring
Original program:
Making changes:
More changes:
Without refactoring With refactoring
Small change
Refactor
Etc
Mentoring
“A structured self-development method that provides
support to help individuals manage their own learning
and realize their full potential. It is out of the reporting
line, where the experience gap (not the status gap) and
the mentee drive the relationship.”
Parsloe, 2000; Clutterbuck, 2004
Experiments
(informal)
TDD workshop followed by pairing
with team members for two weeks
Tried
• 70% lectures, 30% exercises
• Code exercises from public
• Pairing happens random
Learned
• Pairing related to code were slim
• Assess the current state of automated build
• Some people were defensive
Tried
• StringCalculator exercise
• 20 people, most are new to TDD
Learned
• Most have trouble writing test first
• Questions of applying on their existing systems
• What if we focus only on refactoring first?
Community Mini-Coderetreat
Refactoring Kata
Technical Mentoring, What works and not
Refactoring Kata
Outcome
• They felt confident changing code
• Inspired them to add tests at work
• They added and was unmaintainable
One-on-one Mentoring
Tried
• Prepare a few topics
• Share with me their reflection/learnings
Learned
• Don’t know where to start in long method
• Draw/Model the classes
• Skills often mentioned
One-on-one Mentoring
Common mentioned skills
• Hotkeys
• Understanding Single Responsibility Principle
• Return null vs empty list
• Refactor multiple returns to single return
• Distance of behavior and data (domain object)
• Working with 3rd party webservice API
• Name closer to the business language
Tried
• Remove mines on larger minefield
• More guidance at the beginning & more questions later on
• Ruby on Rails + Travis CI + Heroku + Github
• Topics widen to continuous delivery
Learned / Outcome
• More than half picked up fast
• A few were inspired by the special project
• Prod. release takes < 30 minutes instead of a day
2-week Mentoring with Senior Developers
Four Stages of Competence
https://en.m.wikipedia.org/wiki/Four_stages_of_competence
• Start with Code Smells & Refactoring Workshop
• Code exercises from product’s codebase
• Series of progressive one-day workshops
• One-on-one sessions between workshops
• Hands-on exercises then debrief
• Maximum of 8 participants
• Two co-leaders, me & another from the company
• Platform for growing mentors
Technical Training Program
Anonymised
• One week of preparation
• More than 10 exercises
• Remove code smells always
• Context limited to within the method
• Repetition + little different
• Respectfully intrude and challenge
Refactoring Workshop #1
Technical Mentoring, What works and not
Technical Mentoring, What works and not
What aspects of the course were most
successful in helping you to learn?
“Use Resharper hotkeys”
“Use real production code to practise”
“Approach towards a problem, especially all those
shared examples are very commonly seen code
smells.”
What improvements to the course do you
suggest?
“More examples on how to identify code smells such
as primitive obsession”
“Sometimes I am lost after the trainer expect me to do
the refactoring on the code”
“More sessions"
• More than one week of preparation
• 7 exercises
• Context includes callers and call-ees
• Lesser repetition
• New code smells
• Characterisation tests
• Simplify code using library e.g. JSONConvert
• Model/Draw the classes and interactions
Refactoring Workshop #2
Technical Mentoring, What works and not
What aspects of the course were most
successful in helping you to learn?
“Hands on, new library feature introduction”
“Explanation on speculative generality with diagrams”
“Trying out by ourself how to identify and refactor”
What improvements to the course do you
suggest?
“No comment. But look forward for more workshops
like this in future.”
“More practice examples to be more familiar in
recognizing and tackle the similar code smell.”
“Give some starters before getting our hands dirty.
Some of us might not be that creative and might not
be able to make full use of the allotted time.”
Assignments as a Pre-requisite
Tried
• Part 1: Review a recent code that was refactored
• Part 2: Remove the smells in a refactoring kata
• I’ll respond with my thoughts about their code
Learned / Outcome
• Excellent way to find out where they are
• Opportunity to hear their thoughts
Assignments as a Pre-requisite
“Actually I knew this code smell in my code but I
don’t know any good way to remove this smell, so I
hope I can attend workshop #2 to learn more about
refactoring.”
How many workshops does it take to
reduce the smells in commits?
?
Summary
What works
• Facilitative mentoring for effective learning
• Skill to assess where individuals are
• Appropriate challenge for progressive learning
• A structure to facilitate follow up
• Derive exercises from existing codebases
• Engage and grow internal mentors
What’s not
• Workshop/Training alone is insufficient
• Weak self-awareness of communication style
Thank you
stanly@odd-e.com

More Related Content

PDF
How I help others to level up technical practices
PPTX
2CPP01 - Intro to Module
PDF
Agile Software Development
PPT
Keeping ontology development Agile
PDF
A Rapid e-Learning Primer for Technical Communicators
ODP
Feedback - The Lost Art of Agile
PPTX
Software development fundamentals
PDF
Upscale_Academy_Syllabus
How I help others to level up technical practices
2CPP01 - Intro to Module
Agile Software Development
Keeping ontology development Agile
A Rapid e-Learning Primer for Technical Communicators
Feedback - The Lost Art of Agile
Software development fundamentals
Upscale_Academy_Syllabus

What's hot (11)

PPTX
Agile Development and Implementing Scrum
PDF
Java Training In Coimbatore
PPTX
UC Irvine WICS workshop feb 2017
PPTX
PDF
IntroEngineering.org Wiki
PPT
The Smells Of Bad Design
PPT
User Stories
PPTX
Understanding the Collaborative Relationship between Instructional Designers ...
PDF
2 anton muzhailo - team development techniques you must know to be a valuab...
PPTX
Fine tune and deploy Hugging Face NLP models
PDF
Accelerate the ROI of PHP in your Enterprise
Agile Development and Implementing Scrum
Java Training In Coimbatore
UC Irvine WICS workshop feb 2017
IntroEngineering.org Wiki
The Smells Of Bad Design
User Stories
Understanding the Collaborative Relationship between Instructional Designers ...
2 anton muzhailo - team development techniques you must know to be a valuab...
Fine tune and deploy Hugging Face NLP models
Accelerate the ROI of PHP in your Enterprise
Ad

Viewers also liked (20)

PDF
Metrics that Matter
PDF
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
PDF
Be Ready, Be Done: The Art of Slicing Stories
PDF
Diffy : Automatic Testing of Microservices @ Twitter
PDF
Modern Agile - Keynote at Agile2016
PDF
Value Driven Development by Dave Thomas
PDF
Continuous Delivery Sounds Great but it Won't Work Here
PDF
The Self Selecting Organisation - Total Squadification at Trade Me
PPTX
Sandy Mamoli (Nomad8)
PDF
Agile india leading managing-following - keynote v5 for sharing
PPTX
Mindfulness - Cultivating Agile Minds
PPTX
The Six pillars for Building big data analytics ecosystems
PDF
Examining the Product Owner Role
PDF
Why Scaling Agile Doesn't Work (and What to Do About It)
PDF
BDX 2016- Monal daxini @ Netflix
PDF
Big Data and Data Science @ BNL - D. Morgagni & L. Dell'Anna
PDF
Agile India 2017 Conference
PDF
Agile india2017 devops IT transformation
DOCX
PDF
Big Data Analytics in Energy & Utilities
Metrics that Matter
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Be Ready, Be Done: The Art of Slicing Stories
Diffy : Automatic Testing of Microservices @ Twitter
Modern Agile - Keynote at Agile2016
Value Driven Development by Dave Thomas
Continuous Delivery Sounds Great but it Won't Work Here
The Self Selecting Organisation - Total Squadification at Trade Me
Sandy Mamoli (Nomad8)
Agile india leading managing-following - keynote v5 for sharing
Mindfulness - Cultivating Agile Minds
The Six pillars for Building big data analytics ecosystems
Examining the Product Owner Role
Why Scaling Agile Doesn't Work (and What to Do About It)
BDX 2016- Monal daxini @ Netflix
Big Data and Data Science @ BNL - D. Morgagni & L. Dell'Anna
Agile India 2017 Conference
Agile india2017 devops IT transformation
Big Data Analytics in Energy & Utilities
Ad

Similar to Technical Mentoring, What works and not (20)

PPTX
Code refactoring
PDF
Code refactoring workshop (in Javascript)
PDF
July 2012 Ruby Tuesday - Lana Lodge - Refactoring Lighting Talk
PDF
Refactoring 2TheMax (con ReSharper)
PDF
From Mess To Masterpiece - JFokus 2017
PPTX
Refactoring in Software Reengineering .pptx
PPTX
Refactoring, 2nd Edition
PDF
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
PDF
Code Refactoring in Software Development
PDF
Achieving Technical Excellence in Your Software Teams - from Devternity
PPTX
Technical Excellence Doesn't Just Happen - AgileIndy 2016
ODP
Xp days ukraine 2012
PDF
The Power Of Refactoring (php|tek 09)
PPTX
SAD10 - Refactoring
PDF
So You Want to Start Refactoring?
PDF
Legacy Coderetreat @Budapest 2013 02 16
PDF
Keeping code clean
PDF
Day2 - Refactoring (Lecture SS 2015)
ZIP
Introduction to software craftsmanship
PDF
Refactoring Fest
Code refactoring
Code refactoring workshop (in Javascript)
July 2012 Ruby Tuesday - Lana Lodge - Refactoring Lighting Talk
Refactoring 2TheMax (con ReSharper)
From Mess To Masterpiece - JFokus 2017
Refactoring in Software Reengineering .pptx
Refactoring, 2nd Edition
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Code Refactoring in Software Development
Achieving Technical Excellence in Your Software Teams - from Devternity
Technical Excellence Doesn't Just Happen - AgileIndy 2016
Xp days ukraine 2012
The Power Of Refactoring (php|tek 09)
SAD10 - Refactoring
So You Want to Start Refactoring?
Legacy Coderetreat @Budapest 2013 02 16
Keeping code clean
Day2 - Refactoring (Lecture SS 2015)
Introduction to software craftsmanship
Refactoring Fest

Recently uploaded (20)

PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
PDF
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
PDF
Soil Improvement Techniques Note - Rabbi
PDF
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
PPTX
UNIT - 3 Total quality Management .pptx
PDF
737-MAX_SRG.pdf student reference guides
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
Fundamentals of Mechanical Engineering.pptx
PDF
A SYSTEMATIC REVIEW OF APPLICATIONS IN FRAUD DETECTION
PDF
PPT on Performance Review to get promotions
PPTX
Safety Seminar civil to be ensured for safe working.
PPTX
UNIT 4 Total Quality Management .pptx
PDF
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
PPTX
communication and presentation skills 01
PPTX
Current and future trends in Computer Vision.pptx
PPTX
Information Storage and Retrieval Techniques Unit III
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Automation-in-Manufacturing-Chapter-Introduction.pdf
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
Soil Improvement Techniques Note - Rabbi
null (2) bgfbg bfgb bfgb fbfg bfbgf b.pdf
UNIT - 3 Total quality Management .pptx
737-MAX_SRG.pdf student reference guides
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
Fundamentals of Mechanical Engineering.pptx
A SYSTEMATIC REVIEW OF APPLICATIONS IN FRAUD DETECTION
PPT on Performance Review to get promotions
Safety Seminar civil to be ensured for safe working.
UNIT 4 Total Quality Management .pptx
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
communication and presentation skills 01
Current and future trends in Computer Vision.pptx
Information Storage and Retrieval Techniques Unit III

Technical Mentoring, What works and not

  • 1. Technical Mentoring What works and not stanly@odd-e.com @stanlylau
  • 2. Lives in Singapore Software development coach / mentor Agile Singapore 2013, 2014, 2016
  • 5. Original program: Making changes: More changes: Without refactoring With refactoring Small change Refactor Etc
  • 6. Mentoring “A structured self-development method that provides support to help individuals manage their own learning and realize their full potential. It is out of the reporting line, where the experience gap (not the status gap) and the mentee drive the relationship.” Parsloe, 2000; Clutterbuck, 2004
  • 8. TDD workshop followed by pairing with team members for two weeks Tried • 70% lectures, 30% exercises • Code exercises from public • Pairing happens random Learned • Pairing related to code were slim • Assess the current state of automated build • Some people were defensive
  • 9. Tried • StringCalculator exercise • 20 people, most are new to TDD Learned • Most have trouble writing test first • Questions of applying on their existing systems • What if we focus only on refactoring first? Community Mini-Coderetreat
  • 12. Refactoring Kata Outcome • They felt confident changing code • Inspired them to add tests at work • They added and was unmaintainable
  • 13. One-on-one Mentoring Tried • Prepare a few topics • Share with me their reflection/learnings Learned • Don’t know where to start in long method • Draw/Model the classes • Skills often mentioned
  • 14. One-on-one Mentoring Common mentioned skills • Hotkeys • Understanding Single Responsibility Principle • Return null vs empty list • Refactor multiple returns to single return • Distance of behavior and data (domain object) • Working with 3rd party webservice API • Name closer to the business language
  • 15. Tried • Remove mines on larger minefield • More guidance at the beginning & more questions later on • Ruby on Rails + Travis CI + Heroku + Github • Topics widen to continuous delivery Learned / Outcome • More than half picked up fast • A few were inspired by the special project • Prod. release takes < 30 minutes instead of a day 2-week Mentoring with Senior Developers
  • 16. Four Stages of Competence https://en.m.wikipedia.org/wiki/Four_stages_of_competence
  • 17. • Start with Code Smells & Refactoring Workshop • Code exercises from product’s codebase • Series of progressive one-day workshops • One-on-one sessions between workshops • Hands-on exercises then debrief • Maximum of 8 participants • Two co-leaders, me & another from the company • Platform for growing mentors Technical Training Program
  • 19. • One week of preparation • More than 10 exercises • Remove code smells always • Context limited to within the method • Repetition + little different • Respectfully intrude and challenge Refactoring Workshop #1
  • 22. What aspects of the course were most successful in helping you to learn? “Use Resharper hotkeys” “Use real production code to practise” “Approach towards a problem, especially all those shared examples are very commonly seen code smells.”
  • 23. What improvements to the course do you suggest? “More examples on how to identify code smells such as primitive obsession” “Sometimes I am lost after the trainer expect me to do the refactoring on the code” “More sessions"
  • 24. • More than one week of preparation • 7 exercises • Context includes callers and call-ees • Lesser repetition • New code smells • Characterisation tests • Simplify code using library e.g. JSONConvert • Model/Draw the classes and interactions Refactoring Workshop #2
  • 26. What aspects of the course were most successful in helping you to learn? “Hands on, new library feature introduction” “Explanation on speculative generality with diagrams” “Trying out by ourself how to identify and refactor”
  • 27. What improvements to the course do you suggest? “No comment. But look forward for more workshops like this in future.” “More practice examples to be more familiar in recognizing and tackle the similar code smell.” “Give some starters before getting our hands dirty. Some of us might not be that creative and might not be able to make full use of the allotted time.”
  • 28. Assignments as a Pre-requisite Tried • Part 1: Review a recent code that was refactored • Part 2: Remove the smells in a refactoring kata • I’ll respond with my thoughts about their code Learned / Outcome • Excellent way to find out where they are • Opportunity to hear their thoughts
  • 29. Assignments as a Pre-requisite “Actually I knew this code smell in my code but I don’t know any good way to remove this smell, so I hope I can attend workshop #2 to learn more about refactoring.”
  • 30. How many workshops does it take to reduce the smells in commits? ?
  • 32. What works • Facilitative mentoring for effective learning • Skill to assess where individuals are • Appropriate challenge for progressive learning • A structure to facilitate follow up • Derive exercises from existing codebases • Engage and grow internal mentors What’s not • Workshop/Training alone is insufficient • Weak self-awareness of communication style