Agile Prague Coding Dojo
-
Upload
johannes-brodwall -
Category
Entertainment & Humor
-
view
851 -
download
1
description
Transcript of Agile Prague Coding Dojo
Coding Dojo
AgilePrague 2012Johannes Brodwall, Principal Architect
Steria Norway
@jhannes
Prague Coding Dojo?http://johannesbrodwall.com/2011/12/18/how-to-start-a-coding-dojo/
Motivation
Master programming
through practice
What does good programming mean for you?
How do you want to apply this tomorrow?
What do you want to get out of the day?
Agenda
• 9:10: Demo of TDD and pair programming• 9:20: Randori style Leap Years kata with everyone• 9:40: Paired style Prime Factors• 10:10: Retrospective• 10:30: Paired style Prime Factors, take 2• 11:00: Coding dojo 2:
Romans if you’re slow,
Yahtzee if you’re quick,
minesweeper if you’re smart• 12:00: Retrospective• 12:15: Lunch (?)• 13:00: Extreme startup – first round• 13:30: Break• 13:45: Extreme startup – second round• 15:45: Wrap-up
TDD
TDDNo code without test
Just enough test to red
Just enough code to green
(+ refactor!)
Pair programming
Ping/pong
Driver/Navigator
Failing test
Write code
Failing test
Write code
Failing test
Failing test
Write code
Failing test
Write code
Failing test
Refactor code and tests
Refactor code and tests
What benefits can you get from pair programming?
Kata 0: Leap Year
Kata 1: Prime factors
Kata: Prime factors1 => []
2 => [2]
3 => [3]
4 => [2,2]
…
2*2*13*17*23*23 => [2,2,13,17,23,23]
Did you change drivers at good frequency?
How did the solution end up looking?
How did you determine next test?
What tests did you start with?
Which tests didn’t help you?
How did your choice of language help/hurt?
What surprised you?
What do you want to achieve next round?
What did you learn?
Kata 2a: Minesweeper
Given:var minefield = new Minefield([ "....", ".*..", ".*.*", "...*“ ])
What surprised you?
What do you want to achieve next round?
What did you learn?
Did you change drivers at good frequency?
How did the boundary conditions affect your test and code?
How did you determine next test?
What tests did you start with?
Which tests didn’t help you?
How did your choice of language help/hurt?
Kata 2b: Yahtzee
Kata: Yahtzee({1,1,1,1,1}, «ones»} => 5
({1,1,1,1,1}, «sixes»} => 0
({1,1,1,1,1}, «yahtzee»} => 50
Ones, twos, threes, fours, fives, sixes
Pair, two pairs, three of a kind, four of a kind, full house
Yahtzee
Little straight, big straight
Chance
What surprised you?
What do you want to achieve next round?
What did you learn?
Did you change drivers at good frequency?
What is ({2,2,3,6,6}, «pair»)?
How did you determine next test?
What tests did you start with?
Which tests didn’t help you?
How did your choice of language help/hurt?
Kata 2c: Romans
Kata: Romans1 => I
5 => V
1999 => MCMXCIX
What surprised you?
What do you want to achieve next round?
What did you learn?
Did you change drivers at good frequency?
How did you implement rules for «IV» etc?
How did you determine next test?
What tests did you start with?
Which tests didn’t help you?
How did your choice of language help/hurt?
Extreme startup
The Extreme startup code competition
By Matt Wynne and Robert Chatly
OrientationDownload starting point
(http://github.com/steria/extreme_startup_servers)
Start server
Register(http://192.168.155.249:3000/)
Solve questions
RulesCheat like mad!
Only results matter
No destruction of property
Obey local laws
Don’t f$%! with workshop computer
GuidelinesWork as you like
(Tip: Use a language you know)
Help those behind
Upload your code (if possible)
OrientationDownload starting point
(http://github.com/steria/extreme_startup_servers)
Start server
Register(http://192.168.155.249:3000/)
Solve questions
Form teams!
Round 1
Round 1
(fight!)
Round 1: Retrospective
What surprised you?
What do you want to achieve next round?
What did you learn?
Round 2
Round 2
(fight!)
Round 2: Retrospective
Course
Retrospective
What surprised you?
How will you change how you work?
What did you learn?
Testing?
Teamwork?
Which questions did you solve?
Annoying questions?
How did you mess up?
How did you cheat?