I had an interesting conversation last week about ‘Upgrade Inertia’ - basically the level of reluctance shown by developers to upgrade their systems to a new version of their development tools or programming framework. For example, upgrading from VS2003 to VS2005 or from Java 1.2 to Java 5.0.
Usually, there are two spikes in a chart of migration over time. The first occurs as soon as a product appears and developers start creating new projects with it. The second tends to occur some time after the first service pack has been released for it at which point IT managers of the bigger firms assume that the majority of bugs have now been found in the product and will sanction the move across to the new platform for existing applications and services. In between these spikes are the migrations caused by necessity or by circumstances and after the service pack spike are those that are delayed by red tape and cost of transition. Other minor spikes occur following successing service packs and point releases. It’s not a sacrosanct idea, but it holds true more often than not.
What else influences the inertia though? If you carry the analogy through, does the momentum of beta-testing a product increase or decrease the willingness (not readiness) to make the switch? Depends how much you’ve worked with it. Like all things, the more you work with a product, the more you know what might go wrong and the more you realise the advantages of using it as well.
The age old problem of ‘It’s not my code’ also rears its ugly head. If it’s not my code and it runs fine, why do I need to touch it? Depends on the current state of the code. Size, structure, functionality, areas and namespaces you’ve never used before.
Upgrade inertia is a measure of confidence : confidence in your source control app to control code changes you might not have foreseen, confidence in the new product to shine once it’s in use and confidence in your own / your team’s coding abilities and common sense to not panic at that first compile when the many warnings appear that say your code is obsolete and should be rewritten.