Iterative Design
Iterative design basically means constantly making small improvements and additions to an application. Instead of building everything up front, build only what’s absolutely necessary for the application to do its job, and then reevaluate to see what’s most important to do next, and do that. (Lather, rinse, repeat.)
Too often, application designers and developers let features that don’t really need to be there squeak their way into a product. Users suffer as a result, because features that are not important, or are rarely used, get in the way of features that are really important—thus making the tool more difficult to use. Stick with what’s most important at any given step in the process:
- If your application is meant to perform three major tasks, build those three tasks and release the application.
- Figure out what you can do to improve those features. When feedback starts coming in from users, determine which issues end up at the top of the list and focus on them, whether they’re bug fixes or new additions.
- Get something done to address those new issues and release again.
Unlike with physical objects such as a space shuttle, where you have only one shot to get it right, we work on the Web, and the Web is very amenable to change. As long as your development process allows for iteration, you can release enhancements to a product on a weekly or even daily basis.
Your process should encourage suggestions from team members about ways to improve the product. Toyota practices this principle as part of its "lean manufacturing" process, and it’s a large part of the reason that Toyota consistently makes high-quality vehicles and can charge more for them.
Ultimately, the goal is simply to make constant incremental changes to the product, test to see whether those changes are positive and should be kept, and steadily find your way to a great application that works well for its users.