In the shower this morning I had a minor panic attack. It's one thing to say you'll do something. But I'm committed now. How do I start?
A warning upfront: this is going to be really heavy on the toolset speak. If you want witty observations on software try back later. If you're here for heartwarming cruft I think you're in the wrong place anyway. Otherwise check out Kim Kardashian's website (a site I can only conclude is some wry post-modern art experiment commenting on what happens when commerace trumps taste; I'm not even sure Kim Kardashian actually exists).
Still here? Good.
After the usual setup (hosts file, apache vhost, an eclipse project) I began with the data model. I'll be using MySQL because it's familiar, I've already got the supporting tools setup, and I feel each project I use it on brings me this much closer to being Larry Ellison's pen pal.
Right now it is hard not throwing in additional features. I'm caught up in the enthusiasm of the project. The only thing keeping me from adding the fantasy football kitchen sink I've always dreamed of, however, is creating a minimally viable product.
"Minimally viable product" is a strategy for getting things to market as soon as possible, rather than when they're "done". It attempts to minimize the time real users can give you feedback to help refine your idea. It also is fundamentally aligned with iterative development. This is where one launches early and launches often. I've seen way too many engineers who fall in love with solving a problem that real users never had. When they launch their grandiose overwrought solution (often after much time, sweat, and beers) they can't understand why no one is buying.
In planning for the hackathon it was these approaches which pointed me toward creating a mobile website rather than a native app (an application that you'd download from the iTunes or Google Play stores). There is so much administrative overhead when taking the app route that it was the antithesis of my tiny opportunity window. And gatekeepers (of any sort) blow.
With a data model in place I used the Illudium PU36 code generator to create my base CFML objects from the data; this included the initial bean, dao, gateway, and service objects. Then I turned to Balsamiq for mockups. Even in this compressed time frame wireframing is important. It immediately forces questions to be asked that I hadn't considered before: what does the profile page look like? Do people have to be logged in to vote? Where do they go to see past votes?
Knowing that I'll be using jQuery mobile I headed over to its theme roller page. Thankfully it supports importing color palettes from Adobe's Kuler. I wanted something that said "leather football, weak fall sunshine, and green turf". Remarkably, from those rough search terms, I find one called "corn field" and begin assign colors to elements. When the them was close to ready I then exported it to Codiqua, a tool for laying out jQuery mobile pages.
At the end of day 1 I have a good idea of my color palette, navigational structure, and backend structure to persist the data that will power it. Now to start getting said data to begin flowing.