Slide 1

Slide 1 text

Hidden Slide Slower Hidden Slide Slower November 14, 2015, Skopje Global Day of Coderetreat @dnasevic

Slide 2

Slide 2 text

Hidden Slide Slower Hacklab Kika 2011

Slide 3

Slide 3 text

Hidden Slide Slower Hacklab Kika 2012

Slide 4

Slide 4 text

Hidden Slide Slower MediaLab 2013

Slide 5

Slide 5 text

Hidden Slide Slower Ever-Near 2014

Slide 6

Slide 6 text

Sponsor + 2015 Host Hidden Slide Slower

Slide 7

Slide 7 text

What is Coderetreat? Hidden Slide Slower Codereatreat is a day-long, intensive practice event, focusing on the fundamentals of software development and design. ● Experiment in Safe environment ● Deliberate Practice ● Get Out of the Comport Zone

Slide 8

Slide 8 text

Format Hidden Slide Slower ● Problem: Conway's Game of Life ● Pair Programming ● Length of Session: 45 minutes ● Prefer using Test-Driven Development (TDD) ● After each session, pairs should be swapped ● After each session, code must be deleted

Slide 9

Slide 9 text

Goals for the day Hidden Slide Slower ● Language agnostic ● Try not to finish the problem ● Try learn new things ● Focus on practice and experiment ● Have Fun

Slide 10

Slide 10 text

Hidden Slide Slower ● Devised by the British mathematician John Horton Conway in 1970 ● Zero-player game ● Initial state ● Evolves based on 4 rules Conway's Game of Life

Slide 11

Slide 11 text

Hidden Slide Slower Examples

Slide 12

Slide 12 text

Hidden Slide Slower Seal

Slide 13

Slide 13 text

Hidden Slide Slower Any live cell with fewer than two live neighbours dies, as if caused by under-population. Rule 1 ■

Slide 14

Slide 14 text

Hidden Slide Slower ■ ■ ■ ■ ■ ■ Any live cell with two or three live neighbours lives on to the next generation. Rule 2

Slide 15

Slide 15 text

Hidden Slide Slower ■ ■ ■ ■ ■ ■ ■ ■ ■ Any live cell with more than three live neighbours dies, as if by overcrowding. Rule 3

Slide 16

Slide 16 text

Hidden Slide Slower ■ ■ ■ ■ ■ Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction. Rule 4

Slide 17

Slide 17 text

Hidden Slide Slower ■ ■ ■ ■ ■ ■ Blinker Example

Slide 18

Slide 18 text

Good code Hidden Slide Slower What are the characteristics of good code?

Slide 19

Slide 19 text

Static qualities Hidden Slide Slower ● Easy to read and understand what it does ● Easy to find the code to change ● Easy to change

Slide 20

Slide 20 text

Dynamic qualities (on runtime) Hidden Slide Slower ● Performance ● Scalability ● Security ● Robustness etc

Slide 21

Slide 21 text

4 Rules of Simple Design Hidden Slide Slower (tests) (good names) (DRY) (small)

Slide 22

Slide 22 text

1. Getting familiar with the problem 2. TDD 3. Ping-Pong Pairing 4. Methods with max 4 lines and no primitives across method boundaries 5. No in-method branching statements 6. No return values Constraints Hidden Slide Slower

Slide 23

Slide 23 text

● What, if anything, did you learn today? ● What, if anything, surprised you today? ● What, if anything, will you do differently moving forward? Retrospective Hidden Slide Slower