SlideShare a Scribd company logo
1 of 57
Download to read offline
Hidden Slide Slower
Hidden Slide Slower
November 17, 2018
Celebrating passion and craft
Melbourne,
Australia
Hidden Slide Slower
2000 Developers
130 Cities
6 Continents
18 Time zones
The Global Day of Coderetreat is happening thanks
to hundreds of Hosts and Facilitators worldwide!
Global Day of Coderetreat encourages you to donate to
CoderDojo.
Hidden Slide Slower
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.
About CoderDojo
Hidden Slide Slower
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.
About CoderDojo
Hidden Slide Slower
Local Sponsor
Hidden Slide Slower
Local Sponsor
Hidden Slide Slower
Local Sponsor
Hidden Slide Slower
Morning
Hidden Slide Slower
● 08:30 Intro to the Day
● 09:00 Practice session #1
● 10:00 Practice session #2
● 11:00 Practice session #3
● 12:00 Lunch break until 1:30PM
Afternoon
Hidden Slide Slower
● 1:30 Practice session #4
● 2:30 Practice session #5
● 3:30 Practice session #6
● 4:30 Closing circle
● 5:00 End of the event
● > 5pm Drinks & Nibbles
Coderetreat
Hidden Slide Slower
● Full day activity focused on the fundamentals
of software development and design
● The goal for developers at work is to finish
something
● The goal for them during coderetreat is to
practice, not to finish
Coderetreat
Challenge yourself!
Hidden Slide Slower
● Get out of your comfort zone
● Program in languages you don’t know
● Detach yourself from your own creation
● Do what you always wanted but couldn’t
● Don’t focus on finishing
Structure
Hidden Slide Slower
● Problem:
○ Conway’s Game of Life
● Session length:
○ 45 minutes followed by a 10 minute
retrospective
● Delete your code after each session!
Structure
Hidden Slide Slower
● Pair Programming
● TDD
● Kent Beck’s 4 rules of simple design
○ code passes the tests
○ reveals intention
○ no duplication
○ fewest elements
● Don’t forget to have fun!
Pair Programming
Hidden Slide Slower
Test Driven Development
Hidden Slide Slower
● Add failing test
● Run all tests
● Write code
● Run tests
● Refactor
● Repeat
Conway’s Game of Life
Hidden Slide Slower
● A zero-player game, meaning that its evolution is
determined by its initial state
● The universe of the Game of Life is an infinite
two-dimensional grid of square cells
● Every cell is in one of two possible states: alive or dead
● Every cell interacts with its eight neighbours, which are
the cells that are horizontally, vertically, or diagonally
adjacent
Hidden Slide Slower
Conway’s Game of Life
Hidden Slide Slower
Conway’s Game of Life
1. A living cell with fewer than two living
neighbors dies.
Hidden Slide Slower
Conway’s Game of Life
2. A living cell with more than three living
neighbors dies.
Hidden Slide Slower
Conway’s Game of Life
3. A dead cell with exactly three living
neighbors comes to life.
Session #1
Hidden Slide Slower
No constraints
No constraints
Hidden Slide Slower
● Get familiar with Conway’s
Game of Life
● Use your preferred language
● Remember to delete your
code after the session
Retrospective
Hidden Slide Slower
● What went well?
● What didn’t?
● What could be improved?
Session #2
Hidden Slide Slower
Ping Pong TDD
Ping Pong TDD
Hidden Slide Slower
● Work in pairs
● Person A only writes tests
● Person B only tries to get the
tests to pass
● Both persons refactor when
appropriate
● Person B swaps roles with A
Retrospective
Hidden Slide Slower
● What went well?
● What didn’t?
● What could be improved?
Session #3
Hidden Slide Slower
No Naked Primitives
No naked primitives
Hidden Slide Slower
Primitive Obsession (Code
Smell)
It is using primitive data types to
represent domain ideas.
Eg: String for a message, Integer
to hold currency etc.
No naked primitives
Hidden Slide Slower
Objective of the session -
● To practice avoiding primitive
obsession code smell.
● Creating required “Value Objects”
● Understanding encapsulation.
No naked primitives
Hidden Slide Slower
Adding an alive cell in position [3,4]
● Primitive obsession
const population = [ [], [], [], [], [], [] ];
population[3][4] = true;
No naked primitives
Hidden Slide Slower
Adding an alive cell in position [3,4]
● No primitives
const population = new Population();
const cell = new AliveCell();
const position = new Position(3, 4);
population.set(position, cell);
Retrospective
Hidden Slide Slower
● What went well?
● What didn’t?
● What could be improved?
Session #4
Hidden Slide Slower
Baby steps
Baby steps
Hidden Slide Slower
1. TDD
2. GIT (or similar)
Baby steps
Hidden Slide Slower
1. Set the timer (4 minutes)
2. Write exactly one test
3. Write implementation to make the
test pass
4. If within time - commit
Otherwise - revert
5. Repeat
Retrospective
Hidden Slide Slower
● What went well?
● What didn’t?
● What could be improved?
Session #5
Hidden Slide Slower
Pure functions
Pure functions
Hidden Slide Slower
● A function where the return
value is only determined by
its input values, without
observable side effects
Pure functions
Hidden Slide Slower
● A pure function can only access what you pass
it, so it’s easy to see its dependencies
● When a function accesses some other program
state, such as a global variable, it is no longer
pure.
● A given invocation of a pure function can be
replaced by its result. There’s no difference
between “add(2,3)” and “5”. This property is
called referential transparency
Pure functions
Hidden Slide Slower
● Easy to test
○ To test a pure function, you declare the values
that will act as arguments and pass them to the
function. The output value needs to be verified
against the expected value.
○ No context to set up, no current user or request
○ No side effects to mock or stub
○ Testing doesn’t get more straightforward than
this
Pure functions
Hidden Slide Slower
function add(a, b) {
return a + b;
}
Pure functions
Hidden Slide Slower
function add(a, b) {
formatHdd();
return a + b;
}
Pure functions
Hidden Slide Slower
function doubleArray(arr) {
return arr.map((a) => a * 2);
}
Pure functions
Hidden Slide Slower
function doubleArray(arr) {
for(let i = 0; i < arr.length; i++) {
arr[i] = arr[i] * 2;
}
return arr;
}
Pure functions
Hidden Slide Slower
function rollDice() {
return Math.floor(Math.random() * 6) + 1;
}
Pure functions
Hidden Slide Slower
function tomorrow() {
const now = new Date();
return new Date(now.getTime() +
(24 * 60 * 60 * 1000));
}
Pure functions
Hidden Slide Slower
function tomorrow(now) {
return new Date(now.getTime() +
(24 * 60 * 60 * 1000));
}
Retrospective
Hidden Slide Slower
● What went well?
● What didn’t?
● What could be improved?
Session #6
Hidden Slide Slower
Mute Ping Pong
Mute Ping Pong
Hidden Slide Slower
● Work in pairs
● Person A only writes tests
● Person B only tries to get the tests to
pass
● Both persons refactor when
appropriate
● Person B swaps roles with A
● A and B can’t talk to each other
Retrospective
Hidden Slide Slower
● What went well?
● What didn’t?
● What could be improved?
Bonus “Session”
Hidden Slide Slower
Let’s tell Germany to
stop, delete their
code & stand up!
Bonus “Language”
Hidden Slide Slower
G’Day Deutschland!
Shtop! Loesh Dinen
Code. Oond shtey auf.
(#GDCR18, Melbourne, Australia, 17th Nov ‘18)
Closing Circle
Hidden Slide Slower
● What, if anything, did you
learn today?
● What, if anything, surprised
you today?
● What, if anything, will you do
differently in the future?
Thanks for coming!
Hidden Slide Slower
Thanks for attending
GDCR 2018
Stick around for some drinks,
nibbles and networking!

More Related Content

Similar to Melbourne, Australia Global Day of Code Retreat 2018 gdcr18 - Event Slides

Stripe CTF3 wrap-up
Stripe CTF3 wrap-upStripe CTF3 wrap-up
Stripe CTF3 wrap-upStripe
 
JVM Performance Magic Tricks
JVM Performance Magic TricksJVM Performance Magic Tricks
JVM Performance Magic TricksTakipi
 
Build tic tac toe with javascript (4:11 dc)
Build tic tac toe with javascript (4:11 dc)Build tic tac toe with javascript (4:11 dc)
Build tic tac toe with javascript (4:11 dc)Daniel Friedman
 
Introduction to Arduino Programming
Introduction to Arduino ProgrammingIntroduction to Arduino Programming
Introduction to Arduino ProgrammingJames Lewis
 
Python.pptx
Python.pptxPython.pptx
Python.pptxAshaS74
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsIgnacio Martín
 
20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management
20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management
20191018 DevOpsDays Taipei 2019 從零開始的 Configuration ManagementJiun-Yi Chen
 
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)Igalia
 
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...Victoria Schiffer
 
The Ring programming language version 1.7 book - Part 14 of 196
The Ring programming language version 1.7 book - Part 14 of 196The Ring programming language version 1.7 book - Part 14 of 196
The Ring programming language version 1.7 book - Part 14 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.5.4 book - Part 15 of 185
The Ring programming language version 1.5.4 book - Part 15 of 185The Ring programming language version 1.5.4 book - Part 15 of 185
The Ring programming language version 1.5.4 book - Part 15 of 185Mahmoud Samir Fayed
 
Python Novice to Ninja
Python Novice to NinjaPython Novice to Ninja
Python Novice to NinjaAl Sayed Gamal
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBMongoDB
 
The 30-Month Migration
The 30-Month MigrationThe 30-Month Migration
The 30-Month Migrationglvdb
 
[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx
[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx
[GEMINI EXTERNAL DECK] Introduction to Gemini.pptxAhmedElbaloug
 
Count-min sketch to Infinity.pdf
Count-min sketch to Infinity.pdfCount-min sketch to Infinity.pdf
Count-min sketch to Infinity.pdfStephen Lorello
 
The Ring programming language version 1.6 book - Part 13 of 189
The Ring programming language version 1.6 book - Part 13 of 189The Ring programming language version 1.6 book - Part 13 of 189
The Ring programming language version 1.6 book - Part 13 of 189Mahmoud Samir Fayed
 
OpenThink Labs Training : Diving into Java, Breaking the Surface
OpenThink Labs Training : Diving into Java, Breaking the SurfaceOpenThink Labs Training : Diving into Java, Breaking the Surface
OpenThink Labs Training : Diving into Java, Breaking the SurfaceWildan Maulana
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol ToolsetUlisses Costa
 
Build a virtual pet with javascript (april 2017)
Build a virtual pet with javascript (april 2017)Build a virtual pet with javascript (april 2017)
Build a virtual pet with javascript (april 2017)Thinkful
 

Similar to Melbourne, Australia Global Day of Code Retreat 2018 gdcr18 - Event Slides (20)

Stripe CTF3 wrap-up
Stripe CTF3 wrap-upStripe CTF3 wrap-up
Stripe CTF3 wrap-up
 
JVM Performance Magic Tricks
JVM Performance Magic TricksJVM Performance Magic Tricks
JVM Performance Magic Tricks
 
Build tic tac toe with javascript (4:11 dc)
Build tic tac toe with javascript (4:11 dc)Build tic tac toe with javascript (4:11 dc)
Build tic tac toe with javascript (4:11 dc)
 
Introduction to Arduino Programming
Introduction to Arduino ProgrammingIntroduction to Arduino Programming
Introduction to Arduino Programming
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
 
20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management
20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management
20191018 DevOpsDays Taipei 2019 從零開始的 Configuration Management
 
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
BigDecimal: Avoid rounding errors on decimals in JavaScript (Node.TLV 2020)
 
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
 
The Ring programming language version 1.7 book - Part 14 of 196
The Ring programming language version 1.7 book - Part 14 of 196The Ring programming language version 1.7 book - Part 14 of 196
The Ring programming language version 1.7 book - Part 14 of 196
 
The Ring programming language version 1.5.4 book - Part 15 of 185
The Ring programming language version 1.5.4 book - Part 15 of 185The Ring programming language version 1.5.4 book - Part 15 of 185
The Ring programming language version 1.5.4 book - Part 15 of 185
 
Python Novice to Ninja
Python Novice to NinjaPython Novice to Ninja
Python Novice to Ninja
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDB
 
The 30-Month Migration
The 30-Month MigrationThe 30-Month Migration
The 30-Month Migration
 
[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx
[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx
[GEMINI EXTERNAL DECK] Introduction to Gemini.pptx
 
Count-min sketch to Infinity.pdf
Count-min sketch to Infinity.pdfCount-min sketch to Infinity.pdf
Count-min sketch to Infinity.pdf
 
The Ring programming language version 1.6 book - Part 13 of 189
The Ring programming language version 1.6 book - Part 13 of 189The Ring programming language version 1.6 book - Part 13 of 189
The Ring programming language version 1.6 book - Part 13 of 189
 
OpenThink Labs Training : Diving into Java, Breaking the Surface
OpenThink Labs Training : Diving into Java, Breaking the SurfaceOpenThink Labs Training : Diving into Java, Breaking the Surface
OpenThink Labs Training : Diving into Java, Breaking the Surface
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol Toolset
 
Build a virtual pet with javascript (april 2017)
Build a virtual pet with javascript (april 2017)Build a virtual pet with javascript (april 2017)
Build a virtual pet with javascript (april 2017)
 

More from Victoria Schiffer

(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...Victoria Schiffer
 
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...Victoria Schiffer
 
Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...
Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...
Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...Victoria Schiffer
 
My Inspect & Adapt Life - Computershare ConneCTShe
My Inspect & Adapt Life - Computershare ConneCTSheMy Inspect & Adapt Life - Computershare ConneCTShe
My Inspect & Adapt Life - Computershare ConneCTSheVictoria Schiffer
 
The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)
The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)
The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)Victoria Schiffer
 
1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)
1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)
1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)Victoria Schiffer
 
Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)
Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)
Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)Victoria Schiffer
 
Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...
Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...
Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...Victoria Schiffer
 
Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)
Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)
Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)Victoria Schiffer
 
Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...
Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...
Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...Victoria Schiffer
 
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...Victoria Schiffer
 
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...Victoria Schiffer
 
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...Victoria Schiffer
 

More from Victoria Schiffer (13)

(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
 
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
(Open Sourced) Cyber Scavenger Hunt - Gamified Security Awareness, even on a ...
 
Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...
Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...
Accelerate Through Retrospectives (Activate Agile, Agile Australia 2018, Melb...
 
My Inspect & Adapt Life - Computershare ConneCTShe
My Inspect & Adapt Life - Computershare ConneCTSheMy Inspect & Adapt Life - Computershare ConneCTShe
My Inspect & Adapt Life - Computershare ConneCTShe
 
The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)
The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)
The Story Mapping Game (1st Conf, Melbourne, Australia, 3rd March 2017)
 
1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)
1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)
1-1 Team Feedback (Elabor8 Lunch & Learn, Melbourne, Australia, 18th July 2016)
 
Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)
Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)
Teams! Make War, Not (Only) Love! (LAST Conf 2016, Melbourne, Australia)
 
Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...
Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...
Being Agile - The Mindset and Practices Behind Awesome Products & Software (A...
 
Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)
Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)
Peer Groups in Agile Environments (LAST Conf 2014, Melbourne, Australia)
 
Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...
Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...
Life Coaching in Agile Thinking (Agile Coaching Circles Meetup, September 201...
 
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
 
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (SEACON 2012, Hamburg,...
 
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...
Produkt-Innovationen gefällig? Frag deine Mitarbeiter! (Entwicklertag Karlsru...
 

Recently uploaded

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingWSO2
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringWSO2
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 

Recently uploaded (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 

Melbourne, Australia Global Day of Code Retreat 2018 gdcr18 - Event Slides

  • 1. Hidden Slide Slower Hidden Slide Slower November 17, 2018 Celebrating passion and craft Melbourne, Australia
  • 2. Hidden Slide Slower 2000 Developers 130 Cities 6 Continents 18 Time zones
  • 3. The Global Day of Coderetreat is happening thanks to hundreds of Hosts and Facilitators worldwide!
  • 4. Global Day of Coderetreat encourages you to donate to CoderDojo. Hidden Slide Slower
  • 5. 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. About CoderDojo Hidden Slide Slower
  • 6. 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. About CoderDojo Hidden Slide Slower
  • 10. Morning Hidden Slide Slower ● 08:30 Intro to the Day ● 09:00 Practice session #1 ● 10:00 Practice session #2 ● 11:00 Practice session #3 ● 12:00 Lunch break until 1:30PM
  • 11. Afternoon Hidden Slide Slower ● 1:30 Practice session #4 ● 2:30 Practice session #5 ● 3:30 Practice session #6 ● 4:30 Closing circle ● 5:00 End of the event ● > 5pm Drinks & Nibbles
  • 12. Coderetreat Hidden Slide Slower ● Full day activity focused on the fundamentals of software development and design ● The goal for developers at work is to finish something ● The goal for them during coderetreat is to practice, not to finish
  • 13. Coderetreat Challenge yourself! Hidden Slide Slower ● Get out of your comfort zone ● Program in languages you don’t know ● Detach yourself from your own creation ● Do what you always wanted but couldn’t ● Don’t focus on finishing
  • 14. Structure Hidden Slide Slower ● Problem: ○ Conway’s Game of Life ● Session length: ○ 45 minutes followed by a 10 minute retrospective ● Delete your code after each session!
  • 15. Structure Hidden Slide Slower ● Pair Programming ● TDD ● Kent Beck’s 4 rules of simple design ○ code passes the tests ○ reveals intention ○ no duplication ○ fewest elements ● Don’t forget to have fun!
  • 17. Test Driven Development Hidden Slide Slower ● Add failing test ● Run all tests ● Write code ● Run tests ● Refactor ● Repeat
  • 18. Conway’s Game of Life Hidden Slide Slower ● A zero-player game, meaning that its evolution is determined by its initial state ● The universe of the Game of Life is an infinite two-dimensional grid of square cells ● Every cell is in one of two possible states: alive or dead ● Every cell interacts with its eight neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent
  • 20. Hidden Slide Slower Conway’s Game of Life 1. A living cell with fewer than two living neighbors dies.
  • 21. Hidden Slide Slower Conway’s Game of Life 2. A living cell with more than three living neighbors dies.
  • 22. Hidden Slide Slower Conway’s Game of Life 3. A dead cell with exactly three living neighbors comes to life.
  • 23. Session #1 Hidden Slide Slower No constraints
  • 24. No constraints Hidden Slide Slower ● Get familiar with Conway’s Game of Life ● Use your preferred language ● Remember to delete your code after the session
  • 25. Retrospective Hidden Slide Slower ● What went well? ● What didn’t? ● What could be improved?
  • 26. Session #2 Hidden Slide Slower Ping Pong TDD
  • 27. Ping Pong TDD Hidden Slide Slower ● Work in pairs ● Person A only writes tests ● Person B only tries to get the tests to pass ● Both persons refactor when appropriate ● Person B swaps roles with A
  • 28. Retrospective Hidden Slide Slower ● What went well? ● What didn’t? ● What could be improved?
  • 29. Session #3 Hidden Slide Slower No Naked Primitives
  • 30. No naked primitives Hidden Slide Slower Primitive Obsession (Code Smell) It is using primitive data types to represent domain ideas. Eg: String for a message, Integer to hold currency etc.
  • 31. No naked primitives Hidden Slide Slower Objective of the session - ● To practice avoiding primitive obsession code smell. ● Creating required “Value Objects” ● Understanding encapsulation.
  • 32. No naked primitives Hidden Slide Slower Adding an alive cell in position [3,4] ● Primitive obsession const population = [ [], [], [], [], [], [] ]; population[3][4] = true;
  • 33. No naked primitives Hidden Slide Slower Adding an alive cell in position [3,4] ● No primitives const population = new Population(); const cell = new AliveCell(); const position = new Position(3, 4); population.set(position, cell);
  • 34. Retrospective Hidden Slide Slower ● What went well? ● What didn’t? ● What could be improved?
  • 35. Session #4 Hidden Slide Slower Baby steps
  • 36. Baby steps Hidden Slide Slower 1. TDD 2. GIT (or similar)
  • 37. Baby steps Hidden Slide Slower 1. Set the timer (4 minutes) 2. Write exactly one test 3. Write implementation to make the test pass 4. If within time - commit Otherwise - revert 5. Repeat
  • 38. Retrospective Hidden Slide Slower ● What went well? ● What didn’t? ● What could be improved?
  • 39. Session #5 Hidden Slide Slower Pure functions
  • 40. Pure functions Hidden Slide Slower ● A function where the return value is only determined by its input values, without observable side effects
  • 41. Pure functions Hidden Slide Slower ● A pure function can only access what you pass it, so it’s easy to see its dependencies ● When a function accesses some other program state, such as a global variable, it is no longer pure. ● A given invocation of a pure function can be replaced by its result. There’s no difference between “add(2,3)” and “5”. This property is called referential transparency
  • 42. Pure functions Hidden Slide Slower ● Easy to test ○ To test a pure function, you declare the values that will act as arguments and pass them to the function. The output value needs to be verified against the expected value. ○ No context to set up, no current user or request ○ No side effects to mock or stub ○ Testing doesn’t get more straightforward than this
  • 43. Pure functions Hidden Slide Slower function add(a, b) { return a + b; }
  • 44. Pure functions Hidden Slide Slower function add(a, b) { formatHdd(); return a + b; }
  • 45. Pure functions Hidden Slide Slower function doubleArray(arr) { return arr.map((a) => a * 2); }
  • 46. Pure functions Hidden Slide Slower function doubleArray(arr) { for(let i = 0; i < arr.length; i++) { arr[i] = arr[i] * 2; } return arr; }
  • 47. Pure functions Hidden Slide Slower function rollDice() { return Math.floor(Math.random() * 6) + 1; }
  • 48. Pure functions Hidden Slide Slower function tomorrow() { const now = new Date(); return new Date(now.getTime() + (24 * 60 * 60 * 1000)); }
  • 49. Pure functions Hidden Slide Slower function tomorrow(now) { return new Date(now.getTime() + (24 * 60 * 60 * 1000)); }
  • 50. Retrospective Hidden Slide Slower ● What went well? ● What didn’t? ● What could be improved?
  • 51. Session #6 Hidden Slide Slower Mute Ping Pong
  • 52. Mute Ping Pong Hidden Slide Slower ● Work in pairs ● Person A only writes tests ● Person B only tries to get the tests to pass ● Both persons refactor when appropriate ● Person B swaps roles with A ● A and B can’t talk to each other
  • 53. Retrospective Hidden Slide Slower ● What went well? ● What didn’t? ● What could be improved?
  • 54. Bonus “Session” Hidden Slide Slower Let’s tell Germany to stop, delete their code & stand up!
  • 55. Bonus “Language” Hidden Slide Slower G’Day Deutschland! Shtop! Loesh Dinen Code. Oond shtey auf. (#GDCR18, Melbourne, Australia, 17th Nov ‘18)
  • 56. Closing Circle Hidden Slide Slower ● What, if anything, did you learn today? ● What, if anything, surprised you today? ● What, if anything, will you do differently in the future?
  • 57. Thanks for coming! Hidden Slide Slower Thanks for attending GDCR 2018 Stick around for some drinks, nibbles and networking!