And we’ll never get our product right the next time either.
When we start the development of a product, we have an idea of its features based on our conversations with customers and based on our understanding of the product’s goals for the company. However, customers and companies change over time, so do their goals. Our product should follow those changes.
And there’s more, as Marty Cagan, from SVPG, frequently mentions in his articles, “great products result when you combine a real need or problem with something that is just now possible“.
That’s why iterations and incremental development from agile methodologies are so useful. Companies change. Customers change. Technology changes. Why should we commit to a detailed plan for the long run if we cannot predict all those changes?
Jeff Patton in his article “Don’t know what I want, but I know how to get it” shows two pictures that explain the difference between building incrementally:
and building through iterations:
We should use both incremental development and iterations. Each has its own benefit:
Jeff Patton says in his article that “using a strategy of only incrementing means you more or less have to get it right the first time” and since companies, customers and technology constantly change, we know we won’t get it right the first time and we won’t get it right next time either.
So, in order to keep up with all those changes, we should think about using agile methodologies and their increments and iterations. We won’t get our product right, but we will get much closer if we develop it one small step at a time and review constantly to check if we are going to the right direction.