When I am to begin development on a new project or larger, complex task, which is mainly uncharted territory, I like to employ various techniques. One of which is called "Walking Skeleton".
A Walking Skeleton for me, is: "The smallest and simplest path, from front-end user interface input, through the system services and finally to simple, but usable output".
An example could be the development of a web application which employs a lot of input and complex data validation through a new RIA technology, a complex translation of the input on server-side into some output format and the transport of this to some other part.
Starting up on this, I would define user stories for a simple path all the way through the technology stacks of architecture. But it must be kept simple:
- The user interface can be simple in layout, and does not need to have all required fields
- Not all complex validations in client should be implemented, though a few simple ones could
- On the server-side, the client input should be accepted and validated a bit
- Some part of the server functionality can be implemented, but you can make shortcuts all over, hard-coding stuff etc.
- Some final output shall be produced
From here on, when the walking skeleton is done, the story writing and planning can be thought of as putting meat on the skeleton:
- Assess the main risks in the development (the parts you are most uncertain with)
- Which functionality delivers the most wanted business value to the customer
I do not know where the term stems from (do you?), but I did a quick google on it, and found that the book on the Crystal Method (which I have yet to read) mentions it. In addition, a colleague of mine, which is currently reading the great Pragmatic Programmer book, informs me, that it is called "tracing bullets" (or something like that) in that book, which I have completely forgotten about (maybe I should read it again).
Have you got any experience with this too or maybe you have other good advice on coping with such situations?