When software maintenance becomes technical debt
I once dealt with a company that, more than 10 years earlier, had created some analytical software, which it had made available to customers as an add-on for its diagnostic device. The software was alive, but barely – it was very much on life support. The team had mainly been adding and releasing language support and batch parameters. The tools used to code the software had never been updated, neither had the libraries.
In addition, the team’s working practices were not in keeping with current standards. The software had missed out entirely on software engineering best practices such as continuous integration, UI & integration testing, automated unit testing, and a mature versioning system like GIT. This was likely both the cause and consequence of the high level of staff turnover in the department, with young, highly skilled professionals coming and going regularly.