Scroll to the bottom of a list of related issues where software failed its most basic business function … I’m keeping score
I spent 6 hours today trying to buy a printer … and failed.
There is money set aside for this purchase in my bank account.
There are printers on the shelves
Websites advertise printers for sale
The reason I was unable to purchase a printer was because a corporation with a near monopoly on the Canadian market, one of the largest privately owned retailers in Canada, could not tell me which printers they had available for sale.
Let that sink in:
A multi-billion dollar retailer could not tell me if they had anything to sell me.
On the surface this is laughable, funny, but I believe this belies a more insidious problem that is pervasive, and down right dangerous.
The Sequence of Events
I recently made a long distance move across almost the entirety of Canada. I’ll give credit to the movers, most of my stuff made it in one piece; unfortunately, my printer suffered catastrophic snapping of some hinges. Since we do not deal in paper as much as we used to, we initially just tried live without it; in the short term, this saved us a bunch of money, but it also helped us to evaluate what we really needed in a printer:
Scanner with an auto-feeder
Cheaper ink cartridges
Duplex printing (nice to have)
Ink colours in separate cartridges (nice to have)
After a moment of distress trying to print a government form, and with a fairly clear idea of what I wanted, my Wife and I decided to put an end to the problems and just pick something (anything) up at a nearby retailer: Staples Canada.
Naturally, my first reaction was to look on their website: staples.ca. Reviewing a listing of available products over a cup of coffee, in our pyjamas, was exactly the way to start figuring out what we wanted. It was a quick search:
all available printers
ordered by price
By jumping forward to the first couple of printers that met our needs we would get a reasonably good idea of what our critical price point are. Further, I also saw they had an option for 2 hour curbside pickup, so we should be picking it up in a couple of hours. We came across a couple of printers that met our needs, at around $100. Within 30 minutes, we clicked to order.
None available in store
None available online
What? That’s annoying. Let’s try the next one.
None available in store
None available online
Hold up. Let’s try a filter: “Only show items with 2 hour delivery”. Surely that will filter to items that are available in the store right now.
None available in store
None available online
The more I searched, the more frustrated I became. After an hour of this, my wife and I finally decided to just go into the store and buy whatever they had available.
Upon arriving at the store, it didn’t take long for us to narrow in on the products we were looking for. They were more expensive than their equivalents online, but there they were … or were they?
We had it narrowed down to one of three printers, when a clerk came over. We pointed to them and asked a couple of questions, and he stated: “well, we should probably check to see if they are available before we go any further. We may not have them in stock.”
Momentarily slack-jawed, we proceeded for him to check to see if they were in stock, only to find… they weren’t.
None of the printers we had expressed an interest in were available for purchase. There they were on the shelf, but none of them were available for sale. Order? Nope, please go online to check availability.
As we walked out of the store, empty handed, the manager stopped us and asked if we had found everything we were looking for (“no”), how could he help, and spent the next two hours explaining it wasn’t his fault that they didn’t have any stock and trying to upsell me a high performance Laser Printer. My only question at this point is: “Is it available for purchase”.
The manager left me with a customer complaint phone number, and the promise to email me a link to a printer I was interested in. He had verified with the warehouse that it was available, and I could get it shipped to the store. He could not request it, but if I ordered it online via the website there should be no difficulty.
On my way home, I had stopped in to the local Home Hardware to pick up a ladder and a shovel. They didn’t have any ladders in stock, but pointed me to their website
The Significance
These are fundamental problems in the Software and Information Systems space: inventory systems should be able to count inventory, sales systems should be capable of selling products. That businesses are allowing systems to be released without testing of the fundamental feature that was requested is a massive failing. Software developers are allowing the release of features that do not work… and not in subtle, nuanced, ways.
It’s like manufacturing a car and forgetting to attach one of the wheels.
Developers did not even bench test their work
No peer review of any kind took place
That is fairly significant, and I suspect their are two elements at play:
The development was outsourced to a consulting firm that is motivated to appease managers.
It is highly likely that the feature was delivered on schedule.
Software development has been commoditized, and in the process the managers and developers have forgotten a very fundamental truth: software is built to solve real world problems that real people have. If you develop tools that don’t work, people are hurt (even if it is just because they have to manually search through a store’s catalogue, or because they have to add up numbers in a spreadsheet before entering into the payroll system). While it is up to developers to enact that quality, it is absolutely necessary that managers expect that quality.
This means deadlines may not be met.
… but then again, you have to ask the question: if the feature isn’t implemented, has the deadline actually been met.
It’s Embarrassing
Since the dawn of software development, testing and validation of the work has been paramount. When you entrust a person to design a process to take care of people, it must take care of people. There is no human judgement involved to cover your mistakes: if your process is flawed the machine will carry out a flawed process.
Margaret Hamilton realized this in the 60s when her team developed the software that landed the Apollo, introducing the concept of Software Engineer. She didn’t develop software that worked because “astronauts are trained not to make mistakes” but because she tested the crap out of her software. Later leading to the language `001` and `USL`, languages that made programmers think about errors before they happened … because that’s what programmers do.
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74cc6aba-fe40-4674-9d0d-740a66314a5e_551x215.png)
In the late 1990s and early 2000s, unit testing, test driven development, continuous integration, and automated regression testing came into their own, offering means of ensuring that features were guaranteed to be minimally tested for basic user expectation prior to release.
DevOps in 2010 should have made developers even more responsible for basic functionality testing, making them directly answerable to the errors of the system.
The issue is likely two-fold:
Managers believing that the skill lay in the visual elements they can see, rather than the business processes that they cannot
Developers not standing up for the engineering act they are engaged in.
It was a very long time, and a lot of hard work, before Hamilton’s peers considered software a type of engineering. Watching software be released that does not meet the most basic of functionality requirements makes me realize that many developers are not living up to her legacy. I’ll take it one step further … managers have to stop expecting that software will have the “testing” check-box tick, and start understanding that quality is a mindset of continuous improvement.
It Matters
I think this should be a moment for deep reflection within the domain of Information Systems and Software Engineering.
Airplanes fall out of the sky
Small business owners get falsely accused and imprisoned
Retail organizations are physically unable to sell their products
Programmers need to consider the direct consequences of their actions; Managers need to take a moment and reflect on the value they are adding to their organization; and Executives need to reconsider the actual deliverables they are asking for.
Should any of the afore mentioned organizations like to engage my consulting services to identify gaps in their information systems which are costing them sales, please do feel free to reach out to me.
Also, please leave your examples of bonehead fails in the comments.
2021–07–19: Staples won’t take my money
2021–08–20: Pizza 73 won’t let me order a pizza due to a curl error.
2021–09–18: Out of 57 monitors listed, with the “for in-store pickup” filter in place, my Wife cannot find any in inventory on Staples website
2022–01–16: After 3 weeks, Aviva Insurance is unable to find a way to tell me how much I owe them.
2022–07–20: My washing machine broke down. Local vendor has none in stock, Whirlpool’s vendor portal has been down for a week.
2023–02–28: After 2 weeks of trying to book a flight from London (LGW
) to Calgary (YYC
), my sister-in-law has learned that WestJet can’t accept payment from UK citizens.