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…
Photo: mint.com
Brown Bag sharing

TDD Coding Dojo
How I became better

Scrum Developer course
Experiments

(informal)
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
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

What's hot

Java Training In Coimbatore
Java Training In CoimbatoreJava Training In Coimbatore
Java Training In Coimbatore
appincoimbatore
 
Upscale_Academy_Syllabus
Upscale_Academy_SyllabusUpscale_Academy_Syllabus
Upscale_Academy_Syllabus
Ivanna Kozychko
 
Agile Development and Implementing Scrum
Agile Development and Implementing ScrumAgile Development and Implementing Scrum
Agile Development and Implementing Scrum
Emre ŞAHİN
 
UC Irvine WICS workshop feb 2017
UC Irvine WICS workshop feb 2017UC Irvine WICS workshop feb 2017
UC Irvine WICS workshop feb 2017
Aliza Carpio
 
IntroEngineering.org Wiki
IntroEngineering.org WikiIntroEngineering.org Wiki
IntroEngineering.org Wiki
Jay Brockman
 
Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
Marek Kirejczyk
 
Smes
SmesSmes
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
guest446c0
 
User Stories
User StoriesUser Stories
User Stories
James Peckham
 
Understanding the Collaborative Relationship between Instructional Designers ...
Understanding the Collaborative Relationship between Instructional Designers ...Understanding the Collaborative Relationship between Instructional Designers ...
Understanding the Collaborative Relationship between Instructional Designers ...
Rob Moore
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
Marcello Duarte
 
Fine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP modelsFine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP models
OVHcloud
 

What's hot (12)

Java Training In Coimbatore
Java Training In CoimbatoreJava Training In Coimbatore
Java Training In Coimbatore
 
Upscale_Academy_Syllabus
Upscale_Academy_SyllabusUpscale_Academy_Syllabus
Upscale_Academy_Syllabus
 
Agile Development and Implementing Scrum
Agile Development and Implementing ScrumAgile Development and Implementing Scrum
Agile Development and Implementing Scrum
 
UC Irvine WICS workshop feb 2017
UC Irvine WICS workshop feb 2017UC Irvine WICS workshop feb 2017
UC Irvine WICS workshop feb 2017
 
IntroEngineering.org Wiki
IntroEngineering.org WikiIntroEngineering.org Wiki
IntroEngineering.org Wiki
 
Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
 
Smes
SmesSmes
Smes
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
 
User Stories
User StoriesUser Stories
User Stories
 
Understanding the Collaborative Relationship between Instructional Designers ...
Understanding the Collaborative Relationship between Instructional Designers ...Understanding the Collaborative Relationship between Instructional Designers ...
Understanding the Collaborative Relationship between Instructional Designers ...
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
Fine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP modelsFine tune and deploy Hugging Face NLP models
Fine tune and deploy Hugging Face NLP models
 

Similar to How I help others to level up technical practices

DOD Presentation V2
DOD Presentation V2DOD Presentation V2
DOD Presentation V2
Cookie Lanfear
 
Workplace Simulated Courses - Course Technology Computing Conference
Workplace Simulated Courses - Course Technology Computing ConferenceWorkplace Simulated Courses - Course Technology Computing Conference
Workplace Simulated Courses - Course Technology Computing Conference
Cengage Learning
 
eLearning Guild Online Forum - Application of the Thiagi Four-Door Model for ...
eLearning Guild Online Forum - Application of the Thiagi Four-Door Model for ...eLearning Guild Online Forum - Application of the Thiagi Four-Door Model for ...
eLearning Guild Online Forum - Application of the Thiagi Four-Door Model for ...
rpowell285
 
Planning Patterns for Agile Testers
Planning Patterns for Agile TestersPlanning Patterns for Agile Testers
Planning Patterns for Agile Testers
Gerrit Beine
 
The roots of a great digital learning project
The roots of a great digital learning projectThe roots of a great digital learning project
The roots of a great digital learning project
Sprout Labs
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
enteritos
 
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
lisacrispin
 
Free sample 25% Professional in Business Analysis PMI-PBA
Free sample 25%  Professional in Business Analysis PMI-PBAFree sample 25%  Professional in Business Analysis PMI-PBA
Free sample 25% Professional in Business Analysis PMI-PBA
EVOLVE for Instructors Materials
 
Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012
Dror Helper
 
Design led dev ops using double diamond
Design led dev ops using double diamondDesign led dev ops using double diamond
Design led dev ops using double diamond
Nitin Mittal
 
DevOps experiment guidelines for leaders
DevOps experiment guidelines for leaders DevOps experiment guidelines for leaders
DevOps experiment guidelines for leaders
Rob England
 
Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team
Michele Ide-Smith
 
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce CompanyCareer of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Vrann Tulika
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
Alexandru Bolboaca
 
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
5 Keys to Building a Successful DevOps Culture featuring Mandi Walls
Serena Software
 
5 keys to Building a Successful DevOps Culture featuring Mandi Walls (Present...
5 keys to Building a Successful DevOps Culture featuring Mandi Walls (Present...5 keys to Building a Successful DevOps Culture featuring Mandi Walls (Present...
5 keys to Building a Successful DevOps Culture featuring Mandi Walls (Present...
Serena Software
 
Dtc virtual classroom model
Dtc virtual classroom model Dtc virtual classroom model
Dtc virtual classroom model
ManishaBughani
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
ssusercaf6c1
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
Nacho Cougil
 
TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)
Ahmed Misbah
 

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

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

Recently uploaded

Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
ISH Technologies
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
What’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete RoadmapWhat’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete Roadmap
Envertis Software Solutions
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
Karya Keeper
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 

Recently uploaded (20)

Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
What’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete RoadmapWhat’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete Roadmap
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 

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
  • 5.
  • 6. Photo: mint.com Brown Bag sharing TDD Coding Dojo
  • 7. How I became better Scrum Developer course
  • 8.
  • 9.
  • 10.
  • 12.
  • 13.
  • 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
  • 26.
  • 27.
  • 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.