"Pair Programming Musical Chairs"
Apparently a Randori
is a form of martial arts training where the students take turns sparring with the instructor. In the context of programming, it's a form of pair programming where the pairs rotate every few minutes, and everyone is working on the same problem together. It's a great way to learn from others, and to teach others, and to get a feel for how different people approach problems.
Also it is SUPER FUN!!!
- Driver -- One person at the keyboard. Don't think, just type (maybe syntax-level -- write a function, extract a method, if they know the language). Only does what the Navigator tells them to do.
- Navigator -- Sit next to the driver and direct them. Can also ask the choir/queue for advice, especially if they aren't familiar with the technology being used
- Choir -- Everyone else, watching and kibitzing as appropriate and helpful to the Navigator
- Audience -- Passive watchers who aren't actively participating. Ideally used if you run out of space in the Choir, and ideally they keep their thoughts to themselves until they join the Choir :)
- Bonus role: Guide -- this person knows the tech and guides the current Navigator, teaching the whole group through the guidance
- A screen that everyone can see that is projecting from a computer
- Computer on a table with two chairs, off to the side. This is where the Driver and Navigator sit, so they can see the screen and the Choir-Queue can hear them.
- Row of chairs for the Choir-Queue, facing the screen
- More chairs behind that for the general passive audience
- Group picks a problem with specific goals / strategy (or one is provided by moderator)
- After a fixed amount of time (3-5mins) or event (red/green/refactor) everyone ROTATES!
- Joyously shout "ROTATE!"
- Everyone stands up
- Driver heads over to the end of the Choir-Queue
- Navigator becomes Driver
- First chair in the Choir-Queue becomes Navigator
- Everyone in Choir moves down a chair, making room for the previous Driver!
- Do this for a while (1-2 hours maybe, or a nice stopping point) and then everyone reviews
- This works well with toy problems and small challenges. I've done it with command-line games especially, but other things also like going through a tutorial or one time we built a Christmas Tree out of pure CSS and a few divs.
- What if I have a lot of participants?
- Since each rotation is 3-5 minutes, this starts running out of scale at 8-10 participants. You can additionally have an audience, folks sitting in the back who are passive watchers learning and observing. You could leave an empty seat in the choir for people to join/depart. The longer the Randori the more people can participate, of course, but it can't last forever :)
- What if I have some people who are shy, who don't want to program publicly?
- That's ok! It's cool to hang out in the audience and watch from afar
- Set the tone of friendly enthusiasm and you will find it to be contagious :)
- Remember to let folks know that they are NEVER alone, and at no point are they solely responsible for what is happening; the overall hive mind is working together