Mob Programming
Mob programming is a method of working collaboratively in which a small team of software developers all work on one problem together with one person at the keyboard at a time. This can help prevent knowledge silos and increase knowledge sharing throughout the team that is working within a given context.
A common concern that people share with this style of working is that it feels as though the speed at which the team can deliver results must be slower in order to accommodate this style of working, because it requires everyone to be together at once instead of dividing the members of the team into individual work streams to work on multiple things at the same time (sometimes even incorrectly characterized as a divide and conquer approach). It does appear to be an expensive way of writing lines of code, but to truly consider velocity and cost, the total picture must also be considered. Mob programming practically eliminates the code review process as the code review has taken place completely within the code writing process itself. The amount of time that anyone on the team will need to review that code with others is also reduced, especially if they brought in product owners and UX designers throughout the process, having them join the working group.
And the speed at which code is written is a very misleading metric, because, ideally, the code that you produce through mob programming needs less rework, and less attention to improve in future iterations, because the quality—which also is tricky to measure—is ideally higher.
Backlinks
-
Divide and Conquer
It is sometimes erroneously used to illustrate the theory of the shortcomings of mob programming with having all members of a team focusing on only one thing at a time. This comes from a confusion over what is being divided in the famous phrase. If a team divides itself and tries to have every person solve things on their own, then it may be difficult to integrate those pieces together in the end. Consider a haunted house in a horror movie and the knowledge of the doom that will face the protagonists once they decide to split up, allowing themselves to be left vulnerable in the territory of the enemy. The true metaphor to divide and conquer on a team is not to divide the team but to divide the work that the team has to perform so that the work can be completed incrementally.
-
Technical Debt
Regardless of perceived skill level or experience of engineers on a team, there is always a benefit to getting multiple perspectives as the code is being written to get the best quality ahead of time, so consider mob programming or pair programming to shift the code review process earlier.
-
CliftonStrengths
It is said that, once the assessment has been taken by someone once, it does not need to be taken again, because the assessment targets the intrinsic interests and values in the respondent. That being said, I did retake it myself 7 years after my initial taking (the results above reflect my most recent results). When I first took the assessment, I had just graduated from college and I was early into my first full-time role as a software developer. In the years to follow, my appetite for learning technical skills (Learner, which is still #3 for me now, was previously #1) was giving way to an interest in sociotechnical systems and the bigger picture of how to write software that has higher quality with a consideration for ethics and accessibility. I had gone into and out of management. I learned about pair programming and had been mob programming for over a year. I even had become more spiritual and learned so many more things about myself and why I think and feel the way I do. So while it is recommended that people trust and believe that the results they get one year will still represent them years in the future, I knew that there had to be changes that reflect the journey I had taken since first taking the assessment.
-
Remote Mob Programming: An Introvert's Tale of Working Collaboratively
This talk about mob programming and working collaboratively has been given at the following event: