Thursday, 22 November 2012

Cost of Change

-Mr.Jagadish Shri

Mr. Jagadish manages our program in Mysore. He has over 20 years of experience in the IT sector.

'Cost of Change' is an important aspect of any project (software or otherwise). This comes up both in Agile and Lean.

An Example
To take a non-software example let us take the case where one is constructing a house. One can defer the choice of tiles for the bathroom till the end when the plastering of the walls is done. However one will have to decide where the windows are when the walls are being constructed. If the windows are large one can always provide curtains to limit the sunlight coming in which is a user configurable option with minimal cost of change. On the other hand if the windows are too small (not enough light) it may be difficult or costly to change later on.
High Cost of Change
A high cost of change becomes a hurdle to change, once certain decisions are made. Especially so in Agile since development keeps happening in short cycles. If one keeps reworking on what was delivered in the previous cycles then the cost of change can become prohibitive and the software will never get ready. So, one of the mantras is to delay decisions as far as possible. This helps us to explore the available options to the fullest until the final crucial moment when we can no longer proceed without making the choice.

Low Cost of Change
Another driver for project would be to keep the cost of change as low as possible to take care of changes which will inevitably come later during development or deployment.

The Challenge
The challenge in a software project is to identify these elements which are likely to change and then see how many of these decisions can be kept open for as long as possible. The ideal thing would be to leave as many of these options in the hands of the user so that they can change them during their usage. This could vary from user to user, plus evolve as they get to know the product better.

The other alternative is to involve the users early in the development (as in Agile) so that they know what is coming and can help make the decisions for themselves rather than somebody else making the decisions on their behalf.