Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Deliberate Practice (Agile Slovenia 2015)

1,032 views

Published on

Presentation held at the Agile Slovenia 2015 conference

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Deliberate Practice (Agile Slovenia 2015)

  1. 1. Deliberate Practice (New learning styles to overcome the software crisis?) Agile Slovenia 2015 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.
  2. 2. Peter Kofler • Ph.D. (Appl. Math.) • Professional Software Developer for 15 years • “fanatic about code quality” • Freelance Code Mentor PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  3. 3. I help development teams with PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Professionalism ● Quality and Productivity ● Continuous Improvement
  4. 4. Training and Mentoring PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Pair Programming ● Programming Workshops ● Deliberate Practice
  5. 5. Who are You? ● Tester? ● Test Manager? ● QA? ● QA Manager? ● Developer? ● Architect? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  6. 6. No, you are a Software Delivery Professional!
  7. 7. Your Goal: Developing Quality Software
  8. 8. What's the Problem?
  9. 9. Software Crisis?
  10. 10. “The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.” Software Crisis PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://en.wikipedia.org/wiki/Software_crisis
  11. 11. Edsger Dijkstra
  12. 12. Who creates this software he talked about?
  13. 13. Professional (people) Engineering (process)
  14. 14. Software Professionals Create Software!
  15. 15. Software like that...
  16. 16. Why is its quality so bad? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  17. 17. Is Software Engineering Education sufficient? http://programmers.stackexchange.com/questions/60595/did-your-cs-program-prepare-you-well
  18. 18. Training on the Job?
  19. 19. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Yes, some but... ● only what is already there ● Trial & Error not popular in production ● no practice - only production ● time pressure
  20. 20. Our Industry is Very Young ● Half of all developers age < 30 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://blog.cleancoder.com/uncle-bob/2014/06/20/MyLawn.html
  21. 21. Not Enough Senior People ● either busy ● e.g. critical issues ● contact with business ● or left active development ● architects, ● analysts, ● managers etc. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  22. 22. Developing Quality Software Developers
  23. 23. Quick Poll: Do you ... ● Technical magazines? ● Internal library? ● Reading groups? ● Lunch & Learn? ● Conferences? ● Trainings? ● Hackdays? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  24. 24. Classic Training is “Sheep Dip“ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  25. 25. That is not enough
  26. 26. More Practice!
  27. 27. Deliberate Practice
  28. 28. How do musicians practice?
  29. 29. Then how do coders practice? Then how do testers practice?
  30. 30. Code Kata
  31. 31. Code Kata Definition ● A kata as a detailed choreographed pattern of movement. ● A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition. ● A testing kata is ... PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  32. 32. Code Kata ● simple problem (max. 20 minutes) ● solve every day ● memorization/create reflexes ● experiment with solutions ● stretch yourself ● try new technologies PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  33. 33. Why repeat the same kata? ● de-emphasise the generation of code ● concentrate on ● the process of writing the code ● naming test cases ● the Red/Green cycle PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  34. 34. Don't Focus on Getting it Done. F0cus on Doing It Perfectly.
  35. 35. Software Katas ● Finding algorithms ● Coding solutions ● Bringing code under test ● Unit Test/Test tools (“Test Lab“) ● Refactoring katas ● Finding test cases ● Architectural katas PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  36. 36. Code Kata Example: Prime Factors PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  37. 37. The Requirements. • Write a class named “PrimeFactors” that has one static method: generate. ● The generate method takes an integer argument and returns a List<Integer>. ● That list contains the prime factors in numerical sequence. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata
  38. 38. I did it 115 times ● very easy ● 10 minutes ● 6 test cases ● final algorithm is 5 lines PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  39. 39. To learn and practice ● Test Driven Development cycle ● first in every new language ● IDE short-cuts ● laptop keyboard layout ● focus when distracted PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  40. 40. Kata Example: Car Mechanic
  41. 41. Coding Dojo
  42. 42. Coding Dojo Definition ● A coding dojo is a meeting where a bunch of coders get together and work on a code kata, a programming challenge to improve their skills. ● They code, learn and have fun away from interruptions, distractions, deadlines and production bugs. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://codingdojo.org/
  43. 43. Coding Dojo Structure ● Introduction 15' ● Coding 45' ● Interim (Retrospective) 5' ● Break 15' ● Coding 45' ● Retrospective 15' PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  44. 44. Coding Dojo Mindset ● Safe place outside work ● We are here to learn ● Need to slow down ● Focus on doing it right ● Collaborative Game PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  45. 45. Coding Dojo Rules PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  46. 46. Pair Programming ● Collaborative = Pair Programming ● “Randori“ (pairing on the projector) ● or regular programming in pairs ● regular Pair Programming ● do not talk for too long ● do not interrupt the other ● no “keyboard hugging“ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  47. 47. Pair Programming adds discussion & a second opinion to the practice.
  48. 48. Constraints ● Challenges during a dojo or code retreat. ● Moving to the extreme is a way of learning ● Examples ● Missing Tool (No Mouse, …) ● Missing Feature (No IFs, …) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  49. 49. Testing Dojo Example: Testcases for Gilded Rose PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  50. 50. Given ● Production code (60 lines) ● Detailed requirements (1 page A4) ● No tests (at least 38 cases) ● Prepared FitNesse fixtures (Java) ● dbFit connector (PL/SQL) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY https://bitbucket.org/pkofler/gilded-rose-fitnesse
  51. 51. Testing Task ● Modify existing test cases, play around ● Create some “perfect” tests ● derive test cases from requirements ● name test cases accordingly ● test boundary conditions ● readable, concise, free of duplication ● Experiment with styles PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  52. 52. Code Retreat
  53. 53. Code Retreat (Overview) ● Sort of six Coding Dojos in sequence. ● A day-long, intensive practice event. ● Examples: ● Global Day of Coderetreat ● Test Automation Retreat PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  54. 54. Conclusion
  55. 55. Developing Quality Software
  56. 56. Software Professionals Create Software!
  57. 57. Developing Quality Software Developers
  58. 58. Deliberate Practice
  59. 59. What you need to do
  60. 60. What you need to do ● Make space for deliberate learning ● Improve yourself ● Try katas ● Visit dojos/retreats ● Mentor next generation ● Prepare kata exercises ● Run in-house dojos/retreats PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  61. 61. We will not ship shit! (Uncle Bob)
  62. 62. Peter Kofler @codecopkofler www.code-cop.org PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  63. 63. CC Images #1 ● masters https://www.flickr.com/photos/kevinpoh/4404925960 ● Bruce http://www.flickr.com/photos/sherpas428/4350620602/ ● pairing http://www.flickr.com/photos/dav/94735395/ ● wants you http://www.flickr.com/photos/shutter/105497713/ ● Cthulhu http://community.imaginefx.com/forums/thread/402575.aspx ● dump http://www.flickr.com/photos/sanmartin/2682745838/ ● shoe maker http://www.flickr.com/photos/tbatty/1450209613/ (by 2010) ● factory http://www.flickr.com/photos/94693506@N00/4643248587/ ● Hamster http://www.flickr.com/photos/zebrapares/4529836138 ● baby http://www.flickr.com/photos/11904001@N00/3983980813/ ● sheep dip https://www.flickr.com/photos/christianspenceranderson/6990570682 ● music https://www.flickr.com/photos/jeremyhiebert/11474303315 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  64. 64. CC Images #2 ● code https://www.flickr.com/photos/slworking/7726767220/ ● karate http://www.flickr.com/photos/the-consortium/5301698212/ ● math https://www.flickr.com/photos/jimmiehomeschoolmom/4427775569 ● mechanic https://www.flickr.com/photos/ravages/9242464882 ● dojo http://www.flickr.com/photos/49715404@N00/3267627038/ ● todos http://www.flickr.com/photos/kylesteeddesign/3724074594/ ● rule http://www.flickr.com/photos/phunk/4188827473 ● inn http://www.flickr.com/photos/danielleblue/170496395/ ● incense http://www.flickr.com/photos/cibomahto/7651263514/ ● finish http://www.flickr.com/photos/jayneandd/4450623309/ ● call https://www.flickr.com/photos/melenita/15166203826 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

×