in reply to Extreme Programming Frightens This Perl Programmer
Let's compare staffing a project to pulling adventurers from a dungeon and sending them on a quest. As they strive towards their goal, they will gain experience as they hack through monstrous insects (bugs), ogres (management), and cryptic mazes (legacy code). But if they pair up, either one of them may have that key magic item (software tool) or special skill (knowledge) to bypass certain hazards. Combining assets creates great power.
However, let's say both parties have a viable solution to removing green slime (memory leaks). One burns it from their body while the other casts a complex spell which painlessly dissolves it. Burning it inflicts some damage on yourself, but it is done instantly and recovery usually isn't too bad. Casting the spell takes a long time and requires resources, but it destroys the slime without any pain or mess. If both adventurers are civilized, they will decide on which method is best for the situation.
Back in the real world, my own experience has led me to conclude that paired efforts are very effective for high and mid level design, but cumbersome when it comes to implementation. However, if there's an effective way to do it, I'll be interested to see how it's done. Would anyone who has used XP successfully care to share?