The cost of iteration — the cost of changing, tweaking, improving a process and then running it again and again — significantly impacts the way work is performed. Reconfiguring a car assembly line can involve buying and installing new equipment, which can be very expensive. Car manufacturers usually do lots of planning before they commit to a configuration. They don’t want to stop production and reconfigure very often. They try to get it right the first time.
Agile methods for software development are designed so they can be changed cheaply and quickly. They’re fundamentally empirical and can be continuously improved based on feedback about how the work is working.
We need to control the development of software [and the delivery of value] by making many small adjustments, not by making a few large adjustments, kind of like driving a car. This means that we will need the feedback to know when we are a little off, we will need many opportunities to make corrections, and we will have to be able to make those corrections at a reasonable cost.
Software developers generate new versions of software as often as needed. Techniques such as Test-Driven Development, Continuous Integration and Continuous Delivery, and open-source technologies that allow new versions to be rebuilt easily, keep the cost of iteration low. When the cost of iteration can be kept low, we don’t need to worry so much about getting it right first time. Instead, we can try things, different options, test them out with users, learn from them, then reconfigure, refine, and go again. Because it doesn’t cost much to iterate, the value of actually doing something is greater than the value of thinking about how to do the something. Doing something can test assumptions and reveal facts. Too much talk without action perpetuates opinion and entrenches assumptions. Cheap and rapid iteration allows us to substitute experience for planning. Rather than getting it right the first time, we can make it run, make it right, and make it great before the big marketing push.
It’s not iteration if you only do it once—Jeff Patton
By iterating and testing as we go, we massively increase the likelihood of delivering the right thing for less investment; we’re reducing the risk of delivering the wrong thing and betting the farm on it.
The ability to run experiments cheaply and quickly is an important benefit when the cost of iteration is low. Car makers use simulation technologies to run virtual crash-testing experiments to determine the safety implications of many car body structures, more than they could afford to test with actual cars. There’s science driving low cost iteration but it intrinsically involves artistic creation. For example, before you can crash test virtual cars, you must first create virtual cars.
Cheap and rapid iteration lets you test cars more cheaply, but it also lets you create them more cheaply, and in many more forms. The creation of things to test — in scientific terms, the generation of hypotheses — is fundamentally a creative act. In many business situations, the hypothesis, problem, or opportunity is not well-defined, nor does it present itself tidily formed; it’s definition must therefore be created. Even when a problem or opportunity appears well-defined, often you can benefit from conceiving it in a new form — reframing it to take a different perspective, looking at it through a different lens. The form you conceive for it — the idea of it you have — will determine how you solve it, and how well you solve it.
Cheap and rapid experimentation lets you try new and different things. Cheap and rapid iteration helps you deliver the right thing.