Updated: Oct 5, 2022
Also known as Ensemble Programming, is a software development approach where two or more team members work together using a shared computer on the same task with everyone focusing on contributing their best toward the work at hand. Focus is a key ingredient to having successful social programming sessions.
Why I would limit my team throughput by co-working on the same thing?
Having more eyes and more brains (hence focus is key), on the same problem or task usually bring more ideas and more effective, efficient, and innovative solution. Alongside the good solutions, social programming brings some by-products such as knowledge sharing, up-skilling, and cross-learning making your team members more of the t-shape engineers we all aim for.
So I learn more and have more fun at the cost of the delivery!
Counter-intuitively, when done right, social programming produces more and higher quality software. Some studies show you produce 15% fewer software features with 15% better quality. Our experience tells us that this is still an underestimation of the overall productivity you gain.
When considering the cost of re-opening bugs, finding bugs late in the process, and basically more bugs it becomes obvious how much gain your team and organization can benefit from well-strategized use of social programming techniques. The key here is having a good thought-of strategy around social programming practices and good coaching and mentoring to guide your teams until they master different social programming styles, and intuitively decide on what technique to use based on the situation at hand.
More rewarding learning team environment
Social programming reduces or eliminates the time spent on code review. Testing experts' participation brings a testing mindset into coding activities and helps drive your shift-left testing effort toward a test-first mindset.
Your test experts learn more about coding and unit testing, your developers learn more about testing, and your team becomes more capable of producing higher quality software at a faster pace than ever before.
Okay, all these benefits, and I did not talk yet about the psychological safety and team-building benefits! Social programming is a very effective team-building activity that your teams do as they deliver software. Since we code together, we are all accountable with no room for blame or hero cultures. Psychological safety is another by-product you get from social programming.
In conclusion, Social programming help creates high-performing teams.