SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
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 ?

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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" ?
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Kürzlich hochgeladen (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

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 ?