SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Code Retreat
june 24th 2011 - XEBIA
Welcome
Deliberate Practice

 Improve ability to perform a task


 Repetition, repetition, repetition...


 Not complete the task, but master it.
Simple Design
Run all tests and check they pass.


Don't Repeat Yourself


Reveal intent


Small methods & classes
Open your mind !

Try things you can't try @ work.
Do silly things that just *can't* work...
Explore, experiment.
Pair with as much people as you can
Don't be shy, try new languages.
Introduction

 a session lasts 40 minutes
 followed by a 10-15 minutes retrospective
 pair programming
 swap on each session
 delete all code after each session
Planning
10h00                                         14h00
        Code Session 1     Code Session 4

        Retrospective 1    Retrospective 4
11h00                                         15h00
        Code Session 2     Code Session 5

        Retrospective 2    Retrospective 5
12h00                                         16h00
        Code Session 3     Code Session 6

        Retrospective 3
                                              16h40
13h00                     Day Retrospective
                                              ...
            Lunch

14h00
TicTacToe
TicTacToe rules
1. a game is over when all fields are taken
2. a game is over when all fields in a column are taken by a
   player
3. a game is over when all fields in a row are taken by a player
4. a game is over when all fields in a diagonal are taken by a
   player
5. a player can take a field if not already taken
6. players take turns taking fields until the game is over
Session #1                     10h00 10h40
1. a game is over when all fields are taken
2. a game is over when all fields in a column are taken by a
   player
3. a game is over when all fields in a row are taken by a player
4. a game is over when all fields in a diagonal are taken by a
   player
5. a player can take a field if not already taken
6. players take turns taking fields until the game is over
Rétro #1             10h40 11h00
Does your code work at the end of the session ?
What is your implementation path ?
How was your pair programming experience ?
How was your TDD experience ? How did it help ?
Did you notice any code smells ?
Did you notice any communication smells ?
Any tips for the others ?
Session #2                     11h00 11h40
1. a game is over when all fields are taken
2. a game is over when all fields in a column are taken by a
   player
3. a game is over when all fields in a row are taken by a player
4. a game is over when all fields in a diagonal are taken by a
   player
5. a player can take a field if not already taken
6. players take turns taking fields until the game is over
Rétro #2             11h40 12h00
Does your code work at the end of the session ?
What is your implementation path ?
How was your pair programming experience ?
How was your TDD experience ? How did it help ?
Did you notice any code smells ?
Did you notice any communication smells ?
Any tips for the others ?
Session #3                     12h00 12h40
1. a game is over when all fields are taken
2. a game is over when all fields in a column are taken by a
   player
3. a game is over when all fields in a row are taken by a player
4. a game is over when all fields in a diagonal are taken by a
   player
5. a player can take a field if not already taken
6. players take turns taking fields until the game is over
Rétro #3             12h40 13h00
Does your code work at the end of the session ?
What is your implementation path ?
How was your pair programming experience ?
How was your TDD experience ? How did it help ?
Did you notice any code smells ?
Did you notice any communication smells ?
Any tips for the others ?
Lunch Time !
Session #4                     14h00 14h40
 1. a game is over when all fields are taken
 2. a game is over when all fields in a column are taken by a
    player
 3. a game is over when all fields in a row are taken by a player
 4. a game is over when all fields in a diagonal are taken by a
    player
 5. a player can take a field if not already taken
 6. players take turns taking fields until the game is over


TDD as you meant it || No mouse || Switch keyb.
TDD AS YOU MEANT IT

1. write exactly ONE failing test

2. make this test pass by first writing implementation code IN THE TEST METHOD

3. create a new implementation method by:
   1. doing extract method on implementation code created as per (2), or

   2. moving implementation code as per (2) into an existing implementation
      method

4. only ever create new methods IN THE TEST CLASS

5. only ever create implementation classes to provide a destination for extracting a
   method created as per (4).

6. populate implementation classes by doing move method from a test class into
   them

7. refactor as required

8. go to (1)
Rétro #4             14h40 15h00
Does your code work at the end of the session ?
What is your implementation path ?
How was your pair programming experience ?
How was your TDD experience ? How did it help ?
Did you notice any code smells ?
Did you notice any communication smells ?
Any tips for the others ?
Session #5                     15h00 15h40
1. a game is over when all fields are taken
2. a game is over when all fields in a column are taken by a
   player
3. a game is over when all fields in a row are taken by a player
4. a game is over when all fields in a diagonal are taken by a
   player
5. a player can take a field if not already taken
6. players take turns taking fields until the game is over



     No Loops || No if(s) || Small methods (<5)
Rétro #5             15h40 16h00
Does your code work at the end of the session ?
What is your implementation path ?
How was your pair programming experience ?
How was your TDD experience ? How did it help ?
Did you notice any code smells ?
Did you notice any communication smells ?
Any tips for the others ?
Session #6                     16h00 16h40
1. a game is over when all fields are taken
2. a game is over when all fields in a column are taken by a
   player
3. a game is over when all fields in a row are taken by a player
4. a game is over when all fields in a diagonal are taken by a
   player
5. a player can take a field if not already taken
6. players take turns taking fields until the game is over


     No Loops || No if(s) || Small methods (<5)
Day Retrospective

What did you learn today ?


What were you surprised about today ?


What will you apply starting Monday ?

Contenu connexe

Similaire à Code retreat june24th

Book print & go soccer practice plans
Book   print & go soccer practice plansBook   print & go soccer practice plans
Book print & go soccer practice plans
Jock Dias
 
Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)
Peter Kofler
 

Similaire à Code retreat june24th (13)

Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
 
Liberating Structures 2 with blended f2f/online participation at #sfaddis
Liberating Structures 2 with blended f2f/online participation at #sfaddisLiberating Structures 2 with blended f2f/online participation at #sfaddis
Liberating Structures 2 with blended f2f/online participation at #sfaddis
 
Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)
 
Book print & go soccer practice plans
Book   print & go soccer practice plansBook   print & go soccer practice plans
Book print & go soccer practice plans
 
Alternate Dimension Portal/ Test Plans
Alternate Dimension Portal/ Test PlansAlternate Dimension Portal/ Test Plans
Alternate Dimension Portal/ Test Plans
 
Global Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul EventGlobal Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul Event
 
Organise a Code Dojo!
Organise a Code Dojo!Organise a Code Dojo!
Organise a Code Dojo!
 
Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)
 
Coding Dojo Applied
Coding Dojo AppliedCoding Dojo Applied
Coding Dojo Applied
 
Mastering the Art of Facilitation
Mastering the Art of FacilitationMastering the Art of Facilitation
Mastering the Art of Facilitation
 
Coderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your CraftsCoderetreat - Practice to Master Your Crafts
Coderetreat - Practice to Master Your Crafts
 
Playdoh... play on
Playdoh... play onPlaydoh... play on
Playdoh... play on
 
Code Retreat Vsetin 12/08/2012
Code Retreat Vsetin 12/08/2012Code Retreat Vsetin 12/08/2012
Code Retreat Vsetin 12/08/2012
 

Plus de Jean-Laurent de Morlhon

Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Jean-Laurent de Morlhon
 

Plus de Jean-Laurent de Morlhon (10)

Culture du Programmeur
Culture du ProgrammeurCulture du Programmeur
Culture du Programmeur
 
Git fu
Git fuGit fu
Git fu
 
Software Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTourSoftware Craftsmanship : en Pratique - AgileTour
Software Craftsmanship : en Pratique - AgileTour
 
Software Craftsmanship: En pratique
Software Craftsmanship: En pratiqueSoftware Craftsmanship: En pratique
Software Craftsmanship: En pratique
 
SVN to GitHUb
SVN to GitHUbSVN to GitHUb
SVN to GitHUb
 
Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...
Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...
Comment j'ai remplacé 30% de mes développeurs en adoptant l'agilité... et aut...
 
Scrum, 3 Ans après...
Scrum, 3 Ans après...Scrum, 3 Ans après...
Scrum, 3 Ans après...
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Scrum & VIdal Retour d'experience
Scrum & VIdal Retour d'experienceScrum & VIdal Retour d'experience
Scrum & VIdal Retour d'experience
 
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
Construire une ligne de produit logiciel "toyotisme ou fordisme" ?
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Code retreat june24th

  • 1. Code Retreat june 24th 2011 - XEBIA
  • 3. Deliberate Practice Improve ability to perform a task Repetition, repetition, repetition... Not complete the task, but master it.
  • 4. Simple Design Run all tests and check they pass. Don't Repeat Yourself Reveal intent Small methods & classes
  • 5. Open your mind ! Try things you can't try @ work. Do silly things that just *can't* work... Explore, experiment. Pair with as much people as you can Don't be shy, try new languages.
  • 6. Introduction a session lasts 40 minutes followed by a 10-15 minutes retrospective pair programming swap on each session delete all code after each session
  • 7. Planning 10h00 14h00 Code Session 1 Code Session 4 Retrospective 1 Retrospective 4 11h00 15h00 Code Session 2 Code Session 5 Retrospective 2 Retrospective 5 12h00 16h00 Code Session 3 Code Session 6 Retrospective 3 16h40 13h00 Day Retrospective ... Lunch 14h00
  • 9. TicTacToe rules 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over
  • 10. Session #1 10h00 10h40 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over
  • 11. Rétro #1 10h40 11h00 Does your code work at the end of the session ? What is your implementation path ? How was your pair programming experience ? How was your TDD experience ? How did it help ? Did you notice any code smells ? Did you notice any communication smells ? Any tips for the others ?
  • 12. Session #2 11h00 11h40 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over
  • 13. Rétro #2 11h40 12h00 Does your code work at the end of the session ? What is your implementation path ? How was your pair programming experience ? How was your TDD experience ? How did it help ? Did you notice any code smells ? Did you notice any communication smells ? Any tips for the others ?
  • 14. Session #3 12h00 12h40 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over
  • 15. Rétro #3 12h40 13h00 Does your code work at the end of the session ? What is your implementation path ? How was your pair programming experience ? How was your TDD experience ? How did it help ? Did you notice any code smells ? Did you notice any communication smells ? Any tips for the others ?
  • 17. Session #4 14h00 14h40 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over TDD as you meant it || No mouse || Switch keyb.
  • 18. TDD AS YOU MEANT IT 1. write exactly ONE failing test 2. make this test pass by first writing implementation code IN THE TEST METHOD 3. create a new implementation method by: 1. doing extract method on implementation code created as per (2), or 2. moving implementation code as per (2) into an existing implementation method 4. only ever create new methods IN THE TEST CLASS 5. only ever create implementation classes to provide a destination for extracting a method created as per (4). 6. populate implementation classes by doing move method from a test class into them 7. refactor as required 8. go to (1)
  • 19. Rétro #4 14h40 15h00 Does your code work at the end of the session ? What is your implementation path ? How was your pair programming experience ? How was your TDD experience ? How did it help ? Did you notice any code smells ? Did you notice any communication smells ? Any tips for the others ?
  • 20. Session #5 15h00 15h40 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over No Loops || No if(s) || Small methods (<5)
  • 21. Rétro #5 15h40 16h00 Does your code work at the end of the session ? What is your implementation path ? How was your pair programming experience ? How was your TDD experience ? How did it help ? Did you notice any code smells ? Did you notice any communication smells ? Any tips for the others ?
  • 22. Session #6 16h00 16h40 1. a game is over when all fields are taken 2. a game is over when all fields in a column are taken by a player 3. a game is over when all fields in a row are taken by a player 4. a game is over when all fields in a diagonal are taken by a player 5. a player can take a field if not already taken 6. players take turns taking fields until the game is over No Loops || No if(s) || Small methods (<5)
  • 23. Day Retrospective What did you learn today ? What were you surprised about today ? What will you apply starting Monday ?