SlideShare a Scribd company logo
How I help others to level
up technical practices
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
Early days

First attempts…
How I help others to level up technical practices
Photo: mint.com
Brown Bag sharing

TDD Coding Dojo
How I became better

Scrum Developer course
How I help others to level up technical practices
How I help others to level up technical practices
How I help others to level up technical practices
Experiments

(informal)
How I help others to level up technical practices
How I help others to level up technical practices
Alright, back to topic
Community Coding Dojo
Tried
• StringCalculator TDD 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
Community Refactoring Kata
Community Refactoring Kata
`
Learned
• They felt confident changing code
• Inspired them to add tests at work
• They added and was unmaintainable
Community Refactoring Kata
TDD workshop followed by pairing
with team members for two weeks
Tried
• 70% lectures, 30% exercises
• Code exercises from public repositories
• Pairing happens random
Learned
• Pairing related to code were slim
• Assess the current state of automated build
• Some people were defensive
Pairing
Tried
• From an hour to 10 days
• 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
Pairing
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
• 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
Tried
• Took one week to create
• More than 10 exercises
• Remove code smells always
• Context limited to within the method
• Repetition + a little different
• Respectfully intrude and challenge
Refactoring Workshop #1
Anonymised
How I help others to level up technical practices
How I help others to level up technical practices
Tried
• Took more than a week to create
• Lesser exercises and repetition
• Context includes callers and call-ees
• New code smells
• Characterisation tests
• Simplify code using library e.g. JSONConvert
• Agile modeling
• Assignments as a pre-requisite
Refactoring Workshop #2
Agile modeling
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 provide feedback about their code
Learned
• 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.”
What aspects of the course were most
successful in helping you to learn?
“Explanation on speculative generality with diagrams”
“Trying out by ourself how to identify and refactor”
“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 practice examples to be more familiar in
recognizing and tackle the similar code smell.”
“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"
Supportive
Environment
Effective
Feedback
Being
Competent
Key factors of
helping others to grow
One more experiment…
Developmental Mentoring
Everyone Needs A Mentor by David Clutterbuck
“Mentoring is a partnership between two people built
upon trust. It is a process in which the mentor offers
ongoing support and development opportunities to
the mentee. Addressing issues and blockages
identified by the mentee, the mentor offers guidance,
counselling and support in the form of pragmatic and
objective assistance. Both share a common purpose
of developing a strong two-way learning
relationship.”
- Jenny Sweeney
Goals not limited to…
Able to apply clean code, refactoring, modeling, design principles
and design patterns [1].
Able to work effectively with legacy code and automated tests.
Able to come up and demonstrate with examples/exercises
appropriate for mentee's level.
Able to apply coaching skills of Accountability, Acknowledgment,
Articulate What is Going On, Challenging, Inquiry, Metaphor,
Powerful Questions, Intuition, Championing and Listening
(Internal, Focused).
[1]

Design patterns: Strategy, Template method, Factory, Builder, Adapter, Command, Mediator, Null Object

Design principles: S.O.L.I.D, Law of Demeter, Tell Don't Ask

Refactoring: The skill of driving refactoring by code smells and design principles.
Thank you
stanly@odd-e.com

More Related Content

PDF
Technical Mentoring, What works and not
PPTX
2CPP01 - Intro to Module
PDF
Agile Software Development
PPT
Keeping ontology development Agile
ODP
Feedback - The Lost Art of Agile
PDF
A Rapid e-Learning Primer for Technical Communicators
PPTX
Software development fundamentals
PDF
Pairing: The Secret Sauce of Agile Testing
Technical Mentoring, What works and not
2CPP01 - Intro to Module
Agile Software Development
Keeping ontology development Agile
Feedback - The Lost Art of Agile
A Rapid e-Learning Primer for Technical Communicators
Software development fundamentals
Pairing: The Secret Sauce of Agile Testing

What's hot (12)

PDF
Java Training In Coimbatore
PDF
Upscale_Academy_Syllabus
PPTX
Agile Development and Implementing Scrum
PPTX
UC Irvine WICS workshop feb 2017
PDF
IntroEngineering.org Wiki
PDF
Pair programming demystified
PPTX
PPT
The Smells Of Bad Design
PPT
User Stories
PPTX
Understanding the Collaborative Relationship between Instructional Designers ...
PDF
Pair Programming, TDD and other impractical things
PPTX
Fine tune and deploy Hugging Face NLP models
Java Training In Coimbatore
Upscale_Academy_Syllabus
Agile Development and Implementing Scrum
UC Irvine WICS workshop feb 2017
IntroEngineering.org Wiki
Pair programming demystified
The Smells Of Bad Design
User Stories
Understanding the Collaborative Relationship between Instructional Designers ...
Pair Programming, TDD and other impractical things
Fine tune and deploy Hugging Face NLP models
Ad

Similar to How I help others to level up technical practices (20)

PDF
DOD Presentation V2
PPTX
Workplace Simulated Courses - Course Technology Computing Conference
PPTX
eLearning Guild Online Forum - Application of the Thiagi Four-Door Model for ...
PDF
Planning Patterns for Agile Testers
PPTX
The roots of a great digital learning project
PDF
The 360 Developer
PPTX
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
PPTX
Free sample 25% Professional in Business Analysis PMI-PBA
PPTX
Creating change from within - Agile Practitioners 2012
PDF
Design led dev ops using double diamond
PDF
DevOps experiment guidelines for leaders
PDF
Collaboration Within A Multidisciplinary Team
PPTX
Career of the Software Engineer in Modern Open-Source e-Commerce Company
PDF
Agile Technical Leadership
PPTX
5 keys to Building a Successful DevOps Culture featuring Mandi Walls (Present...
PPTX
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
PPTX
Dtc virtual classroom model
PPTX
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
PPTX
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
PDF
TDD Anti-patterns (2022 edition)
DOD Presentation V2
Workplace Simulated Courses - Course Technology Computing Conference
eLearning Guild Online Forum - Application of the Thiagi Four-Door Model for ...
Planning Patterns for Agile Testers
The roots of a great digital learning project
The 360 Developer
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Free sample 25% Professional in Business Analysis PMI-PBA
Creating change from within - Agile Practitioners 2012
Design led dev ops using double diamond
DevOps experiment guidelines for leaders
Collaboration Within A Multidisciplinary Team
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Agile Technical Leadership
5 keys to Building a Successful DevOps Culture featuring Mandi Walls (Present...
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
Dtc virtual classroom model
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD Anti-patterns (2022 edition)
Ad

Recently uploaded (20)

PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
Introduction to Artificial Intelligence
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
System and Network Administration Chapter 2
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
L1 - Introduction to python Backend.pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Softaken Excel to vCard Converter Software.pdf
Introduction to Artificial Intelligence
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
How Creative Agencies Leverage Project Management Software.pdf
System and Network Administration Chapter 2
Adobe Illustrator 28.6 Crack My Vision of Vector Design
L1 - Introduction to python Backend.pptx
PTS Company Brochure 2025 (1).pdf.......
Operating system designcfffgfgggggggvggggggggg
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Upgrade and Innovation Strategies for SAP ERP Customers
How to Migrate SBCGlobal Email to Yahoo Easily
Which alternative to Crystal Reports is best for small or large businesses.pdf
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
How to Choose the Right IT Partner for Your Business in Malaysia
VVF-Customer-Presentation2025-Ver1.9.pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...

How I help others to level up technical practices

  • 1. How I help others to level up technical practices stanly@odd-e.com @stanlylau
  • 2. Lives in Singapore Software development coach / mentor Agile Singapore 2013, 2014, 2016
  • 6. Photo: mint.com Brown Bag sharing TDD Coding Dojo
  • 7. How I became better Scrum Developer course
  • 16. Tried • StringCalculator TDD 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
  • 19. Learned • They felt confident changing code • Inspired them to add tests at work • They added and was unmaintainable Community Refactoring Kata
  • 20. TDD workshop followed by pairing with team members for two weeks Tried • 70% lectures, 30% exercises • Code exercises from public repositories • Pairing happens random Learned • Pairing related to code were slim • Assess the current state of automated build • Some people were defensive
  • 21. Pairing Tried • From an hour to 10 days • 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
  • 22. Pairing 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
  • 23. • 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
  • 24. Tried • Took one week to create • More than 10 exercises • Remove code smells always • Context limited to within the method • Repetition + a little different • Respectfully intrude and challenge Refactoring Workshop #1
  • 28. Tried • Took more than a week to create • Lesser exercises and repetition • Context includes callers and call-ees • New code smells • Characterisation tests • Simplify code using library e.g. JSONConvert • Agile modeling • Assignments as a pre-requisite Refactoring Workshop #2
  • 30. 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 provide feedback about their code Learned • Excellent way to find out where they are • Opportunity to hear their thoughts
  • 31. 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.”
  • 32. What aspects of the course were most successful in helping you to learn? “Explanation on speculative generality with diagrams” “Trying out by ourself how to identify and refactor” “Use Resharper hotkeys” “Use real production code to practise” “Approach towards a problem, especially all those shared examples are very commonly seen code smells.”
  • 33. What improvements to the course do you suggest? “More practice examples to be more familiar in recognizing and tackle the similar code smell.” “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"
  • 36. Developmental Mentoring Everyone Needs A Mentor by David Clutterbuck
  • 37. “Mentoring is a partnership between two people built upon trust. It is a process in which the mentor offers ongoing support and development opportunities to the mentee. Addressing issues and blockages identified by the mentee, the mentor offers guidance, counselling and support in the form of pragmatic and objective assistance. Both share a common purpose of developing a strong two-way learning relationship.” - Jenny Sweeney
  • 38. Goals not limited to… Able to apply clean code, refactoring, modeling, design principles and design patterns [1]. Able to work effectively with legacy code and automated tests. Able to come up and demonstrate with examples/exercises appropriate for mentee's level. Able to apply coaching skills of Accountability, Acknowledgment, Articulate What is Going On, Challenging, Inquiry, Metaphor, Powerful Questions, Intuition, Championing and Listening (Internal, Focused). [1]
 Design patterns: Strategy, Template method, Factory, Builder, Adapter, Command, Mediator, Null Object
 Design principles: S.O.L.I.D, Law of Demeter, Tell Don't Ask
 Refactoring: The skill of driving refactoring by code smells and design principles.