Software doesn’t get worn out and worn down in the same way that hardware does: it’s like the difference between a physical paperback book, which gets faded and tatty, and the ebook equivalent, which never changes at all. In fact, you could argue that older software is more reliable — its age is a sign of reliability and stability.
Perhaps that’s why the US nuclear weapons system is still controlled via floppy disk. The archaic technology has a permanence and robustness that you wouldn’t necessarily associate with the shifting, cloud-based code of today. When the President of the United States decides to switch the country’s nukes to Windows 10, we’re going to plan a D4 away-day in a remote Swedish bunker.
Software development history is littered with examples of major projects that were significantly delayed or cancelled altogether because the programmers decided to toss out the existing code and start again from scratch. Beginning again with a clean slate is undeniably appealing, but that old code is tried and tested: it works. A lot of the time, adapting and cleaning up old code is a far better option than trying to create new code with nothing to refer back to.
In other words, use the accrued wisdom (and the accrued bug fixes) of existing programming to your benefit.
That said, standing still and relying on obsolete technology can be damaging to your company. You might find yourself relying on standards that are no longer supported, or you might find your business being held back by antiquated programming — just look at the pain caused by so many users relying on Internet Explorer 6 for so long. Established code has a lot of hidden benefits but that’s no excuse for getting stuck in the past.
So what’s the best approach? Our strategy is to take small, incremental steps away from out-dated technology, testing as you go. That way you aren’t getting marooned on a system that’s no longer relevant, but nor are you tossing out code that can be incredibly valuable as a foundation for future development.
It’s a philosophy often summed up as release early, release often: the underlying idea is to keep moving forward while maintaining a tight feedback loop between developers and users. There’s the possibility of more mistakes being made, but they’re fixed more quickly, and that leads to better code and faster progress in the long run. Smaller, more frequent updates mean it’s easier to spot bugs when they occur, and easier to change direction when it’s required.
If your business is reliant on out-dated technology, then this is the strategy we’ll take to lead you back out to the light. Don’t panic, because it’s a fairly painless procedure.