KEMBAR78
Mob Programming for Continuous Learning | PDF
Mob Programming for
Continuous Learning
Mike Clement
@mdclement
mike@softwareontheside.com
http://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 Cockburn
Figure 3.1-1. Completed office layout
(Courtesy of Ken Auer, RoleModel
Software).
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
• 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
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

Mob Programming for Continuous Learning

Editor's Notes

  • #18 Literally would look at the code from a different point of view
  • #27 Guided katas at Ancestry Basically a traditional “code along with me” workshop
  • #33 Everybody could contribute But didn’t get “pay off” at the end of something you started usually
  • #39 Turn up the good
  • #60 Additional monitors for build/electronic board Moved desk Switched to standing desk
  • #66 Tried 8, 10, 12, 15 minutes Too short and don’t “feel” like you did much as driver Too long and you are away from keyboard too long Physical connection to work
  • #71 Move in an out of mob fluidly Vacations didn’t require handoff planning Meetings might derail a pair
  • #72 More AND less important to identify the right thing at any given moment
  • #73 Don’t worry about release coordination (as much) Get small batches released quickly Cycle time was consistently lowest on our team Maybe not faster, but sooner
  • #74 We focused on the work, not on the people
  • #92 Highlight backgrounds