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...
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&br...
Principles
Language agnostic
Do not try to finish the problem
Delete the code after each session
Focus on practicing
Exper...
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...
Conway's game of life
Having an infinite 2D orthogonal universe
Being given an initial generation called a seed
The follow...
First session
Ping-pong pair-programming
Option 1: evil coding
Option 2: silent pairing
Option 3: beginner's mind

www.moz...
Conway's game of life
Having an infinite 2D orthogonal universe
Being given an initial generation called a seed
The follow...
Programming by Wishful Thinking
1.Find a real-life scenario from top to bottom
2.Write an acceptance test on the scenario
...
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...
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
answ...
Focus on refactoring
Use naming that reveals intent
Rename concepts to improve naming (use domain
language)
Extract duplic...
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.mozaicwork...
Code retreat
Why?
Learn through pairing
Extend your comfort zone
Practice
Experiment
Learn new practices

www.mozaicworks....
Contact me
●

Remote pair-programming

●

Unit testing workshop

●

Test driven development workshop

●

Clean code worksh...
Code retreat
Extend your mentoring & training
capacity
Accelerate learning through
communities of practice
Grow your funct...
Upcoming SlideShare
Loading in...5
×

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

370

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
370
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Code retreat www.mozaicworks.com
  2. 2. Me Adi Bolboaca Organizational & Technical Trainer & Coach www.mozaicworks.com
  3. 3. Why? Learn through pairing Extend your comfort zone Practice Experiment Learn new practices www.mozaicworks.com
  4. 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. 5. How it started CodeMash conference 2009 Gary Bernhardt Patrick Welsh Nayan Hajratwala Corey Haines www.mozaicworks.com
  6. 6. How it started Repeatable Day-long Practice the fundamentals of programming Intense day of coding www.mozaicworks.com
  7. 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. 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. 9. Prerequisites Computer Coding environment Testing framework Source control (git, svn, etc) www.mozaicworks.com
  10. 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. 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. 12. First session Ping-pong pair-programming Option 1: evil coding Option 2: silent pairing Option 3: beginner's mind www.mozaicworks.com
  13. 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. 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. 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. 16. Code retreat 1 hour Lunch www.mozaicworks.com
  17. 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. 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. 19. Code retreat Choose your own practice Decide with your pair in the first 5 minutes www.mozaicworks.com
  20. 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. 21. Code retreat Why? Learn through pairing Extend your comfort zone Practice Experiment Learn new practices www.mozaicworks.com
  22. 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. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×