Agile promotes collaboration within team members. Pair Programming is a way to increase collaboration, but is it really sufficient? Valentin Tudor Mocanu described upgraded form of pair programming in his recent blog on re-interpreting pair programming.
Pair Programming, it is a highly effective practice, but the remaining question is whether it has enough coverage to describe the needed cooperative work inside the team.
Valentin says the practice name is interpreted too literally, only for direct coding activities. But an XP programmer is a multi-role developer involved also in planning, architecture designing, coding and testing. A much better term could be then “Pair Development”.
The pairing could be the most common approach, but a cooperative development could occasionally include more developers.
In DAD (Disciplined Agile Delivery), Scott W. Ambler, senior consulting partner at Scott Ambler + Associates, has introduced the practice of non-solo development for this extended cooperative development approach.
Non-solo development is an agile practice that goes beyond programming or coding and could combine pairing and solo-development techniques in a mixed approach.
Scott shared his views on non-solo development as:
I’m a firm believer in non-solo development. A critical thing to remember is that it’s not just about programming. In Agile Modeling we promote the practice of modeling with others, which was a modification of pair programming from XP. Of course, where pair programming is done by two people you can have more than two when you’re modeling.
Anyway, one of the reasons why we promote non-solo development in DAD is that it works incredibly well in many situations.
Valentin shared his experience working with various projects, products, teams, and development cases. He says that this practice is useful for complex cases of requirement clarifications, creating architecture, taking design decisions.
Valentin mentioned following agile practices as examples of non-solo development.
-
- Planning Poker, Sprint Planning and any re-planning are non-solo development practices where the goal is planning, but the activity types are rather mixed (requirements, solution, planning).
- Model storming (from DAD) - the main activity type is design.
Valentin gave following clarification with respect to each term.
- Pair Programming - a practice that want to boost the core activity, the “coding”.
- Pair Development – a practice where the overall development is performed mainly by pairing.
- Non-Solo Development – the generic case, when are combined more than one type of activity and are involved more than 2 persons.
Valentin explained mixed approach of solo development with pairing (2 or more persons) for cooperative development. He applied this approach in his teams and achieved good results. Learning curve of product knowledge also improved significantly.