Opinion: those who maintain the software which runs our computer systems and apps face many unseen trials and tribulations

Imagine your boss calls you next Monday morning. "Listen, about that War and Peace novel. It isn’t doing so good. We’ve had some customer feedback, and the problem seems to be that Pierre Bezuhkov character. The readers think he’s so full of empathy that he’s totally unbelievable. So Jones, I want you to take the character and make him a bit less empathetic."

This sounds like an easy and reasonable request. After all, the royalties help pay your salary. But you soon realise that you need to look at every paragraph where Pierre appears, making some changes to what he says and what he does in each.

After you finish that trawl through the book, you realise that his altered behavior will affect every character he interacts with differently. Consequently, you will have to identify each character he talks to or interacts with, and alter those characters’ behaviors, in line with the effects of Pierre’s new persona. In fact, the cumulative impact of all these changes might alter the nature of the book. You may have to make more revisions to preserve the book’s "perseverance-of-good-through-extreme-conditions" message, rather than one where bickering squabbles lead to the absolute dissolution of society.

We need your consent to load this rte-player contentWe use rte-player to manage extra content that can set cookies on your device and collect data about your activity. Please review their details and accept them to load the content.Manage Preferences

From RTÉ Radio 1's Morning Ireland, Cian McCormack reports that lots of the HSE's technology systems are out of date

These are the sort of issues that software maintainers face every day. Users notice a problem in their software systems, and request a change. Think, for example, of the HSE's Covid-19 app where user reviews suggested that the app should be updated to notify users to submit their health status daily.

As a result of that request the development team manager would then probably approach the software maintainer with a small, seemingly innocuous change. But software is not structured function-by-function and the code to be changed may be delocalised throughout the system. Because the code that makes up a software system is typically so interdependent on itself, there will probably be lots of unanticipated and subtle side-effects, which the software developer will have to identify and address.

Additionally, source code has several other characteristics that make life even more challenging and miserable:

- War and Peace consists of 587,287 words, depending on the language/translation you prefer. But software systems are typically many times larger – often tens of millions of sentences long in fact. Finding the appropriate bits to change can be even more challenging than the search that our poor book editor had to endure.

We need your consent to load this rte-player contentWe use rte-player to manage extra content that can set cookies on your device and collect data about your activity. Please review their details and accept them to load the content.Manage Preferences

From RTÉ Radio 1's Morning Ireland, Cian McCormack reports that the HSE has spent over €300,000 on upgrading 46,000 laptops and desktops, which are operating on old software

Books are essentially sequential, so if you make a change on page 126, knock-on effects can only happen from page 126 on. But software is not sequential in nature so a change on 'page 126' can potentially impact anywhere in the system.

Large software systems are written in several different languages and the developers may need to be fluent in all of them.

These languages are not very English-like in nature. They are precise, detailed instructional specifications of desired behavior. As such, they require precise, and detailed alterations.

The next time one of the software systems we increasingly depend on breaks down, spare a thought for the poor men and women who are racing around behind the scenes

Because the systems are so big, there are parts of them that the developer will have no control over. Some parts will be bought in as finished components of the system and cannot be changed. Other parts and components of the system may be other teams’ responsibilities and getting them changed may prove impossible or very difficult.

For example, the team that owns the component may be in China or America and arguing your case may involve a Zoom call with teams you have never met before.  Additionally, the component you want changed may be used by many other pieces of code, and the owning team may be scared of the implications of change for those other ‘clients’ of the component. Ultimately, this means that a developer may not be able to make part of the change they want to.

The next time one of the software systems we increasingly depend on breaks and causes you inconvenience, spare a thought for the poor men and women who are racing around behind the scenes. They are the ones struggling valiantly to find the relevant code, determine the precise instructions to fix that code and, at the same time, trying heroically not screw up anything else.


The views expressed here are those of the author and do not represent or reflect the views of RTÉ