So, as previously noted, I’m working on a little side project for myself and as I get into it and through it, I figured I would blog about steps that I have taken and maybe get some discussion going.
To begin with, I had an idea. Â It was a very general sort of thing which I then nailed down to a few specifics. Â In this case, what I am building is a web based tool, so I nailed it down to being web based, likely written in PHP, and with a database for a back end, likely to be MySQL. Â With the initial idea fairly solid, the next phase is the brainstorming…
How I usually approach this is to get out a blank piece of paper and ask “Given no limits at all, what features can this thing have?”  And I start filling out the page with lots of craziness.  After I have a nice sizable chunk going, I start to go through the list and try to group them.  The first group is the “1.0” version, these are the features that are absolutely required in order for the product to be worthwhile, the foundation, the core.  Of course, in my world, version 1.0 is almost never the release product.  1.0 is the version you test the waters with to see if people actually want what you have.  Once you’ve locked in those base features, you take all the rest of your ideas and start looking for ways to group them together.  In my opinion, you never want a release of a product to be scatter shot, adding tiny features all over.  It is better if your release overhauls one section and really fleshed out one piece with new ideas and fixes, at least until tiny scattered fixes are all that is left.
Once I’ve got most, if not all, of my original brainstorm ideas grouped together, its time to actually make the core a reality. Â Brainstorming is part of the iterative design process. Â When the core is done, we’ll do another round of brainstorming before deciding what elements will make the next release.
Have any things you do in your brainstorming design phase of a project? Â Feel free to share…