Thanks to some encouragement from Ravi suggesting I try my hand at a Sudoku solver, I've written up my experiences writing one using TDD. My main goal was to see if using TDD would be helpful. I thought it was. However, you can judge for yourself. I think the experience confirmed my opinion that using TDD is not a magic wand that allows algorithms to just "emerge," but on the other hand it is a useful tool to move forward in small steps and to design code to be as intention-revealing as possible.