SlideShare a Scribd company logo
1 of 12
Coding Dojo
Agile Mëtteg – 29 Nov 2012
BOW (REI)


   Who are we?
        Eric Ferrot (eferrot@agilepartner.net)
        Cédric Pontet (cpontet@agilepartner.net , @cpontet)
   Who are you?
        Name
        Company
        Experience
        Language




                     http://www.breakaway.cc/Asia/Japan/Japan-Bowing.php


29 Nov 2012                 Agile Mëtteg – Coding Dojo                     2
KATA

Kata is a Japanese word describing detailed
choreographed patterns of movements practiced
either solo or in pairs.
By practicing in a repetitive manner
the learner develops the ability to execute those
techniques and movements in a natural, reflex-
like manner.
The goal is to internalize the movements and
techniques of a kata so they can be executed and
adapted under different circumstances, without


                                               型
thought.


29 Nov 2012       Agile Mëtteg – Coding Dojo       3
DOJO


A dojo is a Japanese term which literally means
"place of the way".
The term can refer to a formal training place for
any of the Japanese do arts but typically it is
considered the formal gathering place for
students of any Japanese martial arts style such
as karate, judo, or samurai, to conduct training,
examinations and other related encounters.



                                               道場
29 Nov 2012       Agile Mëtteg – Coding Dojo        4
CODING DOJO / CODE KATA


   Wikipedia
        Kata (programming)
   Dave Thomas (Agile Manifesto)
        CodeKata
   Laurent Bossavit & Emmanuel Gaillot
        CodingDojo
   Emilie Bache
        Online resources for Coding Dojos
        Coding Dojo Handbook

29 Nov 2012          Agile Mëtteg – Coding Dojo     5
GOAL


   Practice of
        Test Driven Design
        Baby steps
        Refactoring
                                                       Test
   Acquire good
   developer habits

                                            Refactor          Code




29 Nov 2012          Agile Mëtteg – Coding Dojo                      6
FIZZBUZZ

Return “fizz”, “buzz” or “fizzbuzz”.
For a given natural number greater than zero return
   “fizz” if the number is dividable by 3
   “buzz” if the number is dividable by 5
   “fizzbuzz” if the number is dividable by 3 and 5
       Input                      Result
       1                          1
       2                          2
       3                          fizz
       4                          4
       5                          buzz
       6                          fizz
       10                         buzz
       15                         fizzbuzz
       30                         fizzbuzz
29 Nov 2012              Agile Mëtteg – Coding Dojo       7
TRANSFORMATION PRIORITY PREMISE

Transformation            Description
{}–>nil                   no code at all->code that employs nil
nil->constant
constant->constant+       a simple constant to a more complex constant
constant->scalar          replacing a constant with a variable or an argument
statement->statements adding more unconditional statements
unconditional->if         splitting the execution path
scalar->array
array->container
statement->recursion
if->while
expression->function      replacing an expression with a function or algorithm
variable->assignment      replacing the value of a variable

  http://cleancoder.posterous.com/the-transformation-priority-premise

  29 Nov 2012                 Agile Mëtteg – Coding Dojo                         8
PRIME FACTORS


Compute the prime factors of a given natural
number
         Input              Result ([…] denotes a list)
         1                  []
         2                  [2]
         3                  [3]
         4                  [2,2]
         5                  [5]
         6                  [2,3]
         7                  [7]
         8                  [2,2,2]
         9                  [3,3]



29 Nov 2012      Agile Mëtteg – Coding Dojo               9
REFACTORING KATA


   Emilie Bache
        Can you refactor ?                             Yahtzee
        In really small steps ?
        Can you turn some,
        frankly, ugly code into
        a paradigm of elegant,
        readable, extensible
        design?
                                         http://www.parentdish.com/2010/04/20/yahtzee-game/




29 Nov 2012           Agile Mëtteg – Coding Dojo                                          10
SAYONARA


   What do you think ?
        Feedback is welcome

   Where to find Katas ?
        Catalogs
         •    CodersDojo
         •    CodeKata
         •    CodingDojo
         •    Schuchert
        Samples
         • CodersDojo                           http://www.hoshuha.com/blog/japanese-bowing-etiquette.html

         • Refactoring Katas

29 Nov 2012                Agile Mëtteg – Coding Dojo                                             11
Follow us


Agile Partner web site
        http://www.agilepartner.net
Blog
        http://blog.agilepartner.net

        @agilepartner

        http://www.facebook.com/agilepartner

               http://www.slideshare.net/agilepartner
29 Nov 2012           Agile Mëtteg – Coding Dojo         12

More Related Content

Similar to Coding Dojo

Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017David Völkel
 
2014 05-14-pythoncodingdojo
2014 05-14-pythoncodingdojo2014 05-14-pythoncodingdojo
2014 05-14-pythoncodingdojoaschlapsi
 
8th pre alg -l34--nov15
8th pre alg -l34--nov158th pre alg -l34--nov15
8th pre alg -l34--nov15jdurst65
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesEdorian
 
The London Python Code Dojo - An Education in Developer Education
The London Python Code Dojo - An Education in Developer EducationThe London Python Code Dojo - An Education in Developer Education
The London Python Code Dojo - An Education in Developer EducationNicholas Tollervey
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Peter Kofler
 

Similar to Coding Dojo (10)

Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017
 
2014 05-14-pythoncodingdojo
2014 05-14-pythoncodingdojo2014 05-14-pythoncodingdojo
2014 05-14-pythoncodingdojo
 
8th pre alg -l34--nov15
8th pre alg -l34--nov158th pre alg -l34--nov15
8th pre alg -l34--nov15
 
Stop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principlesStop wasting-time-by-applying-clean-code-principles
Stop wasting-time-by-applying-clean-code-principles
 
Coding Kwoon
Coding KwoonCoding Kwoon
Coding Kwoon
 
Organise a Code Dojo!
Organise a Code Dojo!Organise a Code Dojo!
Organise a Code Dojo!
 
The London Python Code Dojo - An Education in Developer Education
The London Python Code Dojo - An Education in Developer EducationThe London Python Code Dojo - An Education in Developer Education
The London Python Code Dojo - An Education in Developer Education
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)
 

More from Agile Partner S.A.

Domain-Driven Design: From strategic business goals to software implementation
Domain-Driven Design: From strategic business goals to software implementationDomain-Driven Design: From strategic business goals to software implementation
Domain-Driven Design: From strategic business goals to software implementationAgile Partner S.A.
 
Devops: la réunion des co-propriétaires
Devops: la réunion des co-propriétairesDevops: la réunion des co-propriétaires
Devops: la réunion des co-propriétairesAgile Partner S.A.
 
Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...
Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...
Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...Agile Partner S.A.
 
Agilité : la voix de la collaboration
Agilité : la voix de la collaborationAgilité : la voix de la collaboration
Agilité : la voix de la collaborationAgile Partner S.A.
 
Market validation (by Sylvain Chery)
Market validation (by Sylvain Chery)Market validation (by Sylvain Chery)
Market validation (by Sylvain Chery)Agile Partner S.A.
 
ALM and DevOps in the health industry
ALM and DevOps in the health industryALM and DevOps in the health industry
ALM and DevOps in the health industryAgile Partner S.A.
 
Agile Brown Bag: Gouvernance SharePoint
Agile Brown Bag: Gouvernance SharePointAgile Brown Bag: Gouvernance SharePoint
Agile Brown Bag: Gouvernance SharePointAgile Partner S.A.
 
Agile Mëtteg Septembre 2015: Introduction à DevOps
Agile Mëtteg Septembre 2015: Introduction à DevOpsAgile Mëtteg Septembre 2015: Introduction à DevOps
Agile Mëtteg Septembre 2015: Introduction à DevOpsAgile Partner S.A.
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Partner S.A.
 
Agile Mëtteg #5: Agile Testing
Agile Mëtteg #5: Agile TestingAgile Mëtteg #5: Agile Testing
Agile Mëtteg #5: Agile TestingAgile Partner S.A.
 
Retour d expérience_sur_l_agilité
Retour d expérience_sur_l_agilitéRetour d expérience_sur_l_agilité
Retour d expérience_sur_l_agilitéAgile Partner S.A.
 
Continuous innovation with Lean Startup
Continuous innovation with Lean StartupContinuous innovation with Lean Startup
Continuous innovation with Lean StartupAgile Partner S.A.
 
Maîtriser et controler vos projets Agile
Maîtriser et controler vos projets AgileMaîtriser et controler vos projets Agile
Maîtriser et controler vos projets AgileAgile Partner S.A.
 
Kanban: going Lean/Agile for your IT dev. & support team
Kanban: going Lean/Agile for your IT dev. & support teamKanban: going Lean/Agile for your IT dev. & support team
Kanban: going Lean/Agile for your IT dev. & support teamAgile Partner S.A.
 
Agility, a mature approach, the fruit of more than 30 years research
Agility, a mature approach, the fruit of more than 30 years researchAgility, a mature approach, the fruit of more than 30 years research
Agility, a mature approach, the fruit of more than 30 years researchAgile Partner S.A.
 

More from Agile Partner S.A. (20)

Domain-Driven Design: From strategic business goals to software implementation
Domain-Driven Design: From strategic business goals to software implementationDomain-Driven Design: From strategic business goals to software implementation
Domain-Driven Design: From strategic business goals to software implementation
 
Devops: la réunion des co-propriétaires
Devops: la réunion des co-propriétairesDevops: la réunion des co-propriétaires
Devops: la réunion des co-propriétaires
 
Découverte de l'esprit agile
Découverte de l'esprit agileDécouverte de l'esprit agile
Découverte de l'esprit agile
 
Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...
Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...
Comment intégrer au plus tôt l’utilisateur dans le développement d’une applic...
 
Agilité : la voix de la collaboration
Agilité : la voix de la collaborationAgilité : la voix de la collaboration
Agilité : la voix de la collaboration
 
Market validation (by Sylvain Chery)
Market validation (by Sylvain Chery)Market validation (by Sylvain Chery)
Market validation (by Sylvain Chery)
 
ALM and DevOps in the health industry
ALM and DevOps in the health industryALM and DevOps in the health industry
ALM and DevOps in the health industry
 
Agile Brown Bag: Gouvernance SharePoint
Agile Brown Bag: Gouvernance SharePointAgile Brown Bag: Gouvernance SharePoint
Agile Brown Bag: Gouvernance SharePoint
 
Agile Mëtteg Septembre 2015: Introduction à DevOps
Agile Mëtteg Septembre 2015: Introduction à DevOpsAgile Mëtteg Septembre 2015: Introduction à DevOps
Agile Mëtteg Septembre 2015: Introduction à DevOps
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
 
Agile Mëtteg #5: Agile Testing
Agile Mëtteg #5: Agile TestingAgile Mëtteg #5: Agile Testing
Agile Mëtteg #5: Agile Testing
 
Introduction to agile methods
Introduction to agile methodsIntroduction to agile methods
Introduction to agile methods
 
Retour d expérience_sur_l_agilité
Retour d expérience_sur_l_agilitéRetour d expérience_sur_l_agilité
Retour d expérience_sur_l_agilité
 
Continuous innovation with Lean Startup
Continuous innovation with Lean StartupContinuous innovation with Lean Startup
Continuous innovation with Lean Startup
 
Agile testing games
Agile testing gamesAgile testing games
Agile testing games
 
Lkfr12 - De Scrum à Kanban
Lkfr12 - De Scrum à KanbanLkfr12 - De Scrum à Kanban
Lkfr12 - De Scrum à Kanban
 
Maîtriser et controler vos projets Agile
Maîtriser et controler vos projets AgileMaîtriser et controler vos projets Agile
Maîtriser et controler vos projets Agile
 
Kanban: going Lean/Agile for your IT dev. & support team
Kanban: going Lean/Agile for your IT dev. & support teamKanban: going Lean/Agile for your IT dev. & support team
Kanban: going Lean/Agile for your IT dev. & support team
 
It job day Henam 2011-06-20
It job day Henam 2011-06-20It job day Henam 2011-06-20
It job day Henam 2011-06-20
 
Agility, a mature approach, the fruit of more than 30 years research
Agility, a mature approach, the fruit of more than 30 years researchAgility, a mature approach, the fruit of more than 30 years research
Agility, a mature approach, the fruit of more than 30 years research
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Coding Dojo

  • 1. Coding Dojo Agile Mëtteg – 29 Nov 2012
  • 2. BOW (REI) Who are we? Eric Ferrot (eferrot@agilepartner.net) Cédric Pontet (cpontet@agilepartner.net , @cpontet) Who are you? Name Company Experience Language http://www.breakaway.cc/Asia/Japan/Japan-Bowing.php 29 Nov 2012 Agile Mëtteg – Coding Dojo 2
  • 3. KATA Kata is a Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. By practicing in a repetitive manner the learner develops the ability to execute those techniques and movements in a natural, reflex- like manner. The goal is to internalize the movements and techniques of a kata so they can be executed and adapted under different circumstances, without 型 thought. 29 Nov 2012 Agile Mëtteg – Coding Dojo 3
  • 4. DOJO A dojo is a Japanese term which literally means "place of the way". The term can refer to a formal training place for any of the Japanese do arts but typically it is considered the formal gathering place for students of any Japanese martial arts style such as karate, judo, or samurai, to conduct training, examinations and other related encounters. 道場 29 Nov 2012 Agile Mëtteg – Coding Dojo 4
  • 5. CODING DOJO / CODE KATA Wikipedia Kata (programming) Dave Thomas (Agile Manifesto) CodeKata Laurent Bossavit & Emmanuel Gaillot CodingDojo Emilie Bache Online resources for Coding Dojos Coding Dojo Handbook 29 Nov 2012 Agile Mëtteg – Coding Dojo 5
  • 6. GOAL Practice of Test Driven Design Baby steps Refactoring Test Acquire good developer habits Refactor Code 29 Nov 2012 Agile Mëtteg – Coding Dojo 6
  • 7. FIZZBUZZ Return “fizz”, “buzz” or “fizzbuzz”. For a given natural number greater than zero return “fizz” if the number is dividable by 3 “buzz” if the number is dividable by 5 “fizzbuzz” if the number is dividable by 3 and 5 Input Result 1 1 2 2 3 fizz 4 4 5 buzz 6 fizz 10 buzz 15 fizzbuzz 30 fizzbuzz 29 Nov 2012 Agile Mëtteg – Coding Dojo 7
  • 8. TRANSFORMATION PRIORITY PREMISE Transformation Description {}–>nil no code at all->code that employs nil nil->constant constant->constant+ a simple constant to a more complex constant constant->scalar replacing a constant with a variable or an argument statement->statements adding more unconditional statements unconditional->if splitting the execution path scalar->array array->container statement->recursion if->while expression->function replacing an expression with a function or algorithm variable->assignment replacing the value of a variable http://cleancoder.posterous.com/the-transformation-priority-premise 29 Nov 2012 Agile Mëtteg – Coding Dojo 8
  • 9. PRIME FACTORS Compute the prime factors of a given natural number Input Result ([…] denotes a list) 1 [] 2 [2] 3 [3] 4 [2,2] 5 [5] 6 [2,3] 7 [7] 8 [2,2,2] 9 [3,3] 29 Nov 2012 Agile Mëtteg – Coding Dojo 9
  • 10. REFACTORING KATA Emilie Bache Can you refactor ? Yahtzee In really small steps ? Can you turn some, frankly, ugly code into a paradigm of elegant, readable, extensible design? http://www.parentdish.com/2010/04/20/yahtzee-game/ 29 Nov 2012 Agile Mëtteg – Coding Dojo 10
  • 11. SAYONARA What do you think ? Feedback is welcome Where to find Katas ? Catalogs • CodersDojo • CodeKata • CodingDojo • Schuchert Samples • CodersDojo http://www.hoshuha.com/blog/japanese-bowing-etiquette.html • Refactoring Katas 29 Nov 2012 Agile Mëtteg – Coding Dojo 11
  • 12. Follow us Agile Partner web site http://www.agilepartner.net Blog http://blog.agilepartner.net @agilepartner http://www.facebook.com/agilepartner http://www.slideshare.net/agilepartner 29 Nov 2012 Agile Mëtteg – Coding Dojo 12