A software developer friend of mine has good advice, which he repeats solemnly: “You have to keep up to date aggressively .” I agree.
He is specifically talking about software libraries and platforms. If you don’t keep up to date with minor releases that come out then the changes you need to make for the next major release will most likely be too much to bear when you need to make use of it. I’ve found myself in far too many environments where the failure to keep up to date has meant the software has become tied to hardware that is no longer available—the existing hardware has to be looked after very, very carefully, or else replacements sourced from eBay. The failure to update the software components has meant the total system is reliant on hardware that the software vendor no longer supports. The result? The business is now at risk.
The word “aggressive” is a good one, because updating the software components, ensuring the whole still works well, and rereleasing, is an unwelcome distraction from the more immediately valuable work of improving the core product. But you have to steel yourself and get on with it.
When I last spoke to my friend about this it was in regard to migrating a Java Swing application to JavaFX. The problem is that JavaFX looks like the future of Swing, but Swing is very unlikely to be actually retired; he may be taking on unnecessary extra work, but JavaFX is more likely to enable him to support new requirements. Meanwhile plenty of people are working with browsers as their application front-end. The problem there is that plenty of Javascript libraries get updated very often, as do the multitude of browsers themselves. And then, of course, there’s the contingent of users who don’t update their browsers—or perhaps don’t get the chance because their corporate IT Dept is not keeping as aggressively up to date as others might like.
If you don’t keep up to date enough your near-term workload is reduced, but later it’s suddenly too great at the wrong time. If you keep up to date too often you’re giving yourself unnecessary extra work. If you rely on your users’ environment (such as their choice of web browser) then one part of the system is taken care of, but the update of that environment is out of your control. In the end it’s all about keeping things within your bounds of control and managability.