I've never seen the point of comparing programmers to ninjas or samurai, but the people who do so often have good ideas. One that I particularly like is the Agile Inception Deck from Jonathan Rasmusson's The Agile Samurai, which sets out a ten-step process for making sure that everyone involved in a new project is actually trying to build the same thing. The ten steps are:
- Why are we here?
- Create an elevator pitch.
- Design a product box.
- Create a NOT list.
- Meet your neighbors.
- Show the solution.
- Ask what keeps us up at night.
- Size it up.
- Be clear on what's going to give.
- Show what it's going to take.
It's a good process, but some steps need to be translated to use it for research coding projects—for example, I think step #3 should be to design the project's first poster, and "see if someone has already built what you need" ought to be on the list as well. What would you change or replace, and why?