2025 Public Training Schedule
January 14 – 17, 2025 – Agile Analysis and Design Patterns – Half-Day Sessions
(c) 2024 To Be Agile
Collaboration requires a set of skills that must be practiced and mastered. Most software development projects involve collaboration among many developers so being able to work as part of a team, and to communicate complex ideas effectively, are important skills to have.
Pair programming is one approach to collaborative development. Pair programming is not about taking turns at the computer but rather bringing two minds to bear on the same problem so that it’s solved more easily and with higher quality. Pairing might seem a little scary if you haven’t tried it but in my experience, once developers experience pairing correctly then they get hooked on it.
Here are three other forms of collaboration that I draw on from time to time:
Spiking: A spike is a predetermined time box that is used to answer one or more questions. These can be architectural questions, implementation questions, or anything else. Spikes are generally used for research but they can also be used for other activities like refactoring, or anything that takes us out of our normal iteration.
Swarming: A swarm is when the whole team temporarily works to solve the same problem. Swarms are typically used when there is a showstopper bug or some problem that impedes the whole team from doing their work. A swarm engages everyone in solving a problem that affects everyone.
Mobbing: A mob is like a permanent swarm. The whole team works together solving the same problems all day, every day. This may sound inefficient but in most cases it isn’t. Obviously there are limits to the size of a mob but for many kinds of problems, mobs can produce higher quality and propagate knowledge faster among a team than through pairing or standups or any other Agile activity.
Each of these different approaches to collaboration can be useful under different circumstances and all of them provide maximum opportunity to propagate knowledge throughout a team. I get into all three—four, including pair programming—in much greater detail in my book, Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software.
{1 Comments }
Previous Post: « Change Your Mind
Next Post: Practices We Aren’t Taught »
Hi, thank you for this post The most important part in software development projects involve collaboration among many developers so being able to work as part of a team, and to communicate complex ideas effectively. nice informative article.