Download - Mob Programming for Continuous Learning
![Page 1: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/1.jpg)
Mob Programming for Continuous Learning
Mike Clement@mdclement
[email protected]://blog.softwareontheside.com
![Page 2: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/2.jpg)
My journey
![Page 3: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/3.jpg)
![Page 4: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/4.jpg)
“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.”
![Page 5: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/5.jpg)
“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.”
![Page 6: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/6.jpg)
Code Reviews
![Page 7: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/7.jpg)
![Page 8: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/8.jpg)
Benefits of Code Reviews
• Help from others• Redundancy• Readability• Coding standards
![Page 9: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/9.jpg)
![Page 10: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/10.jpg)
![Page 11: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/11.jpg)
How to reduce the length of the feedback loop?
![Page 12: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/12.jpg)
Informal Pairing
![Page 13: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/13.jpg)
![Page 14: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/14.jpg)
Informal pairing
• “On demand” collaboration• Started to spend more time together
![Page 15: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/15.jpg)
Randori
![Page 16: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/16.jpg)
![Page 17: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/17.jpg)
![Page 18: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/18.jpg)
Utah Software Craftsmanship
![Page 19: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/19.jpg)
![Page 20: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/20.jpg)
How to reduce the length of the feedback loop?
![Page 21: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/21.jpg)
Pairing Time with Pairing Stations
![Page 22: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/22.jpg)
![Page 23: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/23.jpg)
![Page 24: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/24.jpg)
Caves and Commons
![Page 25: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/25.jpg)
Agile Software Development: The Cooperative Game by Alistair CockburnFigure 3.1-1. Completed office layout (Courtesy of Ken Auer, RoleModelSoftware).
![Page 26: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/26.jpg)
One navigator, many drivers
![Page 27: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/27.jpg)
![Page 28: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/28.jpg)
How to reduce the length of the feedback loop?
![Page 29: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/29.jpg)
Persistent, promiscuous pair programming
![Page 30: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/30.jpg)
![Page 31: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/31.jpg)
![Page 32: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/32.jpg)
Whole team ownership?
![Page 33: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/33.jpg)
“You should really talk to Woody Zuill. You need to see what they’re doing at Hunter Industries”
![Page 34: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/34.jpg)
http://mobprogramming.org/
![Page 35: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/35.jpg)
![Page 36: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/36.jpg)
All the brilliant people, working on the same thing, at the same time, in the same space…
![Page 37: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/37.jpg)
All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.
![Page 38: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/38.jpg)
![Page 39: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/39.jpg)
How to reduce the length of the feedback loop?
![Page 40: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/40.jpg)
“Let’s try mob programming”
![Page 41: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/41.jpg)
My experience
![Page 42: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/42.jpg)
Mob #1
![Page 43: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/43.jpg)
Mob #1
•3 co-located + 1 remote•Pairing station
![Page 44: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/44.jpg)
![Page 45: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/45.jpg)
Whole team ownership of code!
![Page 46: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/46.jpg)
Then we added a team member…
![Page 47: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/47.jpg)
![Page 48: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/48.jpg)
And the remote member moved to be co-located…
![Page 49: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/49.jpg)
![Page 50: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/50.jpg)
![Page 51: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/51.jpg)
A trip to San Diego
![Page 52: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/52.jpg)
https://twitter.com/ChristophLucian/status/482651109173895168
![Page 53: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/53.jpg)
Mob #2
![Page 54: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/54.jpg)
Mob #2
•4 co-located including team lead•2 80 inch TVs on the wall
![Page 55: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/55.jpg)
![Page 56: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/56.jpg)
![Page 57: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/57.jpg)
![Page 58: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/58.jpg)
Discoveries!
![Page 59: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/59.jpg)
Physical space
![Page 60: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/60.jpg)
![Page 61: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/61.jpg)
Strong-style pairing
![Page 62: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/62.jpg)
"For an idea to go from your head into the computer, it MUST go through someone else's hands"
![Page 63: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/63.jpg)
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
![Page 64: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/64.jpg)
Location
Detail
![Page 65: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/65.jpg)
![Page 66: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/66.jpg)
The hard work is when you’re NOT at the keyboard
![Page 67: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/67.jpg)
No standups!
![Page 68: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/68.jpg)
More JIT code design
![Page 69: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/69.jpg)
Increased “Bus Factor”
![Page 70: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/70.jpg)
Resilient
![Page 71: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/71.jpg)
Working on the right thing
![Page 72: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/72.jpg)
Get things done and delivered
![Page 73: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/73.jpg)
![Page 74: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/74.jpg)
Downside?
![Page 75: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/75.jpg)
Less worktime flexibility
![Page 76: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/76.jpg)
Looks funny from the outside
![Page 77: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/77.jpg)
And then product management…
![Page 78: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/78.jpg)
Mob #3
![Page 79: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/79.jpg)
![Page 80: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/80.jpg)
Ways we use forms of Mobbing
•Large onsite with client workshops•Workshops at our location•Everyday work
![Page 81: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/81.jpg)
One navigator, many pairs
![Page 82: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/82.jpg)
![Page 83: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/83.jpg)
![Page 84: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/84.jpg)
One navigator, many mobs
![Page 85: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/85.jpg)
![Page 86: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/86.jpg)
![Page 87: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/87.jpg)
![Page 88: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/88.jpg)
![Page 89: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/89.jpg)
Experience != Learning
![Page 90: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/90.jpg)
Experience + Reflection => Learning
![Page 91: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/91.jpg)
![Page 92: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/92.jpg)
![Page 93: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/93.jpg)
![Page 94: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/94.jpg)
![Page 95: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/95.jpg)
![Page 96: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/96.jpg)
![Page 97: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/97.jpg)
![Page 98: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/98.jpg)
https://github.com/willemlarsen/mobprogrammingrpg
![Page 99: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/99.jpg)
![Page 100: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/100.jpg)
It’s not solo programming with a group
![Page 101: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/101.jpg)
It’s fun!
![Page 102: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/102.jpg)
![Page 103: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/103.jpg)
Mike Clement
• @mdclement• [email protected]• 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
![Page 104: Mob Programming for Continuous Learning](https://reader033.vdocuments.us/reader033/viewer/2022052300/58eb343b1a28ab6d778b4699/html5/thumbnails/104.jpg)
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