Here is the process I am presently using, from high-level planning down through actual BDD-style coding.
Using notecards, high-level brain dump of stories:
When complete, organize content and transfer to digital doc, toss cards.
Develop “ubiquitous language”–Words that work for both the technical implementation and with conversations with users or customers. This language is also important for the screens, which should have include clear direction on how the system works. This would be in contrast to typical programmer-generated screens, which will often have usability issues.
To each story, add a few sentences to describe it; just enough information to serve as a token for a conversation that will take place closer to implementation.
In true “Lean Startup” style, development of the app should be treated as an ongoing series of experiments to test hypothesis on what success may look like.
So an important step is to ask what is the first validatable theory to begin with, preferably an important one. Then choose only those stories that directly help create an experiment to learn from.
Continuous integration should be setup to continously deploy the app. There should be no such thing as “releases” and “iterations”.
Think with actions, every action has 3 screens…
Explore UI options on paper, in Photoshop, or in HTML to get to a happy design for the feature. It’s best to explore this in as lightweight a form as possible to avoid wasted effort.
Guard runs the features and outputs pending steps, copy and paste them, and write simple code to define them (using code semantics you wish you already had.)
Using Rspec, specify the missing functionality. Guard will now see red at the rspec level.
Get the spec green, as quickly as possible. Guard pops the stack and reruns the scenarios you’re working on. Once green, refactor anything that’s needs it.