If you were to see the first version of Facebook today, you probably wouldn’t like it at all. You most likely wouldn’t even use the 21st version of the site. It takes time for a web product to take shape and flourish. The teams behind successful web products iterate constantly, implementing new ideas and customer feedback with every new release.
Instead of banking on getting everything right on the first try, the iterative process lets you continue making informed decisions as you go along. Plus, you’ll get an active app up and running faster since you’re not trying to achieve perfection right out the gate. The result is real feedback and real guidance on subjects that really require your attention. You don’t need to aim for perfection on the first try if you know that you have a trained development team who can bring the product to perfection later. Fixing bugs and polishing is much easier than defining the product that customers like to use. Knowing that you’re going to revisit issues is a great motivator to experiment with new ideas.
For example, if you are building a new site the scope of the first versions could look like this:
- V1 – User comes to the site, registers, edits profile and logs in – RELEASE IT
- V2 – Add tweets and tweet board
- V3 – User can follow and be followed
- V4 – V1001 – Run the business
Iterative development requires project managers to consider each iteration as a separate project and to later be managed in the context of the final deliverable. Iterative development is, at its heart, a team-based approach to problem solving and solution development. It requires all parties involved — including the development team, the customer team, and the management team — to adopt collaborative techniques.
From the perspective of the development team, the adoption of iterative development is empowering, enabling team members to actively and aggressively attack project risks and challenges in whatever they judge to be the most appropriate manner. Managing iterations by setting clear objectives and objectively measuring results (and not dictating activities) ensures that they are free to find the best way to deliver results.
From a management team perspective, each project is decomposed into a series of smaller projects, called iterations, each of which builds on the results of the previous one to incrementally achieve overall project goals. This segmentation of the project introduces regular, measurable milestones that keep the project on track while empowering the development team to create innovative and effective solutions, ultimately maximizing the project’s probability of success.
From a customer perspective, the frequent release cycles, allows those who will ultimately use the new software to take an active role in the project and be involved in the development process. The ability to submit a feature request and see this feature implemented in the next release gives customer a feeling that their voice is listened and a pride that they have taken an active role in shaping this product. They will never stop using your product.
BeKitzur recommends to make bi-weekly iterations with product releases to the production environment from the beginning of the project. Even if you don’t plan to show those releases to your audience, it will help you test and streamline the entire product development and release process, promote product knowledge, and build a real partnership between business, product, and development teams.