The Power of Mob Programming: Unlocking Collaborative Excellence in Software Delivery
When it comes to solving complex problems, seeking diverse perspectives and working as a team is often the best approach.
Take, for example, a liver transplant where a team of liver surgeons, physicians, specialists, and nurses work together to ensure the success of the procedure.
Or, a marching band practicing together to create an outstanding college football halftime show.
In the realm of software delivery, however, the misconception exists that software engineers are interchangeable, discounting their unique experiences and perspectives.
In the Inu Squad, we challenged this notion by embracing mob programming, also known as Software Teaming, for the past 13 months.
The results have been nothing short of remarkable, highlighting the immense power of mob programming to transform the software delivery process.
Beyond Quantity: Rethinking Success in Software Delivery
In many software product companies, the belief prevails that optimizing the number of hands-on keyboards leads to improved business outcomes.
The allure of outputting more code is enticing.
However, delivering software is a funnel and it is crucial to recognize that more in one part does not necessarily mean more in another.
With more traditional software delivery practices more code does get written, but less frequently is that code delivered, what the company wants, or is the knowledge shared.
This leads to waste.
Waste in the form of waiting, waste in the form of rework, and often waste in the form of overengineering.
This metastasis itself in companies as Hero Programming where only a single people can change, support, and deliver value for critical pieces of software instead of teams.
In the Inu Squad, we realized that true long term success lies in harnessing the power of collaboration and leveraging our unique skills and experiences to deliver simple working software.
Our Journey with Mob Programming
Throughout our journey with mob programming, we have experienced significant achievements and milestones.
Our success can be attributed to the combination of two key practices: Discovery Trees and mob programming.
Discovery Trees served as a valuable tool for brainstorming and aligning on technical details and project vision.
However, it was mob programming that ensured we stayed aligned as we delved into the intricate implementation details.
This collaborative approach facilitated knowledge sharing and quick adaptability, allowing us to respond to changes swiftly and effectively.
Unblocking and Adapting through Knowledge Sharing
One of the notable advantages of mob programming is its ability to unblock team members and foster adaptability.
By working collaboratively, we encountered new discoveries and learnings while diving into the code.
Mob programming enabled us to collectively share this knowledge, ensuring that no valuable insights were lost or trapped within individual silos.
Consequently, we became more responsive to change, overcoming obstacles together as a cohesive unit.
The Benefits of Being a Single Team with a Shared Outcome
As a single team with a shared outcome, we experienced a remarkable sense of unity and purpose.
There was no sense of burden when seeking assistance or collaboration from our teammates; rather, we saw it as an opportunity to grow and overcome challenges together.
This collective mindset created an environment where collaboration thrived, ultimately leading to the delivery of more extensible, scalable, and simple solutions.
Building Better Solutions: The Constant Feedback Loop
The continuous feedback loop inherent in mob programming proved to be a significant advantage in delivering simple solutions as well.
By actively collaborating, we could identify potential issues early on, iterate rapidly, and wrote high-quality code.
This constant feedback and communication eliminated unnecessary delays from more traditional code review processes and ensured that our solutions were robust, efficient, and met the needs of our stakeholders as we collectively understood them.
If we were not aligned about a business requirement, we would immediately reach out to our product manager to clarify it.
In more traditional software delivery practices, a siloed engineer does not have their understanding of the business problem challenged until the code is ready for review.
With mob programming, this feedback is continuous.
Embracing Challenges: The Path to Mastery
Embarking on the path of mob programming was not without its challenges.
Initially, we faced difficulties in keeping everyone engaged during our sessions.
However, through open communication and a willingness to experiment, we found effective solutions.
For instance, we rolled a 20 sided dice to determine the driver for each session, promoting participation.
Additionally, we adopted the Pomodoro Technique to ensure we took regular five minute breaks and maintain high levels of engagement.
These experiments not only improved our collaboration but also influenced our overall workflow for the better.
Achieving Remarkable Results: Our Journey of Growth
Through our commitment to collaboration and continuous improvement, we achieved remarkable results as a team.
We successfully migrated from Plaid to Stripe, delivered the scalable and future-ready Preferred Breeder Program, and enabled seamless video playback as a team.
Furthermore, we streamlined the onboarding and offboarding process for temporary team members, introducing them to modern agile practices such as Discovery Trees, Test-Driven Development (TDD), and vertical feature slicing.
Skills engineers brought back to their teams and their own personal side projects outside of Good Dog.
Unlocking the Full Potential: Embracing the Power of Mob Programming
Mob programming is an approach that not only revolutionizes software delivery but also unlocks the full potential of collaboration within a team.
The Inu Squad’s journey serves as a testament to the transformative power of shared knowledge, continuous feedback, and a collective problem-solving mindset.
By embracing mob programming, companies can harness the diverse expertise of their team members, foster a culture of collaboration and learning, and achieve new levels of performance in the software delivery landscape.