560 likes | 748 Views
Coding Dojo. Sofware People 2012 Johannes Brodwall , Principal Architect Steria Norway @ jhannes. Guest starring Dmytro Mindra. Moscow Coding Dojo ? http://johannesbrodwall.com/2011/12/18/how-to-start-a-coding-dojo/. Motivation. Master programming. through practice.
E N D
CodingDojo Sofware People 2012 Johannes Brodwall, Principal Architect Steria Norway @jhannes
Gueststarring DmytroMindra
MoscowCodingDojo? http://johannesbrodwall.com/2011/12/18/how-to-start-a-coding-dojo/
Whatdoesgoodprogrammingmean for you? What do youwant to getoutoftheday? How do youwant to applythisonMonday?
10:10: Demo of TDD and pair programming 10:20: Randori style LeapYearskatawitheveryone 10:40: Twogroups, randori style Prime Factors 11:10: Retrospective 11:30: Twogroups, randori style Prime Factors, take 2 12:00: Codingdojo 2: Romans ifyou’reslow, Yahtzee ifyou’requick, minesweeper ifyou’resmart 13:00 – break in themiddle 13:45: Retrospective 14:00: Lunch 15:00: Extreme startup 16:30: Break 17:15: 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 youwant to achievenextround?
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.11.182: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.11.182:3000/) Solvequestions
Round 1 (fight!)
Whatsurprisedyou? Whatdidyoulearn? What do youwant to achievenextround?