You are to develop a TicTacToe game. You can write it as an Android app, an iOS app, or a web service, depending on the platform you are specialised in.
What to do and where to start: You should break the problem into user stories. Make a to-do-list of them. Then use automated end-to-end acceptance tests to drive your code from outside in. Use TDD to implement each feature.
For details of the process. Please refer to "Growing Object-Oriented Software, Guided By Tests". Chapters 9-11 can help you with iteration zero - how you can kick off the TDD process. Chapters 12-14 are about iteration one on - how you TDD to pass an acceptance test, how you can pull out the detailed design in the process. Those are just the minimum to get you started. You should benefit from reading the whole book.
Creating a nice user-friendly application is out of the scope of this kata. The game should provide only a minimal user interface, just enough for user to issue commands like "start new game", "end current game", and "select a move" and to see the current status of the game. That means it is just enough for end-to-end tests to interact with the app from outside.
Suppose we denote board cells as following:
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
Below is a sample scenario, in which a human tester can use one UI to play the roles of both players:
x 12539 x
, which means x won, the moves were 1,2,5,3,9 and in that order, and x was the first player.