Wiki-Driven Development
With my latest project, I've been experimenting with a different type of development workflow. I've been documenting pieces of the project in a wiki (Wetpaint, which is great) before any development is done. The workflow has basically been this:
- Create an end-user how-to wiki topic for the functionality
- Expand on that, creating the API documentation wiki topics (for programmers) for the underlying part of the API that enables the functionality
- Write the API
- Write the user interface according to the wiki topic in #1
The great part about this is that it forces me to think through every aspect of the code before it's written. I know what the end goal is and how everything should work in the end, and I'll often find myself revising the documentation, especially on the API side, four or five times before coding even starts. So far it's working out just great, this project is probably the cleanest one I've ever worked on (and it's also the most complex).
This is pretty similar to documentation driven design, but I love the way wikis work. They're so easy to use and edit that they allow me to use a stream of conciousness style of writing and documentation. I can pour stuff into a wiki just about as fast as I can think it, and then just take another pass (or two or three) to revisit the thoughts afterward to make sure they make sense and clean them up and edit them a bit.
As a nice bonus, this is hands-down the most well-documented project I've ever worked on.



