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.

Mob Programming for Continuous Learning

980 views

Published on

What if we took Extreme Programming and said it’s not “extreme” enough? What if we took pair programming and cranked it to 11? Mob programming is a technique with “all the brilliant people working on the same thing, at the same time, in the same space, and on the same computer.”

I was lucky enough to be on a team for about year that worked “as a mob.” Come learn what practices we found to be critical, what obstacles we encountered and what practices became irrelevant during our experience.

Published in: Software
  • Be the first to comment

Mob Programming for Continuous Learning

  1. 1. Mob Programming for Continuous Learning Mike Clement @mdclement mike@softwareontheside.com http://blog.softwareontheside.com
  2. 2. My journey
  3. 3. “Review every line of code. A code review typically involves the programmer and at least two reviewers. That means that at least three people read every line of code. Another name for peer review is "peer pressure." In addition to providing a safety net in case the original programmer leaves the project, reviews improve code quality because the programmer knows that the code will be read by others. Even if your shop hasn't created explicit coding standards, reviews provide a subtle way of moving toward a group coding standard—decisions are made by the group during reviews, and over time the group derives its own standards.”
  4. 4. “Review every line of code. A code review typically involves the programmer and at least two reviewers. That means that at least three people read every line of code. Another name for peer review is "peer pressure." In addition to providing a safety net in case the original programmer leaves the project, reviews improve code quality because the programmer knows that the code will be read by others. Even if your shop hasn't created explicit coding standards, reviews provide a subtle way of moving toward a group coding standard—decisions are made by the group during reviews, and over time the group derives its own standards.”
  5. 5. Code Reviews
  6. 6.        
  7. 7. Benefits of Code Reviews • Help from others • Redundancy • Readability • Coding standards
  8. 8. How to reduce the length of the feedback loop?
  9. 9. Informal Pairing
  10. 10.     
  11. 11. Informal pairing • “On demand” collaboration • Started to spend more time together
  12. 12. Randori
  13. 13.       
  14. 14. Utah Software Craftsmanship
  15. 15. How to reduce the length of the feedback loop?
  16. 16. Pairing Time with Pairing Stations
  17. 17.     
  18. 18. Caves and Commons
  19. 19. Agile Software Development: The Cooperative Game by Alistair Cockburn Figure 3.1-1. Completed office layout (Courtesy of Ken Auer, RoleModel Software).
  20. 20. One navigator, many drivers
  21. 21.             
  22. 22. How to reduce the length of the feedback loop?
  23. 23. Persistent, promiscuous pair programming
  24. 24.    
  25. 25.    
  26. 26. Whole team ownership?
  27. 27. “You should really talk to Woody Zuill. You need to see what they’re doing at Hunter Industries”
  28. 28. http://mobprogramming.org/
  29. 29. All the brilliant people, working on the same thing, at the same time, in the same space…
  30. 30. All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.
  31. 31. How to reduce the length of the feedback loop?
  32. 32. “Let’s try mob programming”
  33. 33. My experience
  34. 34. Mob #1
  35. 35. Mob #1 •3 co-located + 1 remote •Pairing station
  36. 36.        
  37. 37. Whole team ownership of code!
  38. 38. Then we added a team member…
  39. 39.        
  40. 40. And the remote member moved to be co-located…
  41. 41.    
  42. 42.       
  43. 43. A trip to San Diego
  44. 44. https://twitter.com/ChristophLucian/status/482651109173895168
  45. 45. Mob #2
  46. 46. Mob #2 •4 co-located including team lead •2 80 inch TVs on the wall
  47. 47.     
  48. 48. Discoveries!
  49. 49. Physical space
  50. 50. Strong-style pairing
  51. 51. "For an idea to go from your head into the computer, it MUST go through someone else's hands"
  52. 52. Strong-style pairing Driver • At the keyboard • “Smart keyboard” • Trust your navigator • Think the computer of the Enterprise Navigator • Give verbal instructions to the driver • Talk at the highest level of abstraction
  53. 53. Location Detail
  54. 54. The hard work is when you’re NOT at the keyboard
  55. 55. No standups!
  56. 56. More JIT code design
  57. 57. Increased “Bus Factor”
  58. 58. Resilient
  59. 59. Working on the right thing
  60. 60. Get things done and delivered
  61. 61. Downside?
  62. 62. Less worktime flexibility
  63. 63. Looks funny from the outside
  64. 64. And then product management…
  65. 65. Mob #3
  66. 66. Ways we use forms of Mobbing •Large onsite with client workshops •Workshops at our location •Everyday work
  67. 67. One navigator, many pairs
  68. 68.             
  69. 69. One navigator, many mobs
  70. 70.     
  71. 71. Experience != Learning
  72. 72. Experience + Reflection => Learning
  73. 73.     
  74. 74. https://github.com/willemlarsen/mobprogrammingrpg
  75. 75. It’s not solo programming with a group
  76. 76. It’s fun!
  77. 77. Mike Clement • @mdclement • mike@softwareontheside.com • http://blog.softwareontheside.com • https://github.com/mdclement • http://agilecodegames.com • Greater Sum • @thegreatersum • http://www.greatersum.com • Software Craftsmanship Atlanta • Find us on meetup.com
  78. 78. Resources • http://mobprogramming.org/mob-programming-time-lapse-video-a-day- of-mob-programming/ • Updated video: https://www.youtube.com/watch?v=dVqUcNKVbYg • http://llewellynfalco.blogspot.com/2014/06/llewellyns-strong-style- pairing.html • Timer: https://github.com/MobProgramming/MobTimer.Python • Mob Programming Conference: http://agilegamesnewengland.org/index.php/mob-programming- conference • RPG: https://github.com/willemlarsen/mobprogrammingrpg • Mobster Timer with RPG: https://github.com/dillonkearns/mobster

×