The first program other than HelloWorld which I ever wrote in Java was a very simple version of Tetris. My OO design was nonexistent, but it enabled me to explore the language and trawl through the APIs. Goodness knows where the source code went. It was a while ago.
For a while I have wanted to rewrite the game, mostly to practice OO design, but the years have ticked over and I have different priorities. I can’t pair program at home without developing multiple personality syndrome, but there are other agile practices, technologies and concepts which I want to work with. JBehave is currently top of the list.
I’m a writer and a poet. The idea of being able to use natural language to develop code appeals to me immensely. I am therefore in the process of speccing out a version of Tetris called Hellbound (I hope eventually to get a GUI consisting of fallen angels and demons being dropped into a fiery pit). I want to develop the specs as I go along, using JBehave to help me determine the responsibilities of each class and to test their behaviour. This could be interesting, since JBehave is, um, a little lacking in documentation at the moment (want any help with that?). I’m hoping to practice other things such as: dependency injection, refactoring,
testbehaviour driven development, etc.