Coderetreat is a one day intense workshop for software developers for imporving their development skills by practicing. This is the material I presented at the beginning of coderetreat I facilitated on May 2014.
3. like to work alone
feel safe to work on confort zone
have to focus on daily work
skip writing tests
cannot find time to experiment
not willing to learn new practices
do not think about design
focus on gettings things done
over-engineer
do not refactor
Developers
10. learning through pairing
extending your confort zone
no pressure of daily work
experimenting
learning new practices
thinking deeply about design
building structures simple
developing whenever required
refactoring
Code Retreat is about
11. 1 day coding
45 minutes sessions
Pair programming
Test first development
Different partners on each session
Different constraints
Format
13. History
The idea was spawned at
CodeMash Conference’09
!
The owners of the idea
Gary Bernhardt
Patrick Welsh
Nayan Hajratwala
Corey Haines
!
First was held on
January 24, 2009
Corey Haines
https://www.flickr.com/photos/charliekilo/7717370426
14. Global Day of
Code Retreat
2000+ developers
150+ locations
20 timezones
16 hours of coding
6 continents
coderetreat.org
Coderetreat Community Network
14th of December
https://www.flickr.com/photos/stef3d/4560661663
15. Code generation is not important
Generate code by thinking the design
Focus on naming test cases
Focus on Red/Green/Refactor cycle
Why Repeating?
16. You are not your code
Learn to go slower
Focus on being better
Do not think about finishing
It’s all about practicing
Why Deleting?
17. Language agnostic
Do not try to complete
Focus on practicing
Write code than open to accept change
Follow 4 rules of simple design
Delete code after each session
Have fun
Principles
19. Simple Design
Simple design in one that is
easy to change.
We don’t know exactly what is going to need to change
We’ll never be more ignorant than we are at this moment
20. Simple Design
Tests pass
4 Rules of
“Tests pass” can be a significant factor in
making changes. If you have to ask how fast
your test suite should be, it should be faster
1
22. Simple Design
No Duplication (DRY)
4 Rules of
It’s not about code duplication, it’s about
knowledge duplication. Don’t repeat yourself.
Every piece of knowledge should have one and
only one representation.
3
23. Simple Design
Small
4 Rules of
Has fewer classes, modules, packages. Any not-
used code should be deleted. You should also
check missing or duplicate abstractions. Over-
extraction should also be not allowed.
4
25. TDDWrite exactly one new test1
2 Run the test to make sure it fails
3 Write least amount of code to make the test pass
4 Refactor to remove duplication
5 Repeat the process
Test Driven Development
Test Driven Design
Test First Development
26. Zero-player game
Cellular automation system
Devised by John Horton Conway
Evolution is determined by initial state
Each cell can be alive or dead
Conway’s Game of Life
Problem to solve:
27. Each cell has 8 neighbours
and follows 3 rules
1 2 3
4
567
8
28. Any live cell with fewer than 2 live neighbours
dies of loneliness
Rule 1
29. Any live cell with more than 3 live neighbours
dies of overcrowding
Rule 2
30. Any dead cell with exactly 3 live neighbours
comes to life of warmth
Rule 3
31. Avoid to use primitives
Avoid to use conditional conditions (if, ?:, switch)
Avoid to use loops (while, for)
All methods return void
Max 5 lines of code per method
Verbs instead of nouns
Ping pong programming
Mute ping pong programming
Swap computers
Do not use mouse
Variations
32. ENJOYremember
whatever you do
do not forget to
https://www.flickr.com/photos/fraserspeirs/3394902061
Joe O'Brien and Jim Weirich while doing ruby code review
33. sessions
let the
begin
We select 6 activities amoung the activities list after checking
TDD and pair programming experiences of the attendees.
Every coderetreat has its own set of activities.
40. What, if anything, did you learn today?
What, if anything, surprised you today?
What, if anything, will you do differently?
closing
41. https://leanpub.com/4rulesofsimpledesign
The only thing we truly know about
software development is that we can
expect changes to our system. Through
concrete examples, let's explore ways
to build flexible, adaptable software
systems by better understanding Kent
Beck's 4 Rules of Simple Design.
Book from
Corey Haines
Published at LeanPub on 2014
43. Lemİ orhan ergİn
Founder & Author @ agilistanbul.com
lemiorhan@agilistanbul.com
@lemiorhan
https://www.linkedin.com/in/lemiorhan
@lemiorhan
https://twitter.com/lemiorhan
@lemiorhan
https://github.com/lemiorhan
@lemiorhan
http://www.slideshare.net/lemiorhan
agile software craftsman
agilistanbul.com
Turkish blog about agile development
lemiorhanergin.com
Official site having personal information