Lately, I’ve been working on a super secret project. (details to come later…yeah, I hate that line too)
One of the things that I’ve been struggling with is how to plan out a web app.
Don’t write a functional specifications document
These blueprint docs usually wind up having almost nothing to do with the finished product. Here’s why:
- Functional specs are fantasies
- Functional specs are about appeasement
- Functional specs only lead to an illusion of agreement
- Functional specs force you to make the most important decisions when you have the least information
- Functional specs lead to feature overload
- Functional specs don’t let you evolve, change,and reassess
When you’re anxious to get a project off the ground, this is a great method. I made huge headway at the beginning of the project. I impressed myself, even. However, I eventually had to take a step back. There were a few problems:
- I kept changing my code because I had not made all the decisions up front on how something was going to work.
- I started to get this fear in the pit of my stomach that my code was not efficient. I was duplicating code because I hadn’t thought through it on the front end.
- I hit a wall. There wasn’t a clear next action step. (thanks GTD)
Back in September, Ryan (37 Signals employee) wrote a blog post, A Shorthand for Designing UI Flows. I’ve tried using this to press on, but it’s still hard. My charts look overwhelming.
What is the best practice? Thoughts? Suggestions? Resources? Musical Anecdotes?