Mob Programming - Basic practices and principles

Published on May 22, 2018

Based on a true story! - The work of Woody Zuill, and his team at Hunter Industries as they uncovered this practice together after the experience of collaboratively learning.

As agile matures, new development and collaboration techniques are being uncovered. In this 40 minute presentation, we dive into Mobbing, what it is, the benefits, and how to get started with your own mob experiment.

PRESENTATION OUTLINE

Mob Programming

a fast guide to practices and techniques
Photo by Den

I'm AMber

im a collection of awkward memes and software development knowlegde
It builds on principles of lean manufacturing, extreme programming, and lean software development. Early use of the phrase "mob programming" was made in Extreme Programming Perspectives.

(wikipedia)

Untitled Slide

It builds on principles of lean manufacturing, extreme programming, and lean software development. Early use of the phrase "mob programming" was made in Extreme Programming Perspectives.

(wikipedia)

Untitled Slide

It builds on principles of lean manufacturing, extreme programming, and lean software development. Early use of the phrase "mob programming" was made in Extreme Programming Perspectives.

(wikipedia)

Untitled Slide

It builds on principles of lean manufacturing, extreme programming, and lean software development. Early use of the phrase "mob programming" was made in Extreme Programming Perspectives.

(wikipedia)

What is Mob programming?

It builds on principles of lean manufacturing, extreme programming, and lean software development. Early use of the phrase "mob programming" was made in Extreme Programming Perspectives.

(wikipedia)
Photo by Jon Tyson

the Youngest of the agile development techniques

like a lot of agile techniques, and even the manifesto its self; Moving was discovered by practice, rather than invented as an idea.

ages of techniques

like a lot of agile techniques, and even the manifesto its self; Moving was discovered by practice, rather than invented as an idea.

Teams use one computer, one projector screen, one keyboard, and one mouse as the whole team worked together to solve one code problem at a time.

which seems totally counter intuitive.
however...

some benefits of this approach include

  • developers learn more
  • Knowledge is shared across the development team
  • move faster, deliver quicker
  • working environment is improved
  • have fun at work
  • reduction in meetings
  • no need to estimate
disclaimer: side affects may include
* Having fun at work
*achieve states of flow

ask your agile coach if Mob Programming is right FOR YOU!

"In an effort to increase our agile development skills and knowledge, we were spending three hours a week training and becoming more familiar with Extreme Programming techniques such as pair programming and test-driven development. In the Coding Dojo we used one computer, one projector screen, one keyboard, and one mouse as the whole team worked together to solve one code problem at a time. To be able to study this way required that we follow a protocol of behavior and a few simple pair-programming techniques that made it easy for each team member to contribute and optimize the learning experience." - Woody Zuill

Woody also mentions how he spent a long time coaching this inception team in clean code and it's attributes
Photo by Csaba Balazs

What does Mob programming look like?

Photo by theilr

Why would we Mob program?

Photo by Ksayer1

if there are blocks to

  • team communication
  • team alignment
  • collaboration
  • working together as a team
  • effective code reviews
  • the "self-organizing team" concept
  • speed of delivery...
  • team relationships
also of note that this is effective at removing work imposed silos.
Photo by drubuntu

First steps

basic principles and practices

it works if the following are applied:

  • Principle: Treat each other with kindness, consideration, and respect.
  • Practice: Driver/navigator pair programming adapted to work with the whole team
  • Practice: Timed Rotation
  • Practice: Whole Team
  • Practice: Reflect, Tune, and Adjust Frequently

1.
Treat each other with kindness,
consideration,
and respect.

Because the team work closely together throughout the day, they are constantly communicating, and must be able to express ideas, discuss problems, explore possible solutions, and share thoughts
all day long.

and must be able to express ideas, discuss problems, explore possible solutions, and share thoughts
all day long is a key point

To make it possible to sustain this high level of communication, the team adopts the principle to always treat each other with kindness, consideration,
and respect.

While this seems straightforward, acknowledging the importance of this principle provides a foundation for the daily team interactions.

2.
Driver/navigator pair programming adapted to work with the whole team

“For an idea to go from your head into the computer, it must go through someone else’s hands.”

“For an idea to go from your head into the computer, it must go through someone else’s hands.”

the best ideas happen away from the computer, when engineers have space to think.

whole team Driver/Navigator gives teams this space, while also making ideas
more resilient.

By sharing ideas collectively, the overall design and direction the solution takes
gets better.

3.
Timed rotation

use a timer and a randomized rotation pattern.

no longer than 10-15 minutes.

The driver hands the keyboard off to the next driver when their turn
ends, and then rejoins
the navigators.

don’t require that everyone take the driver role; it is everyone’s choice whether to do so.

4.
whole team

every contributor to the project is an integral part of the whole team. Including customers, managers, Product owners, other teams etc.

We have all the skills we typically need for almost everything we do, including coding, designing, database, testing, and documentation.

When we don’t have the skills we need within the team, we find someone who does and invite them to work with us to accomplish the needed work.

the law of two feet:
If at any time during the time together you find yourself in any situation where you are neither learning nor contributing, use your two feet, go someplace else!

5.
Reflect, Tune,
and Adjust Frequently

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

frequently evaluate what is working, what problems arise, and how things could be improved.

daily retrospectives

daily retrospectives....

but only for 15 minutes

6.
TURN UP THE GOOD!

Photo by Austin Schmid

if we are sure to regularly reflect,
tune, and adjust,
good things will happen!

Photo by Austin Schmid

so how to start?

Photo by sabertasche2

Find something you can collectively learn about
and spend 3 hours per week on it together to
create a collective
understanding of a topic.

Photo by Bytemarks

some suggestions

  • design sprints
  • clean code
  • effective pairing
  • the elements of kanban
  • no estimates movement
  • red green refactor - TDD
  • how to use the code dojo concept
  • watch the mobbing video together
Photo by Bytemarks

Get your current sprint work done to the point where you are pulling the next most important thing from the backlog

Rearrange your space:
One monitor
one computer
one keyboard

Rearrange your online space:
One online team space
one collaborative IDE

Launch the experiment!

Photo by SpaceX

but remember to give to time to go past the forming/storming stages

Photo by SpaceX

If you want more information:
follow Woody
@WoodyZuill

Photo by Paul Keller

read the book!
leanpub.com/
mobprogramming

Photo by Paul Keller

Listen to woody & Scott!
www.hanselminutes.com
episode 553

Photo by Paul Keller

Try it yourself!!
experimentation works.

Photo by Paul Keller

Thank you!!

DANKE! CHEERS MATE! ARIGATO GOZAIMASHITA! MERCI! DZIEKUJE! Спасибо!
Photo by Katya Austin