Pair programming is an established (and under-used) idea. I’ve also found great benefits in pair training.
When running a training session—and I’m really thinking about something that involves working at a PC—those on the training could work individually or in pairs. Working individually forces the attendees to make all the keystrokes themselves, but it can be very taxing and isolating.
In contrast, pairing has some significant advantages:
(i) The greatest benefit seems to be the chance to discuss individual problems with a peer. If one of the pair has a problem with the task in hand, nine times out of ten their partner can help them, and they’ll do so in a way that only an equal can. The trainer can of course help, but it’s much more comfortable when the help is from someone who’s starting from their viewpoint.
(ii) The flipside of this is that knowledge gets embedded much more securely when you have to explain it to someone else. If you’re the one of the pair doing the explaining then it helps you; and it’s always good to know you can provide help on whatever new subject you’re dealing with.
(iii) Working in pairs allows people to have periods when they are mentally sorting out the rush of information. They’re still engaged, but their mind no longer needs to process keystrokes and mouse clicks, so there’s a bit more mental space to process things.
(iv) It’s always good to know you’ve got an ally, particularly when you’re working on something challenging.
I’ve recently tried both paired and unpaired training, and the paired sessions were by far the most vibrant and productive ones.