I find my projects end up going through several phases and rarely get to a polished finished product. This is somewhat related to the Capability Maturity Model, but obviously not as
well tediously thought out.
- Will it work: this is usually where I work out what the sticking point in the project is likely to be (e.g. can I create a google mymap with some API and then add things to it, or can I do http redirects from Google AppEngine and is it worth me learning it). From there I get a super bare bones prototype that sometimes even works
- Adding functionality: I work out the very bare limit of what I need to get this thing working and useable. If I'm writing some simple functions I might end up unit testing them, but likely not. In the end this thing will be usable, I'll have solved the problem I set out to solve but it might not be pretty.
- Using it: I'll use it a lot and find bugs and fix them.
- Tidying it up: I'll take a look at the code and realize how ugly it is and how it could be cleaned up. If it has a UI I might even try and make that not look butt ugly (although I'm really awful at that). I might add a few more unit tests and fix all the bugs.
- Write a blog post: I'll write a blog post here about what I wrote and why it's useful
- Documentation: Write up some real end user (and developer) documentation on how it works and how to use it. This almost never happens.
Somewhere in there I'll have a list of features I want to implement and finally I might even get to them if something else doesn't take my interest beforehand. Right now I'm working on a short url/bookmarking/internet keyword type thing and I've been using it for months, I like it a lot, I'm really proud of it but I'm only at stage 3 and I want to add a few more features before I write it up and post about it here. So here I am writing this post about nothing rather than working on it!