Learn about a new development practice that is gaining popularity. Built off of the values of lean and extreme programming, mob programming optimizes for the flow of work.
1. Mob Programming
whole team collaboration
BarCamp Philly 11 - November 10, 2018
Nick Goede // Anthony Sciamanna
@ngoede @asciamanna
2. Passionate about Extreme Programming (XP), Lean
Software Development, and Modern Agile. Expertise
in helping teams and development organizations
improve how they work, the quality of their code,
and their ability to deliver value to their customers.
Focusing on technical excellence, continuous
improvement, and continuous learning.
Over a decade of experience using and teaching XP
software practices and software design. Passionate
about teams that work together and across different
roles to produce value for customers.
Anthony Sciamanna
Software Developer, Engineering
Coach, blogger & organizer of
the PhillyXP user group.
@asciamanna
anthonysciamanna.com
About Us
Nick Goede
Software Engineer and Coach.
Co-Organizer of @phillyXP.
Advocate for humane software
development practices.
@ngoede
nickgoede.com
3. What is Mob Programming?
Mission Control Center, Houston, 1965
4. Mob programming is a software development
approach where the whole team works on the
same thing, at the same time, in the same space,
and at the same computer.
- Woody Zuill
“
”
5.
6. Discovered at Hunter Industries in 2011 by a team
coached by Woody Zuill
2011
A Brief History of Mob Programming
Discovered at Hunter Industries in 2011 by a team
coached by Woody Zuill
7. 2011
2016
A Brief History of Mob Programming
Discovered at Hunter Industries in 2011 by a team
coached by Woody Zuill
By 2016 more than eight mob teams exist at Hunter.
The first Mob Programming conference takes place
at MIT
8. A Brief History of Mob Programming
2011
2016
Today
Discovered at Hunter Industries in 2011 by a team
coached by Woody Zuill
By 2016 more than eight mob teams exist at Hunter.
The first Mob Programming conference takes place
at MIT
Adoption continues to increase as companies
discover the value of whole team collaboration
12. Lean Manufacturing / Toyota Production System (TPS)
Extreme Programming (XP)
Lean Software Development
1948 - 1975
1996
2003
Mob Programming builds on the principles and practices of…
14. Woody identifies a 10x productivity improvement on his teams at Hunter Industries…How?
This can’t be efficient?!?
Typing ISN’T the bottleneck
1/12th of software
development is typing*
*Programming Is Mostly Thinking - Tim Ottinger
15. What are the Bottlenecks?
Solving Problems
Communication
Waste (muda)
Rework
17. Waste
Building the wrong thing
Scrapped work
Inventory / Partially done work
Waiting / Handoffs
Extra processing
Extra features
The Eight Forms of Waste – Lean Software Development
22. Mob programming optimizes for
the flow the work over the output
of an individual.
-Woody Zuill, Stopping the Enterprise Death Spiral
with Mob Programming
“
”
23. Why is it Important?
Mission Operations Control Room (MOCR) at the conclusion of the Apollo 11 lunar landing mission
38. Pair Mob Programming with TDD
Fast feedback cycles and
team-based flow supports
working a small batches
and taking breaks
39. Strong-Style Pairing Model
For an idea to go from your head into the computer
it MUST go through someone else’s hands.
-Llewellyn Falco – The Strong-Style Pairing Golden Rule
“
”
41. Pressure to Split the Mob
“We need to go
faster, let’s work
individually or in
smaller groups”
42. Individual Work Feels Faster But …
• Increases WIP
• Increases defects / rework
• Increases time in meetings
• Increases Handoffs
• Increases non-value add activities
Slows down the flow of work
Work in Process Trap
43. Waste Snake
Improving daily work is even more important
than doing daily work.
-Gene Kim - The DevOps Handbook
46. Debate in Code
When unsure what direction to go
try both versions AND THEN debate
the merits.
Don’t get lost in abstract discussion
Nasa Scientists posing for Life Magazine in 1961 in front of board of calculations
We’re going to start by going over a little Mob Programming background to get everyone acquainted with it.
This is NASA mission control Houston from 1965
This quote is the best elevator pitch for Mob Programming
Woody Zuill’s name will become quite familiar since he has played a pivotal role in the inception and adoption of mob programming
Same Space == Same Virtual Space
Update “all of the brilliant people work on the same thing…”
Next we’ll look at a short video put together by Llewellyn Falco to promote the first Mob Programming Conference
Woody Zuill – Coach of First Mob Programming Team – Face of the mob programming movement
He is also the founder of the NoEstimates movement
By 2016 woody had moved on from Hunter to work for Industrial Logic and do independent coaching and consulting
Hosted at the Microsoft New England Research and Development Center at MIT
It’s interesting Whole team collaboration is an essential ingredient of all of the agile methodologies – but has gotten lost in corporate Scrum, SAFe, and poor agile implementations where individuals continue to work alone or within their functions silos.
Mob Programming brings that focus back front and center for us
We’re going to show a couple of short videos. This first one is a time-lapse video of mob programming at Hunter Industries in 2012
This is the same company, Hunter Industries in 2016
These are just a handful of companies who are writing and talking about mob programming online
Industrial Logic – consultants and create an eLearning product
New Relic builds system monitoring products
F-secure is a cyber security company
Bluefruit builds embedded systems
Hunter Industries builds landscape lighting and irrigation products – like sprinkler systems
Mob programming is applicable in any domain
Didn’t come out of nowhere….
You can trace its roots back to Lean Manufacturing which dates back to the U.S.’s reconstruction of post-WWII Japan. Comes from the breakthroughs Taiichi Ohno – Father of TPS / Lean Manufacturing, the work of W. Edwards Deming and Shigeo Shingo.
From XP it gets TDD, pairing, and whole team collaboration
Layers on optimizing the flow of work and reduction of waste from Lean Software Development, Theory of Constriants, and TPS as well as TQM
We hear some development teams claim that it can’t possibly work because it’s so different than how they are used to working.
In other industries this is a very common way of working
NASA mission control & Musical groups work in a very similar fashion to mob programming
- At Mission Control has everyone involved with the mission is there – There are no functional silos in mission control - including redundancy in roles – everyone isn’t always busy
The drummer on the right, Tony Williams was a child prodigy, joining Miles Davis’ band at 17.
Despite being recognized as one of the greatest drummers of his era he only recorded one drum solo with Miles. We understand that every musician being busy doesn’t make for great music…but we haven’t learned that lesson yet with software
People may then concede that this MIGHT work but…
10x productivity improvement – Woody Zuill’s experience report for the Agile Alliance
Typing isn’t the bottleneck supports Brooks’s law – Adding people to late project makes it later
Mythical Man Month - Fred Brooks - 1975
If typing isn’t the bottle neck what is?
If Typing isn’t the bottleneck what are they?
The term waste tends to upset people who aren’t lean practitioners – Waste – is anything that a rational customer would not pay for. These are the non-value adding activities
2 forms of waste – pure waste and seemingly necessary waste
This is a good example of why adding more development teams doesn’t make your organization or projects faster – it often slows the organization down
Missing expertise on the teams
Teams don’t interact with their customers
Teams can’t make decisions – need to go outside the team
Teams aren’t running experiments and iterating
Work spread across teams and functional silos – communication issue
Inventory – work sitting behind feature flags – work in progress and queueing between functional silos (product, UX, development, QA, OPS)
Extra processing – processes that don’t deliver value to our customers - manually testing the same story in multiple environments – features with automated tests manually retested – manual release – manual operations
Extra features – building more features than the customer needs or gold plating because we don’t know what the customer really wants – we aren’t getting continuous feedback from our customers.Extra features coming from Waterfall Product requirements – we need every feature defined up front and every one of them must be delivered for the project to be a success – these are full of extra features
We hold the 20% of valuable features hostage by the 64% that are waste
This is a specific form of waste but I wanted to point it out separately
We call this failure demand or unplanned work in lean software development
Mob programming addresses these bottlenecks…
Helps teams Minimize waste
Minimize rework
Get Teams to Work together as an actual team instead of being a collection of busy individuals – The T Shaped Individual
All agile methodologies had in the common the T-Shaped Person
We lost it with the rise of Corporate Scrum / Agile industrial complex – doing agile processes absent of values and principles – miniwaterfalls – people working alone or within their silo.
Product Owner is the customer expert on the team but not making all product decisions
Developers also test
QA works with the code and help write tests
Woody sums up Mob Programming nicely with this quote from a podcast, Stopping the Enterprise Death Spiral with Mob Programming
Promotes focus and teamwork.
Allows capacity to observe the process and improve it.
Makes it easier to identify handoffs and bottlenecks and the ability to have people that can figure out how to remove them.
Handoffs introduce work queueing.
Work stuck in queues is a liability.
It isn’t valuable to the customer and it isn’t being worked to move it value.
The amount of time spent in queues can dwarf the amount spent being worked.
For every hand off the time that work spends in the queue increases rapidly towards infinity as the utilization of the people getting work from the queue approaches 100%. Often in a system with lots of handoffs you find that work spends most of its time waiting to be worked on.
When work flows backwards it means that something was not completed in a previous step. This results in unplanned work and thus often creates backups.
Multiple people working on the same code together at the same computer operate at around the best quality of any of the individual participants at that time and on that problem. Share knowledge and avoid knowledge compartments re: specific areas of the system/code.
Teams that used Peer Review based processes, such as pair or mob programming, achieved higher software delivery performance
W. Edwards Deming: Originally an Electrical Engineer but became a Management consultant. Credited as being a major influence on the management systems credited with causing the rapid growth of the post WW2 Japanese economy such as the Toyota Production System
Our favorite is Mobster written by Dillon Kearns
One of the simplest things you can do to improve your mob programming sessions
It encourages disciplined break taking and switching the driver often
Shorter intervals help mob participants stay engaged and focused
Experiment with different intervals but aim for shorter intervals
Seven minutes seems short – yes it is, try it.
Is the driver getting a lot of conflicting input – That’s a sign that the switching interval should be shorter
Mob Programming relies on the Pomodoro technique for disciplined break taking. It helps members of the mob stay focused and productive.
Typically once per hour but again this can be tuned.
Developed by Francesco Cirillo in the late 80s
When working alone you can break when you feel you need it.In a group setting it’s important to take consistent breaks to avoid burnout
We teach and practice TDD in mob programming sessions – Mob Programming & TDD are the two foundational practices that we teach
We find working in small batches and taking frequent breaks without setbacks being much harder w/o TDD
When we mob we rely on Llewellyn Falco’s strong-style pairing model
Everyone in the mob session is programming/testing/documenting/etc. with the exception of the driver. The driver is operating the machinery.
We’ve found this greatly improves team’s abilities to communicate with each other.
Too often we make this a “practice only for programmers” it’s called mob programming after all.
-- Some have started calling it full –team collaboration instead.
Creators of names don’t always see how the names can convey the wrong meaning – part of the reason Toyota never wanted to name TPS
TDD – has test in the name – people think it’s a testing practice but it is not
BDD was intentionally named without test in the name but people still think BDD is a testing framework/practice.
We have decades of waterfall processes and functional reporting silos to break through. But to get the benefits of mob programming and to remove the bottlenecks for delivering value the entire team works together
If you are organizing and re-organizing around the work – Working in smaller groups could be a good thing.
I would most likely not full-team mob on any busy work (unless I am automating it) – or on typos in log messages.
Teams need to build expertise mobbing which requires mobbing most of the time So that they can
make an informed decision when best to mob, best to pair, or when best to work individually.
But if you are working individually to “go faster” you are falling into a trap
Defects increase – handoffs and functional silos
More time in meetings and ceremonies needed to align the team
These meetings are non-value add – should be minimized
Use the waste snake to record waste that is uncovered during the coarse of doing the work. This includes things like waiting for builds, not having the right tools, libraries, or knowledge, and waiting for handoffs or inputs
Track the teams learning so that everyone can benefit on the team and so that they can be carried away at the end of each session to the team’s benefit.
Practicing strong-style mobbing ensures that the person at the keyboard is not the person coding.
If teams stray from this practice, it’s easy for the driver to runaway and start coding their own ideas.
This reduces focused mob participants to easily-distracted bystanders
During the space race scientists typically didn’t have access to electronic computers. In fact the origin of the word computers actually referrers to people(often women) who would do tedious calculations by hand, such as logarithm tables. Nasa Scientists would have “Math Parties” where they would split up a long complicated formula into separate parts and each scientist would learn a specific part. Then they would do calculations by having each person do their part and pass the results to the next person. This was especially useful for calculations that simulated something overtime as the result of one “run” was the inputs to the next so they could have a circle of calculation.
Don’t have theoretical debates.
https://rarehistoricalphotos.com/nasa-scientists-board-calculations-1961/
Helps to remove barriers to switching drivers regularly and people struggling wit the editor is an obvious source of waste
We find this builds empathy in company and teaches the rest of the organization how software development really works