I’ve had a personal project on my mind for some time. I’ve been talking about it with my close friends who would be potential users. I’ve thought about it a lot. I know a ton of features that I want to put in. I’ve played with putting it on Google’s App Engine, and even started a small Eclipse project using the App Engine and GWT plugin. I read a book about GWT at safaribooksonline and started playing with it in my project and got some simple interaction working. Everything seemed to be going great.
Then, I stalled.
I’ve come up with several reasons why I’m stalled. I’m too busy with my extra curricular activities after work to sit down and work on the app. I’m not sure I want to use Google’s Big Table as my data store. App Engine is still in beta with Java support, and while I’ve been invited to participate, I’ve also been following the message boards and there’s still some issues. Of course, that’s to be expected in beta software. I’m also not sure I want to use GWT as the interface.
In the end, I realize these are not reasons. These are excuses. What I’m really missing is direction. I sat down to write one small portion of the website, focusing on functionality, and I just couldn’t do it. Why is that? I finally realized what the problem is, while I have all of these grand ideas for functionality, I don’t really have any idea of exactly what I’m going to do. Designing with Eclipse open on a .java file isn’t the way to go.
I finally decided that I need to write a specification for my application. I didn’t think I needed such a thing since I’m the only person working on the project, but I think I was wrong. Now, after being stalled for 3 months, I’m excited about my project again. I’ve only got a VERY rough and incomplete outline of the specification in place, but already it has helped me to have a much clearer vision of what it’s going to be and how the user will interact with it. I find that I’m trying to make time to work on it rather than trying to find excuses not to work on it.
I’ve read specifications at work, but never really written one. I had a bit of a hard time figuring out where to start. Fortunately for me, there are plenty of well educated people out there that have spent their own time to educate the masses. One particular web page I found interesting was http://www.mojofat.com/tutorial/index.html which has a great tutorial on writing a specification.
For my small, single developer web app it may be a little bit of overkill, but it has given me a lot of questions to consider while thinking about my app, especially the the stuff in the “Define the Application” step.
Starting to code an application without a specification is like starting a cross country trip without a map or itinerary. Yeah, you can probably do it, but chances are you’ll take a lot of side tracks, detours, and wrong turns, and it will probably take a lot more effort to get all the way through it, if you make it at all before you run out of gas. The difference is, in a cross country trip, the detours can be fun and interesting, whereas in a development project the detours are mostly just annoying and costly.