Building Change Into Your Product
Making your application deliver value needs constant adaptation, which in turn requires it to be built for change
I do not know how you feel about the Theory of Evolution, but to me it sounds quite reasonable. It states that differences in morphology, physiology and behaviour can cause certain individuals of species to survive and reproduce better than their peers under given environmental conditions.
These individuals are, on average, able to generate more offspring than the others and pass on their beneficial traits to the next generation. The circle of life repeats itself again and again, leading to each succeeding generation being better adapted to their environment. If the environmental conditions change, other variations may prove to be superior and will prevail in the next bout of evolution.
Evolution is An Agile Methodology
Sounds familiar? If you have came across agile methodologies, then I am sure it does. Evolution is essentially nature's agile methodology that tries to solve the complex problem of making life forms last in an ever-changing environment. With each new generation, nature makes a guess about which traits of individuals may be fit to survive and reproduce. The ones that eventually happen to produce offspring are apparently the fittest (inspection) and, in turn, enable a new generation to see the light of day. This new generation will, on average, inherit the traits that made their parents successfully reproduce. Nature iterates.
For now more than 3 billion years, evolution has produced fairly good results - even under abrupt shifts of environmental conditions. As long as life forms will exist and recreate, this process will continue and mankind is far from being its crowning achievement. After all, we still should have more than 4 billion years to go ....
Evolution's Approach to Change
How has nature been so successful in using evolution to sustain its product, i.e. all life forms? By building the very notion of change into the basic building blocks of life, the DNA. Through genetic recombination, new traits can appear in offspring without the need for a wholly new species to emerge. Change is thereby brought incrementally to an organism, making it "follow" variations in the environment over time.
Evolution can even handle highly disruptive events. When a strong, potentially cataclysmic shift in environmental conditions occurs, nature's diversity lets certain species thrive under the new conditions, and others perish. A good example is the extinction of dinosaurs at the end of the Cretaceous: the impact of a "global killer" asteroid and the ensuing impact winter contributed to the rise of mammals and therefore, ultimately, to us roaming around the planet today.
Building Change Into Your Product
The situation is not that much different when looking at the environment software products need to compete in: customer's and stakeholder's demands can greatly vary and change over time, usage patterns evolve, operational processes are continuously improved and new technologies cause fast and abrupt disruption. It is obvious that the software products that follow these changing environmental conditions the fastest are the ones that will deliver the most value to their users and that will therefore prevail on the market.
But how can we make our product fit for evolution? There are a few basic principles that can help:
Build a modular product: One of evolution's most interesting outcomes is the high degree of specialisation that certain species have as with regard to specific functions or habitats. These species can thrive under conditions that are unfavourable or even harmful to others. The key takeway here is that you should design your product like an ecosystem of specialised species: build your product in modules that are optimised for one of the specific use cases that your product needs to fulfill. If you see that a module's environment has changed, adapt it. If the module is not anymore suited to the use case, replace it with a new optimised model or even a "fitter" COTS alternative.
Develop each module iteratively: I am not going to go into detail here - you already know what I mean.
Make the environment visible: Evolution is impartial. It does not have a preference for any species, as long as there are still life forms around so that evolution can continue. Your team's aspirations are, to the contrary, to make your own product thrive. This requires your team to make educated guesses about the way in which the environment will change and the resulting effects on your product. Therefore, you should make each interaction with your product measurable, be it, for instance, in terms of time spent, effectiveness in its main use cases, or user satisfaction with certain features. You need to design your product's modules to gather that data and then store it, so that you can create actionable insights.
Flexibility is key: The most successful species in earth's history were able to quickly adapt to a wide range of environmental conditions. Humans, for example, have managed to populate each continent on the planet, across a wide range of climate zones and types of habitats. When it comes to your product and its modules, you can make sure that it can quickly be adapted to changes in usage patterns and/or processes by making UIs and operational parameters as configurable as possible. When it comes to replacing interfaces to other modules, a high degree of flexibility as with regard to the employed technologies is also very helpful.
How Do You Become Entangled?
Nature is a great teacher. It shows us that iterative evolution based on empirical feedback is a very successful approach - evolution is nature's own agile methodology. The success of this methodology is, however, dependent on a few key characteristics of organisms, one of them being the fact that their reproduction introduces variation.
Likewise, for your product's success in terms of delivering unabated value over time, it does not suffice to just use agile methodologies for development and operation. From the outset, your product needs to be built such that it can quickly be adapted to a change in enviromental conditions. This adaptation requires your team to understand and anticipate those changes.
 Photograph of tufted deer. By Heush - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=6035949