In any project, you should complete your your work in stages. This lets you show customers (those who pay) and users (who might not pay) your work in progress, to ensure you satisfy their initial expectations and adapt to new ones.
You will likely stage your project incrementally or iteratively. Most people don’t know the difference, but if they stage a project incrementally, it is easy to waste a lot of time. Iterative development is usually better.
I wrote this, hoping to help.
Incremental development completes system components in a sequence, finishing each component completely before moving on to the next. Incremental development makes it hard to satisfy customer priorities early, because many components are typically required for a usable system. You have to finish most of the development before a customer can try something. The advantage is that you never redo anything; it seems great until you try it.
For example, suppose a patron commissions you to paint Ms. Lisa. Since you know exactly what your patron wants, you can use incremental development. You will paint the top 5cm of your work, Mona Lisa, in the first increment, which takes a week, the next 5cm in the second increment, etc. until you finally finish the Mona Lisa. After 10 increments, you might be able to try it out on your patron. “Is this what you want?” You really hope that’s what your patron wants, because it took 10 weeks. But it turns out your patron is Andy Warhol, and Mona Lisa is not what Andy wants.
Iterative development first completes a barely viable portion of each essential component, enough that the components can connect with each other, and tests the system with customers. In the first iteration, the skeletal structure of the system emerges. (Some people call this first try at a skeletal structure a “tracer bullet“, because it shows the path all the way through the system.) Each subsequent iteration adds greater detail to every essential component. Iterative development is better if (you can admit) you aren’t sure what’s important, because the whole system emerges and can be shown to customers for their feedback.For example, in the case of Ms. Lisa, drawing a pencil sketch on paper with a drawn frame in Iteration 1 might be a good approach. You show it to your patron and say “Is this what you want?” Your patron, Andy Warhol, says, “Well that mountain there, it messes up the pastoral nature of what I’m looking for. But could you add some vibrant colors?”
Figure 2. Ms. Lisa, Iteration 1
In Iteration 2 you erase the mountain, put some nice rolling grass, sketch a wan smile, and put in some bold colors with pastels. You bring it to your patron, with a frame sample. Andy says, “I love this sketch! Here’s money for a copy, I’ll hang it right away. I’ll call to let you know what I like and don’t about this sketch, as I enjoy it in my home.” He ponders it for a moment, “I’d like to hang the frame sample next to it, and do you mind if I write ‘R. Mutt 1917‘ on it?” You don’t mind at all, of course.
So with iterative development, the patron gets a feel for your progress, obtains some benefit before the whole project is completed, and provides real-world feedback to you.
Nine iterations later, you finish the Marilyn Lisa, in fluorescent colors, a bizarre cross between Marilyn Manson and Mona Lisa in a pastoral setting. It is exactly what this patron wanted. Andy gives you $300,000, a tidy profit, and provides your first 15 minutes of fame. Your work hangs in Andy’s foyer. Andy introduces you to Shepard Fairey, Shepard teaches you how to make serigraphs, and you make millions.
Good iterative development requires feedback from your patron, namely the user, customer or Product Owner. Directing development team priorities without early customer feedback is a recipe for wasted effort. Iterative development is one of the best ways to gain thoughtful customer feedback early, and create something they will buy.
- Jeff Patton provided the idea about the incremental Mona Lisa.
- Leonardo di Vinci painted the Mona Lisa.
- Dan Greening, the famous artist, sketched the first iteration of the Marilyn Lisa.