Repeatable Results vs. Repeatable Processes
In his recent Agile Newsletter, using the results of the latest Dr. Dobb's survey, Scott Ambler showed his readers that most developers, project managers and IT managers prefer repeatable results over repeatable processes. Not surprisingly, according to his survey results, people in the agile community lean more towards repeatable results than those working in traditional organizations. Most respondents of Scott's survey also reported that their personal preference for repeatable results is bigger than that of their organization. Everything considered, it seems that there is a global shift towards a growing importance of repeatable results vs. repeatable processes.
But what are repeatable results?
Is the human brain a repeatable result of biological evolution? Is Google a repeatable result of our global economic system? Is the Pokémon hype a repeatable result of our international social system? The answer is 'no' in every case. Is Safari for Windows a repeatable result? I certainly hope not! (And it appears I'm not the only one.)
No Repeatable Results
Software projects are complex adaptive systems, just like species, organizations and societies. Richard Dawkins and Stephen Jay Gould, both famous evolutionary biologists, have both argued that if you were to "replay" evolution, the brain (and human beings for that matter) would probably not appear again. Our existence on this planet was made possible thanks to many happy (or unhappy) coincidences, like a meteor killing all the dinosaurs, and butterflies flapping their wings at the correct times. Repeating evolution would possibly yield some other intelligent form of life, but it wouldn't be human. It probably wouldn't even look human! (And there definately would not be a Scott Ambler nor a Jurgen Appelo to bother you about repeatability of results.)
Likewise, I don't believe that replaying the birth and growth of the Internet would give us another Google. Sure, there would be search engines, but the playing field would be very different. And I'm afraid that my position as CIO of our organization is also not a repeatable result. Five years ago I met our (former) CEO at my cousin's birthday party. I don't even like family birthday parties! So there's little chance of that happening again…
Projects Are Sensitive to Initial Conditions
Complex systems are very sensitive to initial conditions. It means that, no matter how often you replay the same project, even when all the processes are the same, the outcome will be different every time. If you were to replay any successful software project, you would never get the same product. Just a tiny variation in the constraints will give you very different results. Replacing just one person in a self-organizing team would yield very different ideas and solutions. Even having the coffee machine replaced with another brand can have a huge impact on your results. (I know it happened with me.)
Nevertheless, even though the results of your software projects are not repeatable, project success is repeatable! No matter how many times you replay evolution, the result will always be an ecosystem of successful species. No matter how often we restart the big bang of the Internet, there will be successful companies making money from advertising. Principles like self-organization and emergence, which are essential for evolution, capitalism and agile software development, mean that success is virtually guaranteed. Agile processes and principles will give you successful software projects. But nobody knows what the results will look like.
Agile software development is not about repeatable results. It is about repeatable success.
Of course, I am sure that this is what most people mean when they talk about repeatable results. But it's my opinion that this slightly adjusted view may help improve our communications. In fact, the Butterfly Effect tells us that the effect of this little contribution could be very well be tremendous. Let's wait and see…!