What is Mob Programming?
Mob programming is the software development approach, to understand what is mob programming we need to understand what is pair programming first.
Pair Programming
In pair programming, 2 people sit together surround a table with a single workstation (yes, you heard correctly 🙂 ) and solve a single problem. Many brains are better than one to this the main principle here. We are talking about “programming” here so both may be the programmer. One who sits on the keyboard is usually called the driver and other who dictate and observe the overall direction is called the navigator. Every few minutes they swap roles and it continues until they solve the problem. Pair programming is part of software development methodology called Extreme Programming, in which you focus on programming in pairs, code reviews, and unit testing.
Mob Programming
The Mob programming is an extension of pair programming. In mob programming, you just increase the number of people (at least more than 2) and add a whole new set of rules to make it more organized. One by one everyone sits on the driver (the person sitting with the keyboard & mouse) seat and act as navigator within 7 to 10 minutes duration whereas rest of just observe, plan, search or just watch on screen.
The ultimate purpose is to find the solution of the single problem at given space and time.
There are a number of roles and rules are involved in a pair and mob programming. These roles are more crucial in mob programming since they are supposed to follow set of rules to run mob programming effectively. The driver is the person who is operating keyboard and mouse at any given time in the loop of mob programming. The driver is just listening to other major role called a navigator is the person giving the instruction/dictation to the driver what to do. The navigator is supposed to provide clear instruction to the driver so the driver listens to the navigator and not do anything by his/herself unless it is part of the navigator instructions. Other people act as an observer, solution finder, planner or helper. Observers are not allowed to speak, the navigator can ask for help from the observer in case of not knowing what to do next but it is totally up to the navigator if accept the help/solution from observers. The observer is allowed to do anything (searching on Google, finding the solution on the whiteboard or planning) other than speaking. As an observer, you can raise your hand if you think you can help with something but it is up to navigator if accept the help otherwise wait for your turn to be a navigator. If navigator foremost and other think they are want to discuss the solution they can take a short pause and resume the mob programming. In mob programming, big high-resolution screens are recommended so everyone can see clearly.
Yes, it is fun also little weird feeling especially doing first time as a driver you feel that you are at motorway on the fast lane and others are stopping to pass by but this is the learning with mob programming that everybody has good ideas and you should have patience, open-minded and focus on the problem together being supportive to your team.
For more understanding, I would recommend following the Woody Zuill who discover the mob programming.