SlideShare a Scribd company logo
Code retreat

www.mozaicworks.com
Me

Adi Bolboaca
Organizational & Technical
Trainer & Coach
www.mozaicworks.com
Why?
Learn through pairing
Extend your comfort zone
Practice
Experiment
Learn new practices

www.mozaicworks.com
How?
1 day of coding
Choose a simple problem
6 pairing partners
On average 135 minutes of coding
6 different constraints
A lot of fun!

www.mozaicworks.com
How it started
CodeMash conference 2009
Gary Bernhardt
Patrick Welsh
Nayan Hajratwala
Corey Haines

www.mozaicworks.com
How it started
Repeatable
Day-long
Practice the fundamentals of programming
Intense day of coding

www.mozaicworks.com
Day structure
15' introduction
3 sessions of 45' coding + 15' retro&break
1h lunch
3 sessions of 45' coding + 15' retro&break
15' closing circle

www.mozaicworks.com
Principles
Language agnostic
Do not try to finish the problem
Delete the code after each session
Focus on practicing
Experiment each session
Have fun!

www.mozaicworks.com
Prerequisites
Computer
Coding environment
Testing framework
Source control (git, svn, etc)

www.mozaicworks.com
The four elements of simple design
1) Passes its tests
2) Minimizes duplication
3) Maximizes clarity
4) Has fewer elements

www.mozaicworks.com
Conway's game of life
Having an infinite 2D orthogonal universe
Being given an initial generation called a seed
The following rules are applied simultaneously
A live cell having less than 2 live neighbors dies
A live cell having 2 or 3 live neighbors lives
A live cell having more than 3 neighbors dies
A dead cell having 3 neighbors becomes alive

www.mozaicworks.com
First session
Ping-pong pair-programming
Option 1: evil coding
Option 2: silent pairing
Option 3: beginner's mind

www.mozaicworks.com
Conway's game of life
Having an infinite 2D orthogonal universe
Being given an initial generation called a seed
The following rules are applied simultaneously
A live cell having less than 2 live neighbors dies
A live cell having 2 or 3 live neighbors lives
A live cell having more than 3 neighbors dies
A dead cell having 3 neighbors becomes alive

www.mozaicworks.com
Programming by Wishful Thinking
1.Find a real-life scenario from top to bottom
2.Write an acceptance test on the scenario
3.Write the first unit test at the top
4.Whenever your test or implementation needs something, create a
stub
5.Go on writing next test until you reach the bottom layer
6.Only implement the stubs that you need for your vertical slice
7.Make the real-life scenario test pass
8.Write the next real-life scenario

www.mozaicworks.com
Only one decision at a time
1.Introduce only one notion at a time
2.Write down what notions you introduced
3.Note down the steps/tests you took
4.Write down which were the decisions you needed to revert from

www.mozaicworks.com
Code retreat

1 hour Lunch

www.mozaicworks.com
Tell don't ask
The internal state of a class is not accessible
A method call sends all the data needed to retrieve an
answer
Each class computes the output using only its internal
state

www.mozaicworks.com
Focus on refactoring
Use naming that reveals intent
Rename concepts to improve naming (use domain
language)
Extract duplicate identical chunks of code
Extract methods having the same noun into their class
Split methods containing Or, And in their names

www.mozaicworks.com
Code retreat

Choose your own practice
Decide with your pair in the first 5 minutes

www.mozaicworks.com
Closing circle
1) How did you feel?
2) What did you learn today?
3) What will you do differently tomorrow?

www.mozaicworks.com
Code retreat
Why?
Learn through pairing
Extend your comfort zone
Practice
Experiment
Learn new practices

www.mozaicworks.com
Contact me
●

Remote pair-programming

●

Unit testing workshop

●

Test driven development workshop

●

Clean code workshop

●

Refactoring workshop

●

Legacy code retreat

●

●

Working FAST and Safe with existing
code
Code retreat

www.mozaicworks.com
Code retreat
Extend your mentoring & training
capacity
Accelerate learning through
communities of practice
Grow your functional leaders and
top talents

http://www.mozaicworks.com
adrian.bolboaca@mozaicworks.com
@adibolb

More Related Content

PDF
Coderetreat @Sibiu 2012 08 18
PPTX
Intro to TDD
PDF
Yana Lysa "Best practices of building good manual test suits"
ODP
Unit testing-patterns
PDF
Evolutionary Design - Refactoring Heuristics
PPTX
Value of Unit Testing
PDF
How to involve your team in analysis
PDF
Effective Unit Testing
Coderetreat @Sibiu 2012 08 18
Intro to TDD
Yana Lysa "Best practices of building good manual test suits"
Unit testing-patterns
Evolutionary Design - Refactoring Heuristics
Value of Unit Testing
How to involve your team in analysis
Effective Unit Testing

Viewers also liked (9)

PDF
Crucial Confrontations Overview
PDF
Brad wood -_whats_a_pull_request
PDF
Code Retreat
ZIP
Introduction to software craftsmanship
ODP
Introduction to software craftsmanship
PDF
Crucial accountability-preparation-worksheet
PPTX
Crucial confrontations
PDF
TDD with LEGO at SDEC13
PDF
Understanding bdd and tdd with lego
Crucial Confrontations Overview
Brad wood -_whats_a_pull_request
Code Retreat
Introduction to software craftsmanship
Introduction to software craftsmanship
Crucial accountability-preparation-worksheet
Crucial confrontations
TDD with LEGO at SDEC13
Understanding bdd and tdd with lego
Ad

Similar to Coderetreat Slides on the Global Day of Coderetreat, Bucharest, December 2013 (20)

ODP
Coderetreat @AgileFinland Helsinki 2014 11 13
PDF
Coderetreat @AgileWorks Bucharest 2012 07 06
PDF
Coderetreat @Vienna 2013 06 08
PDF
Coderetreat @Sofia 2012 10 27
ODP
Coderetreat @AgileFinland Tampere 2014 11 12
ODP
Code retreat @AgileWorks Bucharest 7 September 2013
PDF
Coderetreat @Turku 2012 10 20
ODP
Coderetreat @AgileFinland Turku 2014 11 15
PDF
Global Day of Coderetreat'14 - Istanbul Event
PDF
Kata Your Way to SW Craftsmanship
PPTX
Bye Bye Cowboy Coder Days! (Legacy Code & TDD)
PDF
Unit Testing Best Practices
PDF
Adopting tdd in the workplace
PDF
Adopting tdd in the workplace
PDF
Day1 - TDD (Lecture SS 2015)
PPTX
Triggers for Admins: A Five-step Framework for Creating Triggers
PDF
Advanced java script essentials v1
PPTX
Competitive Programming Guidance by Microsoft Engineer
PDF
Web 2.0 Quiz & Assessment Tools
PDF
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Coderetreat @AgileFinland Helsinki 2014 11 13
Coderetreat @AgileWorks Bucharest 2012 07 06
Coderetreat @Vienna 2013 06 08
Coderetreat @Sofia 2012 10 27
Coderetreat @AgileFinland Tampere 2014 11 12
Code retreat @AgileWorks Bucharest 7 September 2013
Coderetreat @Turku 2012 10 20
Coderetreat @AgileFinland Turku 2014 11 15
Global Day of Coderetreat'14 - Istanbul Event
Kata Your Way to SW Craftsmanship
Bye Bye Cowboy Coder Days! (Legacy Code & TDD)
Unit Testing Best Practices
Adopting tdd in the workplace
Adopting tdd in the workplace
Day1 - TDD (Lecture SS 2015)
Triggers for Admins: A Five-step Framework for Creating Triggers
Advanced java script essentials v1
Competitive Programming Guidance by Microsoft Engineer
Web 2.0 Quiz & Assessment Tools
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Ad

More from Adi Bolboaca (11)

PDF
Evolutionary Design - NewCrafts Paris 18 May 2018
ODP
Stop Task Switching
ODP
Evolutionary Design: Take Only One Decision at a Time
ODP
Behind Agile Practices
ODP
Architecture for Disaster Resistant Systems @I TAKE Unconference 29 05 2015
ODP
Refactoring Dojo @AgileWorks Bucharest 21 May 2014
ODP
Sherlock Holmes and Pairing @Romanian Testing Conference 2014 05 15
ODP
TDD Mini Workshop @ Bucharest JUG 2014 04 24
ODP
Sherlock Holmes and Pairing @Bucharest JUG 2013 11 21
ODP
Sherlock Holmes and Pairing @Wlidcard Conference 2013 09 13
PDF
Legacy Coderetreat @Budapest 2013 02 16
Evolutionary Design - NewCrafts Paris 18 May 2018
Stop Task Switching
Evolutionary Design: Take Only One Decision at a Time
Behind Agile Practices
Architecture for Disaster Resistant Systems @I TAKE Unconference 29 05 2015
Refactoring Dojo @AgileWorks Bucharest 21 May 2014
Sherlock Holmes and Pairing @Romanian Testing Conference 2014 05 15
TDD Mini Workshop @ Bucharest JUG 2014 04 24
Sherlock Holmes and Pairing @Bucharest JUG 2013 11 21
Sherlock Holmes and Pairing @Wlidcard Conference 2013 09 13
Legacy Coderetreat @Budapest 2013 02 16

Recently uploaded (20)

PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
PDF
Getting Started with Data Integration: FME Form 101
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
Architecture types and enterprise applications.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
Developing a website for English-speaking practice to English as a foreign la...
PPT
What is a Computer? Input Devices /output devices
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Chapter 5: Probability Theory and Statistics
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
TLE Review Electricity (Electricity).pptx
PPTX
1. Introduction to Computer Programming.pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
Zenith AI: Advanced Artificial Intelligence
NewMind AI Weekly Chronicles - August'25-Week II
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
Getting Started with Data Integration: FME Form 101
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Web App vs Mobile App What Should You Build First.pdf
Architecture types and enterprise applications.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
observCloud-Native Containerability and monitoring.pptx
Developing a website for English-speaking practice to English as a foreign la...
What is a Computer? Input Devices /output devices
Assigned Numbers - 2025 - Bluetooth® Document
Chapter 5: Probability Theory and Statistics
Final SEM Unit 1 for mit wpu at pune .pptx
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
NewMind AI Weekly Chronicles – August ’25 Week III
Module 1.ppt Iot fundamentals and Architecture
TLE Review Electricity (Electricity).pptx
1. Introduction to Computer Programming.pptx

Coderetreat Slides on the Global Day of Coderetreat, Bucharest, December 2013

  • 2. Me Adi Bolboaca Organizational & Technical Trainer & Coach www.mozaicworks.com
  • 3. Why? Learn through pairing Extend your comfort zone Practice Experiment Learn new practices www.mozaicworks.com
  • 4. How? 1 day of coding Choose a simple problem 6 pairing partners On average 135 minutes of coding 6 different constraints A lot of fun! www.mozaicworks.com
  • 5. How it started CodeMash conference 2009 Gary Bernhardt Patrick Welsh Nayan Hajratwala Corey Haines www.mozaicworks.com
  • 6. How it started Repeatable Day-long Practice the fundamentals of programming Intense day of coding www.mozaicworks.com
  • 7. Day structure 15' introduction 3 sessions of 45' coding + 15' retro&break 1h lunch 3 sessions of 45' coding + 15' retro&break 15' closing circle www.mozaicworks.com
  • 8. Principles Language agnostic Do not try to finish the problem Delete the code after each session Focus on practicing Experiment each session Have fun! www.mozaicworks.com
  • 9. Prerequisites Computer Coding environment Testing framework Source control (git, svn, etc) www.mozaicworks.com
  • 10. The four elements of simple design 1) Passes its tests 2) Minimizes duplication 3) Maximizes clarity 4) Has fewer elements www.mozaicworks.com
  • 11. Conway's game of life Having an infinite 2D orthogonal universe Being given an initial generation called a seed The following rules are applied simultaneously A live cell having less than 2 live neighbors dies A live cell having 2 or 3 live neighbors lives A live cell having more than 3 neighbors dies A dead cell having 3 neighbors becomes alive www.mozaicworks.com
  • 12. First session Ping-pong pair-programming Option 1: evil coding Option 2: silent pairing Option 3: beginner's mind www.mozaicworks.com
  • 13. Conway's game of life Having an infinite 2D orthogonal universe Being given an initial generation called a seed The following rules are applied simultaneously A live cell having less than 2 live neighbors dies A live cell having 2 or 3 live neighbors lives A live cell having more than 3 neighbors dies A dead cell having 3 neighbors becomes alive www.mozaicworks.com
  • 14. Programming by Wishful Thinking 1.Find a real-life scenario from top to bottom 2.Write an acceptance test on the scenario 3.Write the first unit test at the top 4.Whenever your test or implementation needs something, create a stub 5.Go on writing next test until you reach the bottom layer 6.Only implement the stubs that you need for your vertical slice 7.Make the real-life scenario test pass 8.Write the next real-life scenario www.mozaicworks.com
  • 15. Only one decision at a time 1.Introduce only one notion at a time 2.Write down what notions you introduced 3.Note down the steps/tests you took 4.Write down which were the decisions you needed to revert from www.mozaicworks.com
  • 16. Code retreat 1 hour Lunch www.mozaicworks.com
  • 17. Tell don't ask The internal state of a class is not accessible A method call sends all the data needed to retrieve an answer Each class computes the output using only its internal state www.mozaicworks.com
  • 18. Focus on refactoring Use naming that reveals intent Rename concepts to improve naming (use domain language) Extract duplicate identical chunks of code Extract methods having the same noun into their class Split methods containing Or, And in their names www.mozaicworks.com
  • 19. Code retreat Choose your own practice Decide with your pair in the first 5 minutes www.mozaicworks.com
  • 20. Closing circle 1) How did you feel? 2) What did you learn today? 3) What will you do differently tomorrow? www.mozaicworks.com
  • 21. Code retreat Why? Learn through pairing Extend your comfort zone Practice Experiment Learn new practices www.mozaicworks.com
  • 22. Contact me ● Remote pair-programming ● Unit testing workshop ● Test driven development workshop ● Clean code workshop ● Refactoring workshop ● Legacy code retreat ● ● Working FAST and Safe with existing code Code retreat www.mozaicworks.com
  • 23. Code retreat Extend your mentoring & training capacity Accelerate learning through communities of practice Grow your functional leaders and top talents http://www.mozaicworks.com adrian.bolboaca@mozaicworks.com @adibolb