When pairing, especially remotely with someone you don’t work professionally with, it is sometimes helpful to have some ideas about how to go about getting the session going or what to do. This is just a set of ideas that might get the ball rolling.
Problems to work on
- PuzzleNode - 15 shortish (30 minutes to 4 hour) problems. Great for pairing.
- Conway’s Game of Life - Can implement a basic version quickly. Lots of ideas for restrictions on this site.
- TDD Katas - Can be done in 30 minutes alone.
- Dominion - A larger problem, but it will tease out larger design issues that you don’t get with smaller systems.
- Build a Twitter - Simple system that can be extended. Adding a UI and continuing strict TDD is very interesting since you might be able to TDD the core system, but have more difficulty with the surrounding. Are there ways to mitigate the risks of using a framework as a shell? Are there ways to make the shell “swappable” – not so you’d actually swap, but so you have loose coupling?
Ideas to practice
- Ping Pong - Pair back and forth, one writes a failing test, one makes it pass, then writes the next failing test, and so on.
- Various Limitations - No loops, no conditionals, limit lines per method, no voice communication (or typing out in chat… only communication is through code)
- TDD As If You Mean It - Strict TDD that involves real tests before code and strict refactoring rules. This can be combined with any other limitation or idea, but it’s so difficult (And rewarding) that it’s okay to Just Do This.