Social Programming Is Underutilized
Social programming practices are highly effective but underutilized practices in software development. Many teams hesitate due to misconceptions about productivity loss, cost, and lack of autonomy.
Hello, developers! đ
Welcome back to the Learn Agile Practices newsletter, your weekly dose of insights to power up your software development journey through Agile Technical Practices and Methodologies!
Before starting, I quickly remind you that my brand new Test-Driven Development 101 5-day Email Course is available: it is the introduction to TDD I wish I had when I started learning it, so I think you will find it very useful!
As a subscriber to my newsletter, you can have it with a 10EUR discount! đ
Now, let's dive into today's micro-topic!
In short
đ„ Social programming practices are highly effective but underutilized practices in software development. Many teams hesitate due to misconceptions about productivity loss, cost, and lack of autonomy.
đ§ Social programming isnât about typing fasterâitâs about thinking smarter. Two engineers working together reach better solutions faster than solo work.
đ Teams spend most of their time understanding business needs, defining problems, and designing solutions. Social programming improves knowledge sharing, reduces silos, increases engagement, enhances problem-solving, and boosts code quality.
âł Social programming itâs especially valuable for onboarding, solving complex problems, handling incidents, refactoring, and conducting code reviews.
Use them Daily!
Pair programming and mob/ensemble programming are among the most underutilized practices in software development. Not because they donât workâquite the opposite.
By underutilized, I mean that their usage is too low compared to the ROI of using them; in other words, software developer teams are losing opportunity to increase their effectiveness and outcomes by not using Social Programming practices.
But why do so many teams hesitate to embrace them? There are some misconceptions about productivity loss, concerns over pairing costs, and a lack of proper facilitation often hold companies back - and this is often coupled with control: most teams are not âallowedâ to try those practices, which means they are not independent in deciding how to work.
More Eyes on Code = Smarter Engineering
This issue has been heavily inspired by this interview by Farhan Thawar at the Lennyâs Podcast - an interview with a lot of inspiring topics: Farhan was able to inspire me to evolve my reflection about why Social Programming is not a common practice, and here you can read my reflections about it thanks to his words.
đĄ Pairing isnât about typingâitâs about thinking. Two developers working together donât produce half the output; they produce better solutions, fasterâa better outcome. The real bottleneck in development isnât typingâitâs problem-solving. With two people engaged in deep thinking, solutions are reached with fewer errors and less rework later.
đĄ In Shopify, they even implemented a radical approach: pairing with a strict one-hour timerâif the problem wasnât solved, the code was deleted and rethought from scratch. This extreme approach forced engineers to stay focused, avoid over-engineering, and move faster with clarity. Iâm a big fan of throwing away code when needed, and this practice is fascinating.
đĄ AI tools like Copilot may feel like an automated pair programmer, but they arenât a substitute for human collaboration. AI-generated code is helpful, but it lacks context, intuition, and the ability to debate trade-offs. The best results come from AI + human pairing, not just AI alone. Two experienced engineers working together can still outperform AI-assisted solo work when it comes to complex, creative, or highly specific problems.
More Than Just Writing Code
Coding is a very small part of Software Developmentâmaybe around 10/20% of time of a team is actually spent coding. The rest of the time, the teams needs to make sure to understand the business, the problem to solve, the customer needs - and then, think to a solution that solve those needs and innovate.
Thatâs why Social Programming is a great practice:
â
Improves knowledge transferânew hires ramp up faster by absorbing techniques, domain knowledge, and best practices naturally
â
Reduces silosâteams become more cross-functional, reducing reliance on âkey peopleâ who hold critical knowledge
â
Increases engagementâdevelopers stay more focused, reducing context-switching and distractions
â
Enhances problem-solvingâhard problems get tackled more effectively, avoiding tunnel vision
â
Boosts code qualityâfewer bugs, cleaner architecture, and better long-term maintainability
In fact, studies show that pair programming can reduce unplanned work by up to 50%, meaning more time to invest for the team in the work that really matters.
You Donât Need to Do it All the Time
One of the biggest misconceptions about Social Programming is that it needs to be done all day, every day. Thatâs not true. First of all, as I already said, we donât code that much. In general, anyway, even 4-8 hours per week of intentional Social Programming can yield massive benefits.
When Should You Use Pair/Mob Programming?
đ„ During onboardingâNew hires ramp up significantly faster by pairing with experienced team members
đ ïž When tackling complex problemsâTwo brains are better than one for navigating tricky logic or architecture decisions
đ During incidentsâPairing in high-stakes situations can prevent mistakes and lead to faster resolution
đ For refactoring sessionsâRefactoring is smoother and less risky with real-time discussion and review
â
For code reviewsâLive, collaborative code reviews can replace long async comment threads, especially when changes are very impactful
Itâs Time to Reconsider
Pair and mob programming arenât just "nice-to-haves"âtheyâre force multipliers for engineering teams. If youâre not using them, youâre missing out on better code, faster learning, and happier teams.
đźđč Calling my Italian readers!
đ Want to master Continuous Integration and safely hide work in progress?
Join my hands-on Mastering CI: Fast Releases for Modern Team Workshop, organized in collaboration with Crafted Software Community, where you'll learn to implement these techniques in real-world projects. Say goodbye to long-lived branches and risky deploymentsâembrace seamless integration with confidence!
đ Dates: March 29th, April 5th and April 12th. (3h sessions, 10am-1pm).
đïž Spots are limitedâSign up now and take your development workflow to the next level! đ
Until next timeâhappy coding! đ€đ©âđ»đšâđ»