The Badger recently used a bank’s online processes to establish formalised ‘power of attorney’ control over someone else’s accounts. Formalising the ‘power of attorney’ and setting up the associated internet banking facilities was pleasingly easy. Everything went smoothly. This week, however, the Badger encountered a problem. Not a major one, more an inconvenience. The Badger, as ‘power of attorney’, set up a new payee in order to pay a small invoice the same day. However, a ‘technical failure’ error message appeared every time the Badger tried to send the payment. Grr! The Badger called the bank, who were very helpful. It was a known problem – a software defect. If you are a ‘power of attorney’ and click the ‘send payment immediately’ box, the software won’t let you send a payment! The solution? Click the ‘send at a future date’ box – i.e. tomorrow – instead. The solution worked perfectly.
The Badger wondered why this ‘software defect’ hadn’t been picked up in pre-release testing. The experience was also a reminder of how reliant we are on software and on it working correctly. It was also a reminder that software will always contain defects even when the best design, development and testing practices have been used. While the Badger cogitated on this, he saw last week’s reports from the US about the software for Boeing’s reusable spaceship, Starliner. The reports, here for example, highlight a review following the unsuccessful Starliner test flight to the International Space Station(ISS) in December 2019, which has exposed ‘process’ failings in the software design, development, testing and assurance oversight of the ~1 million lines of code. Oh dear. There are obviously many more defects in the software than the ones that impacted the mission in the first place. The Badger raised his eyebrows in surprise. After all, well-established engineering disciplines and processes for producing quality software have been around for a long time and are there for a reason.
Software runs the modern world. It’s everywhere. Its scale and complexity have risen dramatically in recent decades, and when software goes wrong it can have wide ranging, unwelcome, and sometimes disastrous impacts. You can get a sense of the scale of some codebases here and you’ll find some of the software failures that have wreaked havoc and disruption in recent years here. Without software, modern civilization would grind to a halt.
Years ago, the Badger was told ‘Never expect software to be perfect’. Wise words still relevant in today. AI, autonomous vehicles, robots – and so on – are not immune to having software defects, so when you go about your daily life just remember that a software defect is always lurking somewhere, and that it will manifest itself at the most inconvenient time. That’s just a fact of life in today’s world!