On a daily basis our organisation makes choices about what features can be released and what features are not yet ready to be put into the wild — sometimes this means that we allow functionality to go into production with known bugs and occasionally defects enter production without being noticed.
I strongly believe that we have a duty of care to our customers to make sure that our software is fit for purpose and to ensure that our software does not have any negative impact on our customers lives. Unfortunately sometimes the most innocuous bugs can have wide ranging unintended consequences that would surprise the most diligent development teams.
I am not ashamed to admit that I practice good sexual health by ensuring I have regular check-ups at my local sexual health clinic. After a check-up the clinic advises you that the results will take 4 days to process and they give you a number to call.
Going to the clinic is never a pleasant experience — but going to the clinic when you suspect that something may be wrong is a particularly unpleasant thing to do. Unfortunately that is the position I found myself in last year.
I’d be been tested and I was waiting for the results — as you can imagine it was a long wait but eventually 4 days had passed so I called up the number.
The automated voice asked me to enter my unique ID which I did and then pleasantly asked me to “Please wait while I look up your results”.
Now having used this service before the next step is normally that the automated voice informs you that your test is negative — on this occasion after nearly 60 seconds of silence the system said
“Please hold while I transfer you to an operator”
Now at this point my anxiety levels were going through the roof — I’d already spent four days fearing this test result and I’d absolutely convinced myself that I’d contracted something hideous — by the time the system told me to please hold I knew that there was something wrong — as a software developer I understood that you should never deliver bad news using an automated system — the reason I was now being transferred to an operator was so that I could be told the bad news by an actual human.
“You are now 12th in the queue and we will connect you as soon as possible”
So I waited — the system kept me in the queue for 35 minutes and I can honestly say it was one of the worst 35 minutes of my life.
Eventually — I am connected to Marie:
“Good morning, you’re speaking with Marie, please can I have your unique ID”
Now not withstanding the fact that I’d already entered my unique ID and I couldn’t understand why the system hadn’t been designed to automatically pass it to Marie — I gave it to her and a few seconds later she said
“Your results are negative”
At this point a wave of absolute relief spread through me — I was absolutely convinced this was going to be bad news and suddenly all of my fears were unfounded — this was good news, I was eurphoric — I spluttered back at her
“Why did the system put me through to you if the results were negative?”
and she replied
“It just does that sometimes”
Read that again …. “It just does that sometimes” — Now this makes me angry — I have many problems with this on many different levels.
First, this isn’t Marie’s fault, she’s working in a call centre — my problem with that statement is what it represents. This means that the failure is not a one off, it means that it has happened before and not only has it happened before its happened often enough that Marie, who is one of what I assume are hundreds of call centre operators working with this system, has been able to normalise it to such an extent that she can say “It just does that sometimes”.
That means it happens A LOT. Often enough for Marie to not think of it as an unusual circumstance. How many people are put through the agony of having to wait to be connected to an operator to be told that their results are negative?
Let’s explore what has gone wrong. Maybe the database lookup failed? Maybe there was a timeout error? As an end user I don’t care — what does matter to me is the emotional trauma that I went through prior to getting my results.
Now you can argue that I’m making a big deal out of this; does it actually matter? Or, is this just another 1st world problem?
From my perspective, I genuinely thought I had a hideous disease — and some of those diseases could be life threatening — so forgive me — but I think it is a big deal!
I can’t imagine for a second that the product owner set out to create such a poor experience for the end user. I don’t believe the developer intended the code he put into the wild to have such a negative unintended consequence and I’m sure the CEO of the organisation responsible for this experience would be devastated that his organisation was responsible for the emotional trauma that his system had caused.
Working in delivery for a large corporate organisation I am ashamed to say that I can see exactly how this experience has been allowed into production. It is all to easy to understand that this system had a date on which it had to go live — that date would likely have been attached to a business case which released funding and as a result I am quite sure that those delivering the system were under pressure to get it out of the door on a specific date in order to meet the business objectives.
The developer may have even noticed that the database query occasionally failed — perhaps it only happened one in every 1000 times and maybe the business took an active decision that fixing the issue was to costly at that moment in time.
The wider issue is that once code goes into the wild it is often in production for years, with little or no funding available to go back and remediate minor issues — once the system is live unless there is a big security problem or other regulatory issue it becomes very challenging for businesses to justify the money to do further work — and a database query which fails 0.1% of the time is unlikely to meet the threshold required for further investment.
Is that ok? Is it morally acceptable for me to have been put through this psychological trauma — does the money which was saved by not testing these edge cases justify the experience I had when I called to get my results?
Now you might say that this is an extreme example — that very few systems would have unintended consequences that would have such a direct impact on people’s lives — and that might be true — but all systems can have unseen consequences and those consequences by their very nature will affect users in unexpected and often undesirable ways.
I believe that within our industry there is no higher purpose than finding ways to surprise and delight our users. Yes, sometimes compromises are needed, and yes sometimes systems won’t be perfect — but as a community and as an industry we need to make sure that we do everything in our power to make sure that we don’t adversely affect the lives of our customers.
As Software Engineers our reputations are on the line — a bad experience here, and a poor experience there will lead customers to talk about those experiences and this will lead to negative press.
You never know, someone might just write a blog post and tell everyone how bad the experience is or maybe the experience will slip under the radar silent and unnoticed. The question we must ask ourselves:
“Is this morally acceptable?”
We often find ourselves morally challenged — There is a climate emergency; parts of the world are starving, it is still illegal to be gay in more than 70 countries. These are big problems and we must do our part to help improve our planet.
And yet as technology professionals we find ourselves in a unique position where we are able to directly affect and change the lives of thousands and in some cases millions of people.
In the grand scheme of things having to wait 35 minutes to get my test results might not seem like a big deal — but the software team that created this product had an opportunity to make a direct improvement to my life and to the lives of thousands of others calling up to receive their results — was it morally acceptable for this opportunity to missed?
Have you ever come across a system that had a negative impact on your life? If you work within a development team do you always consider the negative and often unseen impact an unresolved bug might have on your customers?
Please reach out to me on Twitter and share your own experiences and explore which bugs you consider to be morally acceptable.