mob programming for continuous learning
TRANSCRIPT
Mob Programming for Continuous Learning
Mike Clement@mdclement
[email protected]://blog.softwareontheside.com
My journey
“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.”
“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.”
Code Reviews
Benefits of Code Reviews
• Help from others• Redundancy• Readability• Coding standards
How to reduce the length of the feedback loop?
Informal Pairing
Informal pairing
• “On demand” collaboration• Started to spend more time together
Randori
Utah Software Craftsmanship
How to reduce the length of the feedback loop?
Pairing Time with Pairing Stations
Caves and Commons
Agile Software Development: The Cooperative Game by Alistair CockburnFigure 3.1-1. Completed office layout (Courtesy of Ken Auer, RoleModelSoftware).
One navigator, many drivers
How to reduce the length of the feedback loop?
Persistent, promiscuous pair programming
Whole team ownership?
“You should really talk to Woody Zuill. You need to see what they’re doing at Hunter Industries”
http://mobprogramming.org/
All the brilliant people, working on the same thing, at the same time, in the same space…
All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.
How to reduce the length of the feedback loop?
“Let’s try mob programming”
My experience
Mob #1
Mob #1
•3 co-located + 1 remote•Pairing station
Whole team ownership of code!
Then we added a team member…
And the remote member moved to be co-located…
A trip to San Diego
https://twitter.com/ChristophLucian/status/482651109173895168
Mob #2
Mob #2
•4 co-located including team lead•2 80 inch TVs on the wall
Discoveries!
Physical space
Strong-style pairing
"For an idea to go from your head into the computer, it MUST go through someone else's hands"
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
Location
Detail
The hard work is when you’re NOT at the keyboard
No standups!
More JIT code design
Increased “Bus Factor”
Resilient
Working on the right thing
Get things done and delivered
Downside?
Less worktime flexibility
Looks funny from the outside
And then product management…
Mob #3
Ways we use forms of Mobbing
•Large onsite with client workshops•Workshops at our location•Everyday work
One navigator, many pairs
One navigator, many mobs
Experience != Learning
Experience + Reflection => Learning
https://github.com/willemlarsen/mobprogrammingrpg
It’s not solo programming with a group
It’s fun!
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
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