550 likes | 776 Views
Coding Dojo. AgilePrague 2012 Johannes 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 ?.
E N D
CodingDojo AgilePrague 2012 Johannes Brodwall, Principal Architect Steria Norway @jhannes
PragueCodingDojo? http://johannesbrodwall.com/2011/12/18/how-to-start-a-coding-dojo/
Whatdoesgoodprogrammingmean for you? What do youwant to getoutoftheday? How do youwant to applythistomorrow?
9:10: Demo of TDD and pair programming 9:20: Randori style LeapYearskatawitheveryone 9:40: Paired style Prime Factors 10:10: Retrospective 10:30: Paired style Prime Factors, take 2 11:00: Codingdojo 2: Romans ifyou’reslow, Yahtzee ifyou’requick, minesweeper ifyou’resmart 12:00: Retrospective 12:15: Lunch (?) 13:00: Extreme startup – first round 13:30: Break 13:45: Extreme startup – secondround 15:45: Wrap-up
TDD No codewithout test Just enough test to red Just enoughcode to green (+ refactor!)
Ping/pong Driver/Navigator
Failing test Write code Failing test Write code Failing test
Failing test Write code Refactorcode and tests Failing test Write code Refactorcode and tests Failing test
Kata: Prime factors 1 => [] 2 => [2] 3 => [3] 4 => [2,2] … 2*2*13*17*23*23 => [2,2,13,17,23,23]
How didyourchoiceoflanguagehelp/hurt? Didyouchange drivers at goodfrequency? What tests didyou start with? Which tests didn’thelpyou? How didyoudeterminenext test? How didthesolution end up looking?
Whatsurprisedyou? Whatdidyoulearn? What do you want to achieve next round?
Given: var minefield = new Minefield([ "....", ".*..", ".*.*", "...*“ ])
Whatsurprisedyou? Whatdidyoulearn? What do youwant to achievenextround?
How didyourchoiceoflanguagehelp/hurt? Didyouchange drivers at goodfrequency? What tests didyou start with? Which tests didn’thelpyou? How didyoudeterminenext test? How didtheboundaryconditionsaffectyour test and code?
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, threeof a kind, fourof a kind, full house Yahtzee Little straight, big straight Chance
Whatsurprisedyou? Whatdidyoulearn? What do youwant to achievenextround?
How didyourchoiceoflanguagehelp/hurt? Didyouchange drivers at goodfrequency? What tests didyou start with? Which tests didn’thelpyou? How didyoudeterminenext test? What is ({2,2,3,6,6}, «pair»)?
Kata: Romans 1 => I 5 => V 1999 => MCMXCIX
Whatsurprisedyou? Whatdidyoulearn? What do youwant to achievenextround?
How didyourchoiceoflanguagehelp/hurt? Didyouchange drivers at goodfrequency? What tests didyou start with? Which tests didn’thelpyou? How didyoudeterminenext test? How didyouimplementrules for «IV» etc?
The Extremestartupcodecompetition By Matt Wynne and Robert Chatly
Orientation Download starting point (http://github.com/steria/extreme_startup_servers) Start server Register (http://192.168.155.249:3000/) Solvequestions
Rules Cheat like mad! Onlyresults matter No destructionofproperty Obeylocallaws Don’t f$%! withworkshop computer
Guidelines Work as you like (Tip: Use a languageyou know) Helpthosebehind Uploadyourcode (ifpossible)
Orientation Download starting point (http://github.com/steria/extreme_startup_servers) Start server Register (http://192.168.155.249:3000/) Solvequestions
Round 1 (fight!)
Whatsurprisedyou? Whatdidyoulearn? What do youwant to achievenextround?
Round 2 (fight!)