We run 45 minute “sprints” where pairs choose a kata to work on using ping-pong or pilot-navigator pairing, and follow each sprint with a short retrospective. For this exercise I ask everyone to agree on a single language, or choose from among two languages that everyone is OK with, and a single non-trivial kata, i.e. everyone solving the same problem. We also use cyber-dojo.org to level the playing field for all as regards an IDE.
Start a timer after everyone has sorted themselves out (paired and begun). Set the timer for 10 minutes.
At the end of ten minutes (remember, they were expecting to have 45 minutes), ask everyone to stand and each pair move together to the next station to their right. They are now taking over the other pair’s code base.
Start a timer, again for 10 minutes. At the end of ten minutes, repeat the instructions exactly; everyone rotates, moving with their original pair to the next workstation/laptop.
Purpose: These two rotation obviously give participants a sense of what it means to take responsibility for a new-in-every-sense code base.
Start a timer once again for 10 minutes. When it expires have everyone return to where they started.
Purpose: This simulates the “What have they do to our/my code?”
As timer expires, have just 1 member of each pair move to any workstation/laptop where they have not been previously.
Purpose: This simulates having to explain to a new team member how everything works, even when not all of the code is yours, sort of a joint discovery, complete with some exposed vulnerability.
I’ve used variations of the above many times, and used it exactly as described just last weekend. The retrospective revealed exactly what you would expect: the long-time developers and consultants totally got it. The newer folks had their eyes forced wide open. Craftsmanship isn’t all unicorns and rainbows.