celebrating passion and craftsmanship
November 15, 2014
Global Day of
Coderetreat
Slide 2
Slide 2 text
Organizators
Agile Turkey established in 2008
as a nonprofit organization.
It aims to enhance IT project
success in the Turkish market by
expanding the world wide proven
Agile Methodologies’ usage.
Facilitators
Lemi Orhan Ergin
Umut Işık
Slide 3
Slide 3 text
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
Slide 4
Slide 4 text
have to improve their craft
Developers
Slide 5
Slide 5 text
is the best way how we improve our craft
Practicing
Slide 6
Slide 6 text
How to Practice
Challenge
Repeat
Feedback
again and again and again and again
Slide 7
Slide 7 text
How to Practice
No Pressure
do not complete the task
but master it
Slide 8
Slide 8 text
practicing
mastering
Code Retreat is about
and
Slide 9
Slide 9 text
writing
the perfect code
Code Retreat is about
Slide 10
Slide 10 text
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
Slide 11
Slide 11 text
1 day coding
45 minutes sessions
Pair programming
Test first development
Different partners on each session
Different constraints
Format
Code generation is not important
Generate code by thinking the design
Focus on naming test cases
Focus on Red/Green/Refactor cycle
Why Repeating?
Slide 14
Slide 14 text
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?
Slide 15
Slide 15 text
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
Slide 16
Slide 16 text
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
Slide 17
Slide 17 text
Global Day of
Code Retreat
6 continents
137 cities
20 timezones
2000+ developers
31 hours of coding
coderetreat.org
Coderetreat Community Network
November 15, 2014
https://www.flickr.com/photos/stef3d/4560661663
Slide 18
Slide 18 text
Global Day of
Code Retreat
Thanks to hundreds of
hosts and facilitators
worldwide
coderetreat.org
Coderetreat Community Network
November 15, 2014
https://www.flickr.com/photos/stef3d/4560661663
Slide 19
Slide 19 text
This year's Global Day of Coderetreat supports CoderDojo
Any funds not used to support GDCR will go to CoderDojo
coderdojo.com
Slide 20
Slide 20 text
https://www.youtube.com/watch?v=H04wb0ESD4o
Slide 21
Slide 21 text
CoderDojo is a global volunteer-led community of free
programming clubs for young people between 7 and 17.
CoderDojo gives young people all over the world better
access to the “Magic behind the technology” that surrounds
us and touches almost everything that we do in our lives.
coderdojo.com
Slide 22
Slide 22 text
Today, there are over 500 Dojos spread across 48 countries
from Ireland, to the USA, to Japan, and even Nigeria.
coderdojo.com
Slide 23
Slide 23 text
Within CoderDojo there is a focus on developing creativity, a
sense of community, peer learning skills, mentoring and self
led learning with an emphasis on openness and showing
how coding can be a force for positive change.
coderdojo.com
Slide 24
Slide 24 text
We cannot make it
without their support
Slide 25
Slide 25 text
A software company and community of
passionate individuals whose purpose is to
revolutionise software creation and delivery,
while advocating for positive social change.
www.thoughtworks.com
Slide 26
Slide 26 text
GitHub is the best place to share code with
friends, co-workers, classmates, and complete
strangers. Over seven million people use GitHub
to build amazing things together.
www.github.com
Slide 27
Slide 27 text
www.dnsimple.com
DNSimple is a hosted DNS service that you can
use to manage your domains.
Slide 28
Slide 28 text
www.sony.com.tr
www.acm-software.com
Slide 29
Slide 29 text
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
https://leanpub.com/4rulesofsimpledesign
Slide 30
Slide 30 text
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
Slide 31
Slide 31 text
Simple Design
Express Intent
4 Rules of
Paying attention to the names and how your
code expresses itself is the key.
2
Slide 32
Slide 32 text
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
Slide 33
Slide 33 text
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
Slide 34
Slide 34 text
http://blog.thecodewhisperer.com/2013/12/07/putting-an-age-old-battle-to-rest
“Putting an Age-Old Battle to Rest” by Joe Rainsberger
The Simple Design Dynamo
Slide 35
Slide 35 text
TDD
Write exactly one new test
1
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
Slide 36
Slide 36 text
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:
Slide 37
Slide 37 text
Each cell has 8 neighbours
and follows 3 rules
1 2 3
4
5
6
7
8
Slide 38
Slide 38 text
Any live cell with fewer than 2 live neighbours
dies of loneliness
Rule 1
Slide 39
Slide 39 text
Any live cell with more than 3 live neighbours
dies of overcrowding
Rule 2
Slide 40
Slide 40 text
Any dead cell with exactly 3 live neighbours
comes to life of warmth
Rule 3
Slide 41
Slide 41 text
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
Slide 42
Slide 42 text
ENJOY
remember
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
Slide 43
Slide 43 text
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.
Slide 44
Slide 44 text
No constraints
Do your best
Slide 45
Slide 45 text
Ping-pong pair programming
Slide 46
Slide 46 text
No primitives
Use only immutable objects
Slide 47
Slide 47 text
No primitives
No conditionals
Max 5 lines of code
Slide 48
Slide 48 text
No way to return any value
Verbs instead of Nouns
Slide 49
Slide 49 text
Mute ping-pong
Slide 50
Slide 50 text
What, if anything, did you learn today?
What, if anything, surprised you today?
What, if anything, will you do differently?
closing
Slide 51
Slide 51 text
The photo on the first slide is taken by Mirza Abdurrahim Çetin.
It is adapted as allowed by the license CC BY-NC 2.0
https://www.flickr.com/photos/abdurrahimcetin/5773149987
https://creativecommons.org/licenses/by-nc/2.0