Agile Prague Coding Dojo

1,348 views

Published on

Coding Dojo workshop at Agile Prague 2012, september 5th

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,348
On SlideShare
0
From Embeds
0
Number of Embeds
170
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Note to translator: Here, I willexplainhow pair programmingcanwork in practice:One person writes a failing test and theother person writesthecode to make it pass. Thenthe person whomadethe test pass writesthenext test.In theexamplewithme and Boris, weswitched «drivers» (the person at thekeyboard) aboutonce a minute. On real lifeproject, I usuallyexperiencethatweswitch drivers everytenminutes or so.It’s alsoimportant to refactorbetween tests. I like to onlyrefactorwhenthecode is green. This way I knowthatthecodedoesn’t stop working. Therearetwoways to thinkaboutthis:Either, ifyoucan, refactorthecode and the tests a little to «getready» for thenext testOr, ifyouseethatyoucan’t make the test pass, commentout (or @Ignore) the test and refactoron green.
  • Agile Prague Coding Dojo

    1. 1. Coding Dojo AgilePrague 2012 Johannes Brodwall, Principal Architect Steria Norway @jhannes
    2. 2. Prague Coding Dojo?http://johannesbrodwall.com/2011/12/18/ how-to-start-a-coding-dojo/
    3. 3. Motivation
    4. 4. Master programming
    5. 5. through practice
    6. 6. What does good programming mean for you?What do you want to getout of the day? How do you want to apply this tomorrow?
    7. 7. Agenda
    8. 8. • 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
    9. 9. TDD
    10. 10. TDD No code without test Just enough test to redJust enough code to green (+ refactor!)
    11. 11. Pair programming
    12. 12. Ping/pongDriver/Navigator
    13. 13. Failing test Write code Failing testWrite codeFailing test
    14. 14. Failing test Write code Refactor code and tests Failing testWrite code Refactor code and testsFailing test
    15. 15. What benefits can you get from pair programming?
    16. 16. Kata 0: Leap Year
    17. 17. Kata 1: Prime factors
    18. 18. Kata: Prime factors 1 => [] 2 => [2] 3 => [3] 4 => [2,2] …2*2*13*17*23*23 => [2,2,13,17,23,23]
    19. 19. How did your choice of language help/hurt? Did you change What tests did you drivers at good start with? frequency?Which tests didn’thelp you? How did you determine next test? How did the solution end up looking?
    20. 20. What surprised you?What did you learn? What do you want to achieve next round?
    21. 21. Kata 2a:Minesweeper
    22. 22. Given:var minefield = new Minefield([ "....", ".*..", ".*.*", "...*“ ])
    23. 23. What surprised you?What did you learn? What do you want to achieve next round?
    24. 24. How did your choice of language help/hurt? Did you change What tests did you drivers at good start with? frequency?Which tests didn’thelp you? How did you determine next test? How did the boundary conditions affect your test and code?
    25. 25. Kata 2b: Yahtzee
    26. 26. 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, sixesPair, two pairs, three of a kind, four of a kind, full house Yahtzee Little straight, big straight Chance
    27. 27. What surprised you?What did you learn? What do you want to achieve next round?
    28. 28. How did your choice of language help/hurt? Did you change What tests did you drivers at good start with? frequency?Which tests didn’thelp you? How did you determine next test? What is ({2,2,3,6,6}, «pair»)?
    29. 29. Kata 2c: Romans
    30. 30. Kata: Romans 1 => I 5 => V 1999 => MCMXCIX
    31. 31. What surprised you?What did you learn? What do you want to achieve next round?
    32. 32. How did your choice of language help/hurt? Did you change What tests did you drivers at good start with? frequency?Which tests didn’thelp you? How did you determine next test? How did you implement rules for «IV» etc?
    33. 33. Extreme startup
    34. 34. The Extreme startup code competition By Matt Wynne and Robert Chatly
    35. 35. Orientation Download starting point(http://github.com/steria/extreme_startup_servers) Start server Register (http://192.168.155.249:3000/) Solve questions
    36. 36. Rules Cheat like mad! Only results matter No destruction of property Obey local lawsDon’t f$%! with workshop computer
    37. 37. Guidelines Work as you like(Tip: Use a language you know) Help those behind Upload your code (if possible)
    38. 38. Orientation Download starting point(http://github.com/steria/extreme_startup_servers) Start server Register (http://192.168.155.249:3000/) Solve questions
    39. 39. Form teams!
    40. 40. Round 1
    41. 41. Round 1 (fight!)
    42. 42. Round 1:Retrospective
    43. 43. What surprised you?What did you learn? What do you want to achieve next round?
    44. 44. Round 2
    45. 45. Round 2 (fight!)
    46. 46. Round 2:Retrospective
    47. 47. CourseRetrospective
    48. 48. What surprised you?What did you learn? How will you change how you work?
    49. 49. Testing? How did you mess up?How did you cheat? Which questions did you solve? Annoying questions? Teamwork?
    50. 50. Thank you johannes@brodwall.com http://johannesbrodwall.com http://twitter.com/jhannes

    ×