coderetreat in lille 06 05 2017
TRANSCRIPT
www.mozaicworks.com
Me
Adi BolboacaOrganizational & Technical
Trainer & Coach
Why You
Start Using
Should
Why You
Start Using
Should
Why You
Start Using
Should
Why You
Start Using
Should
Why You
Start Using
Should
Why You
Start Using
Should
Why You
Start Using
Should
Why You
Start Using
Should
2009, First time outside US
Why?
Learn through pairingExtend your comfort zone
PracticeExperiment
Learn new practices
www.mozaicworks.com
How?
1 day of codingChoose a simple problem
6 pairing partnersOn average 135 minutes of coding
6 different constraintsA lot of fun!
www.mozaicworks.com
Day structure
15' introduction3 sessions of 45' coding + 15' retro&break
1h lunch3 sessions of 45' coding + 15' retro&break
15' closing circle
www.mozaicworks.com
Principles
Language agnosticDo not try to finish the problem
Delete the code after each sessionFocus on practicing
Experiment each sessionHave fun!
www.mozaicworks.com
How to take advantage1. Embrace the freedom of deleting the code
2. Do what you always wanted but couldn't
3. Get out of your comfort zone
4. Pair with strangers in languages you don't know
5. What you learn is your responsibility
Prerequisites
ComputerCoding environmentTesting framework
Source control (git, svn, etc)
www.mozaicworks.com
Class Rules
Write codeDiscuss codePresentations
Important: There is no best solution. It depends.
You will receive slides on email
www.mozaicworks.com
Today’s purposes
As discussed with your colleagues:
1. Write tests on your code2. Collaborate by pair-programming
3. The code looks like on person wrote it
www.mozaicworks.com
What would you like to learn?
Use post-itsWrite one idea on post-it
When ready stick them on the flip-chart
Important: The list is always open
www.mozaicworks.com
Conway's game of life
Having an infinite 2D orthogonal universeBeing given an initial generation called a seedThe following rules are applied simultaneously
A live cell having less than 2 live neighbors diesA live cell having 2 or 3 live neighbors lives A live cell having more than 3 neighbors diesA dead cell having 3 neighbors becomes alive
www.mozaicworks.com
Session 1: Understand the problem
Find a pairChoose a programming language
Setup the environmentChoose an entry point for the problem
Understand the problemAdd any constraint if you want
www.mozaicworks.com
Conway's game of life
Having an infinite 2D orthogonal universeBeing given an initial generation called a seedThe following rules are applied simultaneously
A live cell having less than 2 live neighbors diesA live cell having 2 or 3 live neighbors lives A live cell having more than 3 neighbors diesA dead cell having 3 neighbors becomes alive
www.mozaicworks.com
RECAP Session 1
What did you learn?
What surprised you?
What would you start using?
www.mozaicworks.com
Session 2: Test drive your code
How to test your code:
Test After Design, Code, Test→Test First Design, Test, Code→
Test Driven Test, Code, Design→
Each has its purpose and usageTest Driven is very hard to learn
www.mozaicworks.com
Session 2: Test drive your code
Find a pair
Red Write the test method. The code compiles.→Green Write the → simplest code to make the
test passRefactor Look at duplication. Make the code →
look nicerImportant: Focus on testing
www.mozaicworks.com
RECAP Session 2
What did you learn?
What surprised you?
What would you start using?
www.mozaicworks.com
Session 3:Domain Driven Design
Analyze your domain1. Brainstorm Domain Entities
2. Add relationships3. Add bounded contexts
4. Add constraints (eg. invariants)5. Review the model
6. Write a guiding test for a bounded context7. Write unit tests
Check Domain Modelling Kata http://mozaicworks.com/blog/domain-modeling-kata
www.mozaicworks.com
RECAP Session 3
What did you learn?
What surprised you?
What would you start using?
www.mozaicworks.com
Session 4:Ping-Pong Pair-Programming
Choose a pairOne person write a test
The other implements the production codeThe other writes a test
The first person implements the production codeGo back
Use TDD approach
www.mozaicworks.com
RECAP Session 4
What did you learn?
What surprised you?
What would you start using?
www.mozaicworks.com
Session 5: Taking Baby Steps1) Initialize source control repository2) Start a timer for 2 minutes3) Write exactly one testa) Timer rings, the test is red, then revert and go to 2)b) The test is green before the timer rings, then commit
4) Restart timer5) Refactora) Timer rings, the refactoring is not complete then revert and restart
b) The refactoring is complete before the timer rings, commit and go to 2)
Obs.The timers must run continuously, don't stop to talk! www.mozaicworks.com
RECAP Session 5
What did you learn?
What surprised you?
What would you start using?
www.mozaicworks.com
Session 6: Code Swap
Find a pair to swap the code withWrite the best code you can for 40 minutes.
After ~40 minutes, swap the code and make a code review
Focus on Clean Code, clear names, usable software design
When review-ing write comments in the code
www.mozaicworks.com
RECAP Session 6
What did you learn?
What surprised you?
What would you start using?
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 retreatWhy?
Learn through pairingExtend your comfort zone
PracticeExperiment
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 retreatExtend your mentoring & training capacity
Accelerate learning through communities of practice
Grow your functional leaders and top talents
http://www.mozaicworks.com
@adibolb