8 May 2007

Long-lived systems: call to action

By Andrew Clifford

You can extend the life of your IT systems indefinitely, but you do have to DO SOMETHING about it.

Change your mindset. If you put in a system and think it will only last a few years, then it will. But if you expect your systems to last for ever, and manage that way, then they will.

Be clear about system boundaries. If you see IT as a sea of "stuff" - servers, networks, databases, components - you can never get a clear view that lets you manage effectively. Cut up your IT into clearly defined systems. Make sure each system has effective business and technical owners who can make clear decisions to keep the system going, and who stop the system being forgotten.

Minimise the impact of change by keeping each system separate, or decoupled, from all the rest. This makes it easy to keep each system up-to-date, and not get forced into quick fixes because of changes in other systems.

Pick technologies that will last. Pick the major vendors and big open source projects, and look at the track record for smooth upgrades. The most boring, long-established technologies are likely to be the longest lived. Today's hot topics could be gone tomorrow.

Be paranoid when you design systems. Assume everything in and around your system will change. Do not try to cheat the inevitable by designing systems to cope with any change that you can imagine, because a lot of change is simply unimaginable. Put your time into effective decoupling within and between systems, well-defined interfaces based on established standards, and simple conventional coding. You want a system that is easy to change, not one that could cope with change if only somebody could work out how.

Do not avoid making changes when you should. Do a complete job. Sloppy coding, out-of-date documentation and incomplete test packs are a terminal illness. Justify change by the massive cost of the alternative: rewriting the whole system.

Watch your back. Monitor your systems to make sure none are falling behind, so that you know what you need to do to keep your systems up-to-date. Put in a framework like system governance so that you know what is going on, and what needs to change.

None of this is hard. It is all just common sense. It saves much more money than it costs.

So why don't we do this? When we were young, we wanted to grow up, and be an adult as soon as we could. In the same way, the history of IT has been a dash for growth, to exploit the possibilities of IT as soon as possible. Now that we are grown up, our priorities change. We want to keep fit and healthy, and live a long and fruitful life. We need to do the same with our IT. We need to realise the dash for growth is over. We need to look after what we have now. We need to grow up.