The Force of Mob Programming

Created by Maaike Brinkhof / @maaikees

Why this presentation?

We claim to work 'agile', but are we truly working together?

What are some things that destroy productivity?

  • meetings
  • hard-to-read code
  • interruptions
  • context-switching
  • bugs
  • questions queue-time

Pair programming

Swarming

Wtf is a mob?

not this

“All the brilliant people working on the same thing, at the same time, in the same space, on the same computer.” – Woody Zuill
“An idea has to go through someone else’s hands to get into the computer” – Llewellyn Falco
“The continuous integration of ideas”

A little bit of history...

Who is Woody Zuill?

  • 35+ years experience
  • 20+ with Extreme Programming
  • 15 years as Agile Coach
  • The next story is about his team...
“It’s about a team that took the time and had the freedom to figure out how they could work well together. A path of discovery”

How it started (in 2011):

  • learning together every Friday afternoon
  • no pressure on deliverable work
  • help each other
  • coding dojo style: Randori Kata

Randori-no-kata

  • 乱取りの形: Free practice forms
  • In programming: 2 people solve a coding problem
  • Others are expected to follow with focus
  • Essential ingredient: communication

What they learned:

  • communicating better
  • get an idea from person A into the computer as code through person B
  • that they enjoyed it
  • so, do more of it!
“Turn up the good” - Kent Beck (Extreme Programming Explained)

From studying to real application:

  • difficult project was assigned to 2 programmers
  • they held a 'traditional meeting' to ask the others for help and to divide work
  • looking at the code, discussing options
  • and then....

"why don't we refactor this method?"

Because of the studying together:

  • from talking to doing
  • they recognised bad coding practices
  • they knew how to communicate effectively
  • they saw the benefits and wanted to do more

And they lived happily ever after as a programming mob

Time to address some concerns

How can this possibly be productive?

Five people are watching one person work?

Turn that around:

How can we be productive if we seperate the people who should be working together

Recognise this?

  • It is in doing the work that we discover the work that we must do. Doing exposes reality.
  • Remember: question queue-time!
  • Discovery

Productivity versus Generativity

“Division of labor is a dangerous fiction when all of your big problems are integration problems” - Kent Beck

    How many people is too many people?

  • No exact mob size
  • Hint: Questions can be answered
  • Hint: When people are learning and contributing

Is it for everyone?

"It's not something you can be automatically good at"

  • no hiding, this can be scary
  • let go of individual credit to go to team-credit
  • respect, kindness, consideration
  • practice && time needed

Everybody can do it, but you need to practice it!

Mob programming + agile == love

My experiences

How could mob programming work for us?

Explore:

  • When? What for? Who?
  • Kindness, consideration & respect
  • Facilitator to guide the process
  • Retrospective

Only programming?

Mob testing, mob writing...

Would you like to try it?

Much thanks, much wow

resources used