SlideShare a Scribd company logo
Code Katas Practicing Your Craft Mike Clement @mdclement mike@softwareontheside.com http://blog.softwareontheside.com Utah Code Camp Fall 2011
“Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
Chad Fowler on Practice “As a musician, I might spend a significant portion of my practice schedule playing things that nobody would want to listen to…. I would certainly never record them and release them on a CD. I wouldn’t even bore anyone with these sounds unless they either lived in my house and had no choice or were being paid to listen to them and offer suggestions for improvement. This is an example of “work” in which the action is far more valuable than the direct output.” http://chadfowler.com/2003/03/25/valueless-software
But I “Practice” On the Job! The Lie
Dave Thomas on Practice “It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.” http://codekata.pragprog.com/2007/01/code_kata_backg.html
Dave Thomas’s Keys to Practice Pressure Off Learn how to play with code http://www.codekata.com/2007/01/code_katahow_it.html Fundamentally incompatible with “on the job”!
Ceramics Quantity or Quality?
Shu Ha Ri 守 Shu – House of Laws; to abide by, to defend 破 Ha – Stone; to break 離 Ri – Bird; to leave, to depart Similar to Dryfus model  Novice, Advanced Beginner, Competent, Proficient, Expert Similar to Apprentice model Apprentice, Craftsman, Master
The rush past 守 (Shu) I’m so Smart
Code Katas are Shu Slow down!
So what arekatas?
Katas aren’t the one true practice? Other forms of practice
Randori Pair Programming Pair changes with mechanism (Time box, Ping Pong) Start from scratch Use TDD Everyone should be following Pair should be explaining Audience gives suggestions only with when Green Example at http://vimeo.com/2499540 http://codingdojo.org/cgi-bin/wiki.pl?RandoriKata
Koans Koans are questions without absolute answers which are used to break down assumptions and reveal underlying truths http://rubykoans.com/
Code Retreat Problem: Conway's Game of Life Length of Session: 45 minutes Duration: 8.30am to 5 or 6pm Pair-programming is necessary, as the knowledge transfer contained in that activity is essential to the practice Prefer using Test-Driven Development (TDD) After each session, pairs should be swapped After each session, code must be deleted, not put in a branch, not stashed, just deleted with no trace left http://coderetreat.com/facilitation.html
Let’s Try it Out Guided or Prepared Kata
“Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
Kata Lists http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue http://codekata.pragprog.com/2007/01/code_kata_backg.html http://stackoverflow.com/questions/44533/your-favorite-code-kata http://www.katacasts.com/ http://katas.softwarecraftsmanship.org/
My Contact Info @mdclement mike@softwareontheside.com http://blog.softwareontheside.com Utah Software Craftsmanship Group https://groups.google.com/forum/#!forum/ut-software-craftsmanship @utahsc

More Related Content

Similar to Code Katas: Practicing Your Craft

Code Katas Spring 2012
Code Katas Spring 2012Code Katas Spring 2012
Code Katas Spring 2012Mike Clement
 
Give a Great Tech Talk
Give a Great Tech TalkGive a Great Tech Talk
Give a Great Tech Talkjberkus
 
EdTechJoker Spring 2020 - Lecture 1 - Welcome
EdTechJoker Spring 2020 - Lecture 1 - WelcomeEdTechJoker Spring 2020 - Lecture 1 - Welcome
EdTechJoker Spring 2020 - Lecture 1 - Welcome
Bryan Ollendyke
 
RED ACADEMY: MAKE YOUR MARK
RED ACADEMY: MAKE YOUR MARKRED ACADEMY: MAKE YOUR MARK
RED ACADEMY: MAKE YOUR MARK
Jonas Altman
 
You Can Do That In a Keynote
You Can Do That In a KeynoteYou Can Do That In a Keynote
You Can Do That In a Keynote
Kristin Arnold
 
A Presentation on Presenting
A Presentation on PresentingA Presentation on Presenting
A Presentation on Presenting
Jason Lotito
 
Yes, My tuatara loves to cha-cha: Improv, creativity and design
Yes, My tuatara loves to cha-cha: Improv, creativity and designYes, My tuatara loves to cha-cha: Improv, creativity and design
Yes, My tuatara loves to cha-cha: Improv, creativity and design
UX New Zealand 2015
 
A talk about talking!
A talk about talking!A talk about talking!
A talk about talking!
Tanya Reilly
 
How Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the DesignerHow Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the Designer
Jonathan Lieberman
 
Yes, My Tuatara Loves to Cha-Cha Improv, Creativity and Design
Yes, My Tuatara Loves to Cha-Cha Improv, Creativity and DesignYes, My Tuatara Loves to Cha-Cha Improv, Creativity and Design
Yes, My Tuatara Loves to Cha-Cha Improv, Creativity and Design
Steve Portigal
 
PDC+++ Module 2 Class 6 Observation
PDC+++ Module 2 Class 6 ObservationPDC+++ Module 2 Class 6 Observation
PDC+++ Module 2 Class 6 Observation
Academia de Permacultura Integral
 
Teaching the teacher tri state 2013
Teaching the teacher tri state 2013Teaching the teacher tri state 2013
Teaching the teacher tri state 2013
Stephen Maguire, M.Ed
 
SXSW - Diving Deep: Best Practices For Interviewing Users
SXSW - Diving Deep: Best Practices For Interviewing UsersSXSW - Diving Deep: Best Practices For Interviewing Users
SXSW - Diving Deep: Best Practices For Interviewing Users
Steve Portigal
 
Apprenticeships on Open Source
Apprenticeships on Open SourceApprenticeships on Open Source
Apprenticeships on Open SourceDave Hoover
 
oscon_apprenticeship
oscon_apprenticeshiposcon_apprenticeship
oscon_apprenticeshipDave Hoover
 
Mastery learning
Mastery learningMastery learning
Mastery learning
nebbien
 
Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)
Pete Goodliffe
 
Tessa Ann Taylor: A Readme
Tessa Ann Taylor: A ReadmeTessa Ann Taylor: A Readme
Tessa Ann Taylor: A Readme
Tessa Ann Taylor
 

Similar to Code Katas: Practicing Your Craft (20)

Code Katas Spring 2012
Code Katas Spring 2012Code Katas Spring 2012
Code Katas Spring 2012
 
Service Jam LA 2013 // Day 1
Service Jam LA 2013 // Day 1Service Jam LA 2013 // Day 1
Service Jam LA 2013 // Day 1
 
Give a Great Tech Talk
Give a Great Tech TalkGive a Great Tech Talk
Give a Great Tech Talk
 
EdTechJoker Spring 2020 - Lecture 1 - Welcome
EdTechJoker Spring 2020 - Lecture 1 - WelcomeEdTechJoker Spring 2020 - Lecture 1 - Welcome
EdTechJoker Spring 2020 - Lecture 1 - Welcome
 
Service Jam LA 2013 // Day 2
Service Jam LA 2013 // Day 2Service Jam LA 2013 // Day 2
Service Jam LA 2013 // Day 2
 
RED ACADEMY: MAKE YOUR MARK
RED ACADEMY: MAKE YOUR MARKRED ACADEMY: MAKE YOUR MARK
RED ACADEMY: MAKE YOUR MARK
 
You Can Do That In a Keynote
You Can Do That In a KeynoteYou Can Do That In a Keynote
You Can Do That In a Keynote
 
A Presentation on Presenting
A Presentation on PresentingA Presentation on Presenting
A Presentation on Presenting
 
Yes, My tuatara loves to cha-cha: Improv, creativity and design
Yes, My tuatara loves to cha-cha: Improv, creativity and designYes, My tuatara loves to cha-cha: Improv, creativity and design
Yes, My tuatara loves to cha-cha: Improv, creativity and design
 
A talk about talking!
A talk about talking!A talk about talking!
A talk about talking!
 
How Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the DesignerHow Tools Have Shaped the Role of the Designer
How Tools Have Shaped the Role of the Designer
 
Yes, My Tuatara Loves to Cha-Cha Improv, Creativity and Design
Yes, My Tuatara Loves to Cha-Cha Improv, Creativity and DesignYes, My Tuatara Loves to Cha-Cha Improv, Creativity and Design
Yes, My Tuatara Loves to Cha-Cha Improv, Creativity and Design
 
PDC+++ Module 2 Class 6 Observation
PDC+++ Module 2 Class 6 ObservationPDC+++ Module 2 Class 6 Observation
PDC+++ Module 2 Class 6 Observation
 
Teaching the teacher tri state 2013
Teaching the teacher tri state 2013Teaching the teacher tri state 2013
Teaching the teacher tri state 2013
 
SXSW - Diving Deep: Best Practices For Interviewing Users
SXSW - Diving Deep: Best Practices For Interviewing UsersSXSW - Diving Deep: Best Practices For Interviewing Users
SXSW - Diving Deep: Best Practices For Interviewing Users
 
Apprenticeships on Open Source
Apprenticeships on Open SourceApprenticeships on Open Source
Apprenticeships on Open Source
 
oscon_apprenticeship
oscon_apprenticeshiposcon_apprenticeship
oscon_apprenticeship
 
Mastery learning
Mastery learningMastery learning
Mastery learning
 
Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)Becoming a Better Programmer (2013)
Becoming a Better Programmer (2013)
 
Tessa Ann Taylor: A Readme
Tessa Ann Taylor: A ReadmeTessa Ann Taylor: A Readme
Tessa Ann Taylor: A Readme
 

More from Mike Clement

Collaboration Principles from Mob Programming
Collaboration Principles from Mob ProgrammingCollaboration Principles from Mob Programming
Collaboration Principles from Mob Programming
Mike Clement
 
Focus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in ActionFocus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in Action
Mike Clement
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
Mike Clement
 
Develop your sense of code smell
Develop your sense of code smellDevelop your sense of code smell
Develop your sense of code smell
Mike Clement
 
Maps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big PictureMaps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big Picture
Mike Clement
 
Escaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product DevelopmentEscaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product Development
Mike Clement
 
Put the Tests Before the Code
Put the Tests Before the CodePut the Tests Before the Code
Put the Tests Before the Code
Mike Clement
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
Mike Clement
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
Mike Clement
 
The Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at PluralsightThe Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at Pluralsight
Mike Clement
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
Mike Clement
 
Thinking in F#
Thinking in F#Thinking in F#
Thinking in F#
Mike Clement
 
Transformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order MattersTransformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order Matters
Mike Clement
 
Power of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) PatternsPower of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) Patterns
Mike Clement
 
FizzBuzz Guided Kata
FizzBuzz Guided KataFizzBuzz Guided Kata
FizzBuzz Guided KataMike Clement
 
Linq (from the inside)
Linq (from the inside)Linq (from the inside)
Linq (from the inside)
Mike Clement
 
Bowling Game Kata in C# Adapted
Bowling Game Kata in C# AdaptedBowling Game Kata in C# Adapted
Bowling Game Kata in C# AdaptedMike Clement
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipMike Clement
 
Using Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit TestingUsing Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit TestingMike Clement
 

More from Mike Clement (19)

Collaboration Principles from Mob Programming
Collaboration Principles from Mob ProgrammingCollaboration Principles from Mob Programming
Collaboration Principles from Mob Programming
 
Focus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in ActionFocus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in Action
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
 
Develop your sense of code smell
Develop your sense of code smellDevelop your sense of code smell
Develop your sense of code smell
 
Maps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big PictureMaps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big Picture
 
Escaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product DevelopmentEscaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product Development
 
Put the Tests Before the Code
Put the Tests Before the CodePut the Tests Before the Code
Put the Tests Before the Code
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
 
The Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at PluralsightThe Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at Pluralsight
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 
Thinking in F#
Thinking in F#Thinking in F#
Thinking in F#
 
Transformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order MattersTransformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order Matters
 
Power of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) PatternsPower of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) Patterns
 
FizzBuzz Guided Kata
FizzBuzz Guided KataFizzBuzz Guided Kata
FizzBuzz Guided Kata
 
Linq (from the inside)
Linq (from the inside)Linq (from the inside)
Linq (from the inside)
 
Bowling Game Kata in C# Adapted
Bowling Game Kata in C# AdaptedBowling Game Kata in C# Adapted
Bowling Game Kata in C# Adapted
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 
Using Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit TestingUsing Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit Testing
 

Recently uploaded

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 

Recently uploaded (20)

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 

Code Katas: Practicing Your Craft

  • 1. Code Katas Practicing Your Craft Mike Clement @mdclement mike@softwareontheside.com http://blog.softwareontheside.com Utah Code Camp Fall 2011
  • 2. “Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
  • 3. Chad Fowler on Practice “As a musician, I might spend a significant portion of my practice schedule playing things that nobody would want to listen to…. I would certainly never record them and release them on a CD. I wouldn’t even bore anyone with these sounds unless they either lived in my house and had no choice or were being paid to listen to them and offer suggestions for improvement. This is an example of “work” in which the action is far more valuable than the direct output.” http://chadfowler.com/2003/03/25/valueless-software
  • 4.
  • 5. But I “Practice” On the Job! The Lie
  • 6. Dave Thomas on Practice “It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.” http://codekata.pragprog.com/2007/01/code_kata_backg.html
  • 7. Dave Thomas’s Keys to Practice Pressure Off Learn how to play with code http://www.codekata.com/2007/01/code_katahow_it.html Fundamentally incompatible with “on the job”!
  • 9. Shu Ha Ri 守 Shu – House of Laws; to abide by, to defend 破 Ha – Stone; to break 離 Ri – Bird; to leave, to depart Similar to Dryfus model Novice, Advanced Beginner, Competent, Proficient, Expert Similar to Apprentice model Apprentice, Craftsman, Master
  • 10. The rush past 守 (Shu) I’m so Smart
  • 11. Code Katas are Shu Slow down!
  • 13. Katas aren’t the one true practice? Other forms of practice
  • 14. Randori Pair Programming Pair changes with mechanism (Time box, Ping Pong) Start from scratch Use TDD Everyone should be following Pair should be explaining Audience gives suggestions only with when Green Example at http://vimeo.com/2499540 http://codingdojo.org/cgi-bin/wiki.pl?RandoriKata
  • 15. Koans Koans are questions without absolute answers which are used to break down assumptions and reveal underlying truths http://rubykoans.com/
  • 16. Code Retreat Problem: Conway's Game of Life Length of Session: 45 minutes Duration: 8.30am to 5 or 6pm Pair-programming is necessary, as the knowledge transfer contained in that activity is essential to the practice Prefer using Test-Driven Development (TDD) After each session, pairs should be swapped After each session, code must be deleted, not put in a branch, not stashed, just deleted with no trace left http://coderetreat.com/facilitation.html
  • 17. Let’s Try it Out Guided or Prepared Kata
  • 18. “Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
  • 19. Kata Lists http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue http://codekata.pragprog.com/2007/01/code_kata_backg.html http://stackoverflow.com/questions/44533/your-favorite-code-kata http://www.katacasts.com/ http://katas.softwarecraftsmanship.org/
  • 20. My Contact Info @mdclement mike@softwareontheside.com http://blog.softwareontheside.com Utah Software Craftsmanship Group https://groups.google.com/forum/#!forum/ut-software-craftsmanship @utahsc

Editor's Notes

  1. Verbs vs. NounsRequirements“Plans are useless, but planning is invaluable” – Dwight D. Eisenhowerthe value is the process that everyone goes through in order to produce the document: the understanding gained, the relationships forged, the negotiations, the compromises, and all the other little interactions which share information.QualityPlan, measure, build a quality product!Quality is PART OF THE PROCESS. Quality is in the spirit of the smallest of our daily activities.
  2. Read quote
  3. Who plays a musical instrument? Practice time vs. performance time?ScalesArpeggiosExtended tones (wind instruments)Various technical patternsLast bars of Franz Liszt's Transcendental Étude No. 2: one of the most difficult of Liszt's études, this is a study in passages for alternating and overlapping hands.Sports is the same way, how much time is spent practicing versus performing?
  4. Clearly each of you is here at Code Camp on a Saturday because you KNOW that you can’t get everything you need for your profession, to be a master of your craft by practicing “on the job”.
  5. Provide a temporal oasis where it’s OK not to worry about some approaching deadline.Learn how to play with code: how to make mistakes, how to improvise, how to reflect, and how to measure. This is hard: we’re trained to try to do things right rather than improvise.These “keys” are fundamentally incompatible with “on the job” learning.One the job has deadlines and restrictions. It’s very visible to other people so mistakes are less tolerated.Sure there is a component to this. We can learn on the job. “Live” experience is important. For example with public speaking, you can practice and practice, but actually presenting is different. Practicing helps, but it doesn’t replace real experience.SportsMusicMilitary combatCooking for your in-laws
  6. The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the "quantity" group: fifty pound of pots rated an "A", forty pounds a "B", and so on. Those being graded on "quality", however, needed to produce only one pot - albeit a perfect one - to get an "A".Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the "quantity" group was busily churning out piles of work - and learning from their mistakes - the "quality" group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.http://www.codinghorror.com/blog/2008/08/quantity-always-trumps-quality.htmlArt & Fear: Observations On the Perils (and Rewards) of Artmaking [Paperback]David Bayles (Author), Ted Orland (Author)We learn by DOING!I would argue that we can’t do quantity on the job. We have to get the volume of repetitions elsewhere.
  7. Concept introduced to software by Alistair CockburnShu - the technical foundation of the artSingle instructorCopy techniques without modificationit is the instructor that decides when the student moves on from Shu to Ha, not the studentIt’s up to the student to follow the instructor’s teaching as an empty vessel to be filled upHareflect on the meaning and purpose of everything that s/he has learned and thus come to a deeper understanding of the artRimust think originally and develop from background knowledge original thoughts about the art and test them against the reality of his or her background knowledge and conclusions as well as the demands of everyday lifethe art truly becomes the practitioner’s own and to some extent his or her own creationInvent own techniques
  8. Everyone is at different levels with different skills that they are developing, but nobody is master of all skills.We often jump right into critiquing a method or idea instead of attempting it “as is” first. We think that we’re so smart that we can skip past the “beginner” stuff and get right into it.Programmers are especially susceptible to this as we have sizable egos generally.Seek first to understand.
  9. Slow down!Practice the feel and to internalize the movesBuilding muscle memoryChange your intuitionTrain your eyes and fingers to recognize and respond to patternsValue in repetition even if you don’t agree.You may not like what the kata is teaching you, but that is learning too.
  10. Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs.A kata is a coding exercise that performed repeatedly and perfected.Framework for focused practiceTDD/Unit TestsPerformanceStructureMemory UseTool use (IDE, text editor)Practice comes to an end; with a real problem… not so muchPath is laid out for you so there is a definite end
  11. Group is given a problem.Time box – you have x amount of time per pairPing Pong – one person writes a test, next codes to green and writes next test, next codes to green and writes test…
  12. Anybody attended one of these?Working to have one in Utah.
  13. As we learned earlier, the best way to learn is by experimenting and repeating so that’s what we’re going to do
  14. Remember that the problem that we solved today is not really that important. It’s not important that we have a piece of code to score a bowling game. It is important that we go through the exercise and take from it what we can.