I am a Java developer since 2001.
Over the years I came to realize that most teams / companies are totally ruled by fear. Fear to touch the code, fear to touch the production system, fear to touch the test system, fear to touch anything at all. If you touch and break something, you’ll be responsible – and blamed – for any damage.
If you touch and fix or improve something, the best you could expect is a minor “thanks” – if any at all. So after a while, when people got their fingers burned often enough, they will try to avoid touching the system as good as they can – justified by the well known sentence – “never touch a running system”.
The problem with software however, is that it behaves completely different to any other (hardware) system or machine. The lesser you touch it, the faster it will decay. Not only because there will always be updates and / or newer, better systems available, also because of security leaks found, and last but not least because the lesser a system is touched, the more will the knowledge of how to safely “touch” the system be lost – until one day the system crashes, and there won’t be any developer left who knows how to fix it.
On the other hand – if you always touch a running system – there is definitely a risk that the system will break – but the more often it breaks, the more people it break, the more knowledge will the team gain of how not to break it, the more knowledge will they gain of the system’s abilities and its limits, of other alternatives, and so on.
Touching (plus breaking and fixing) the system will soon be a matter of seconds, with a system always up to date, you will always have the latest and greatest features, bug fixes, and the most current knowledge divided through the whole team.
Why then, I ask myself / you, is it still so that the average developer / the average team freaks out in fear to touch a system, with the result of so many rotting systems?