Presentation #127.04 in the session “Computation, Data Handling, Image Analysis”.
Innovated by Marcus Hammarberg in 2003 and popularized in 2014 by Woody Zuill, Mob Programming is a software collaboration technique that allows for more efficient code development by having the entire team work together through a single keyboard. Intuition has led many to believe that an efficient team has every developer working independently (or perhaps pair-programming) as they work on specific features with well (or not) scoped out inputs and outputs. In astronomy, as in many fields, this kind of isolated feature development has led to problems being discovered during integration testing. Issues range from code that is simply inefficient, to code that acts in utterly unexpected ways because of contradictory assumptions made in different places. Mob programming takes an opposite approach, and has an entire team work together to complete code through a single keyboard. People take turns as the driver at the keyboard with all other team members collaboratively suggesting how the coding should proceed. Team members rotate through the driver role using the Pomodoro method of working in short intervals that may be only 5-10 minutes. Because code is developed collaboratively when mob programming, bugs, inefficiencies, and inconsistencies are more likely to be spotted in real-time and corrected. This leads to better optimization and less need to refactor. Any perceived lack of efficiency from having everyone work together is actually compensated for by individual coders not getting lost in bugs, and quality code being written in the first round rather than the Nth. In corporate environments, implementation of this style of coding has shown that a team working together in a conference room can produce products faster than individuals working in their cubes and offices. During Covid, this technique has been expanded to include teams working online through their Zoom / MS Teams / Google Meet environment. Efforts to transition mob programming into virtual collaborations opens this technique to ready application in the astronomy field, where code is often either used and adapted by strangers across multiple locations, or is written by myriad students and postdocs who each have dominion over their own specific functions and features. In this presentation, we describe how Mob Programming has been adapted for open source software development by the CosmoQuest team and is being used to engage professional software developers as volunteers in astronomy software projects. This online collaboration is producing more robust software, and is allowing modern coding techniques to flow freely from industry to astronomy research.