Reversibility and Low Impact Change are the non-functional requirements for Agile Technology Change.
I have attended and chaired many Change Review Boards for large organisations for the introduction of new systems and changing exsiting systems. I also overseen many development programmes, taken difficult decisions and helped stakeholders make descisions. The factors I’ve seen that affect the speed of the change is the “reversability” and “impact” of the change.
The reversability of the change is the ease (time, risk and cost) with which a change can be reversed (along with any side effects). The impact of the change is how will it affect the organisation, the customers, the shareholders, the public and the environment. This impact could be financial, reputational, legal and is some casues it can real, perceived or imagined.
For the most part software code is the easiest to change back (or rollback), data is harder and infrastructure very hard. Front end software is generally easier than back end software to roll back because of the dependancies involved.
Changes which cause permenant changes to databases how ever require extensive testing to ensure the change will perform as expected in addition to backups to restore the original state which may incur costs and lost time. Equally the most damaging changes related to those which affect upstream and downstream systems which cannot be restored to a previous state and so parallel running is advisable which is the most expensive of the solutions.
When decided how to authorise change I used the reversable/impact matrix to help decide the ease with which the change can be acheived. The easily reversible low impact change is easily dispatched if the asessment looks reasonable. The high impact easily reversible change requires more planning and techniques (Blue Green Deployment for one) in the implementation to make sure it creeps out rather than floods out. The low impact hard to reverse change needs robust challenge over the level of impact the change will actually incurr. The high impact and hard to reverse changed needs to most preparation in terms of regression testing, swing environments or even parallel running.
Therefore low impact and highly reversible change is the perfect combination for agile delivery which is sometimes termed ‘fail fast’ (which I usually change to ‘fail fast and safely’ to reassure stakeholders).
Cloud technologies, containerisation, orchestration and schema-less databases are so popular amongst architectd and devleopers as they create environments that are easy to create, easy to test, easy to change and all with the mimimum of impact.