Facebook Cookbook - Jay Goldman [42]
Waterfall model
Spiral model
Model driven development
User experience
Top-down and bottom-up design
Chaos model
Evolutionary prototyping
Prototyping
ICONIX process (UML-based object modeling with use cases)
Unified process
V-model
Extreme programming
Software development rhythms
Specification and description language
Incremental funding methodology
Verification and validation (software)
Most of these are overkill for your purposes, but you should take a few days out of your busy schedule and read up on them anyway. If you really are new to this and are coming at the question of methodology as pure as the driven snow, you should take the time to evaluate the strengths and weaknesses of the different armies before you dive into the battle.
In the end, you’ll probably find that you need a really lightweight approach that adapts quickly to the changing demands of a platform such as Facebook. You might find that 37signals’ Getting Real book has a lot of merit when it comes to Facebook app development—you can find out more about it, as well as pay your $19 to download the PDF, at http://gettingreal.37signals.com/.
The most important thing you can leave this recipe with is this: don’t get stuck trying to pick a methodology at the expense of ever getting started. All of them are just tools in your toolbox, and although it’s always easier to do a job with the right tool, you can still get it done with the wrong one. My own process is described next in the Discussion, but feel free to use anything you’d like, just as long as you get out there and use it.
Discussion
I agree with a lot of what 37signals says in their book, although I tend to prefer a more structured design process than they advocate. I’ve been on enough teams and built enough software to know that there is some real truth to the axiom that an hour of design saves 10 hours of programming. Here’s the process I follow when designing a new application.
Know thy user
Start off by understanding who you’re building for. Is your app targeted at males aged 17–24? Are you building for stay-at-home moms and dads in their 30s? Do you expect to attract predominantly French-speaking new immigrants who are trying to get established? The answer to this question is really the foundation of everything that comes after, so don’t gloss over it and try to skip ahead. If you’re serious about getting it right, consider using Alan Cooper’s personas methodology to develop some personas for your key demographics. For more information, see his book The Inmates Are Running the Asylum (http://www.cooper.com/insights/books/#inmates) or Wikipedia (http://en.wikipedia.org/wiki/Personas).
Gooooooooooooaaaaaaaaaal!
Now that you know who your users are and have some personas built out to represent their opinions, what are they going to do in your app? Start with high-level goals and work your way down into lower-level use cases and bottom-level tasks. A quick breakdown for the Facebook Photos app might look like this:
Goal: See friends’ latest photos
Use case: Browse through the latest photos from friends
Task: Go to the Photos app main page and see the list of newly uploaded photos, filtered to display only the current user’s friends
Goal: Share photos with friends
Use case: Create a new album and upload photos
Task: Click on the “Create new album” button, then enter a name and description
Task: Use the Java applet Photo Uploader to add photos to their new album
Use case: Send photos to friends off-Facebook
Task: Copy the URL for a given photo or album from that photo or album’s page and email to friends
Always remember the age-old adage KISS: Keep It Simple, Stupid. If your app is successful and attracts