Slide 1

Slide 1 text

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

Slide 12

Slide 12 text

Schedule Retrospective Break Closing Ceramony Coding 45 10 5 5 5 5 5 10 10 10 10 15 45 45 45 45 45 Lunch

Slide 13

Slide 13 text

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