Post on 27-Jun-2015
description
transcript
celebrating passion and craftsmanship
November 15, 2014Global Day ofCoderetreat
ISTANBUL
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
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
have to improve their craft
Developers
is the best way how we improve our craftPracticing
How to PracticeChallenge
Repeat Feedback
again and again and again and again
How to Practice
No Pressuredo not complete the task
but master it
practicing
mastering
Code Retreat is about
and
writing the perfect code
Code Retreat is about
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
1 day coding 45 minutes sessions
Pair programming Test first development
Different partners on each session Different constraints
Format
Schedule
Retrospective Break
Closing Ceramony
Coding 45
105 5 5 5 5
10 10 10 10 15
45 45 45 45 45
Lunc
h
Code generation is not important Generate code by thinking the design
Focus on naming test cases Focus on Red/Green/Refactor cycle
Why Repeating?
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?
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
HistoryThe 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 Haineshttps://www.flickr.com/photos/charliekilo/7717370426
Global Day of Code Retreat
6 continents 137 cities 20 timezones 2000+ developers 31 hours of coding
coderetreat.orgCoderetreat Community Network
November 15, 2014
https://www.flickr.com/photos/stef3d/4560661663
Global Day of Code Retreat
Thanks to hundreds of hosts and facilitators
worldwide
coderetreat.orgCoderetreat Community Network
November 15, 2014
https://www.flickr.com/photos/stef3d/4560661663
This year's Global Day of Coderetreat supports CoderDojo Any funds not used to support GDCR will go to CoderDojo
coderdojo.com
https://www.youtube.com/watch?v=H04wb0ESD4o
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
Today, there are over 500 Dojos spread across 48 countries from Ireland, to the USA, to Japan, and even Nigeria.
coderdojo.com
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
SponsorsWe cannot make it
without their support
Galaxy Sponsor
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
globe Sponsor
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
continent Sponsor
www.dnsimple.com
DNSimple is a hosted DNS service that you can use to manage your domains.
local Sponsors
www.sony.com.tr
www.acm-software.com
Simple DesignSimple 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
Simple DesignTests 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
Simple DesignExpress Intent
4 Rules of
Paying attention to the names and how your code expresses itself is the key.
2
Simple DesignNo 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
Simple DesignSmall
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
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
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
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 LifeProblem to solve:
Each cell has 8 neighbours and follows 3 rules
1 2 3
4
567
8
Any live cell with fewer than 2 live neighbours dies of loneliness
Rule 1
Any live cell with more than 3 live neighbours dies of overcrowding
Rule 2
Any dead cell with exactly 3 live neighbours comes to life of warmth
Rule 3
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
ENJOYremember whatever you do do not forget to
https://www.flickr.com/photos/fraserspeirs/3394902061Joe O'Brien and Jim Weirich while doing ruby code review
sessionslet the
beginWe 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.
No constraints Do your best
session 1
Ping-pong pair programming
session 2
No primitives Use only immutable objects
session 3
No primitives No conditionals
Max 5 lines of code
session 4
No way to return any value Verbs instead of Nouns
session 5
Mute ping-pong
session 6
What, if anything, did you learn today? What, if anything, surprised you today?
What, if anything, will you do differently?
closing
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/5773149987https://creativecommons.org/licenses/by-nc/2.0
credits