If you are making an app, that in some way allows customers to interact with a physical business, i.e. ordering things for pickup, scheduling appointments, rewards programs, season tickets, etc., GIVE THE PHYSICAL LOCATIONS VERY BROAD OVERRIDE CONTROLS. Make sure that the business can turn off features when something goes wrong and they can’t handle it. That they can just allow customers through either with a log to be sorted through later or not even bothering with that. That they can functionally operate their location without the app that’s supposed to make things easier making things worse.
Some examples:
I have a pass for Regal Unlimited, so at regal theaters I can see as many movies as I want. It’s an app on my phone with a QR code that can be scanned at the theater in exchange for a ticket, or I can get tickets on the app for a small fee. Yesterday at my local theater, their internet went down, which took their rewards, unlimited, and online ticketing systems down. Okay, override the system to allow it through anyway. The unlimited accounts have unique IDs you can log and charge later. You could have a button on the PoS machine that gives an unlimited ticket without the confirmation check. But they had no ability to do any of that. They could’ve (and should’ve) just said “just go pick a seat” but I think corporate pays the individual locations based on unlimited tickets, so it’s not super surprising they won’t do that even though they should.
My partner recently had to rent a car from Hertz while hers was getting fixed, and on their website it had the option to have Hertz meet you at the mechanic shop with the car. Awesome and convenient! She schedules it, shows up 2 days later, no one’s there. She calls them. They only have 2 employees working so can’t do drop offs, and have no way to disable that feature or even warn people it’s broken.
Last one. I worked at a large pizza chain for a while, where you could order online or in the app. But there was no way to tell the system that we were out of anything, so people would constantly order and pay and we’d have to call back and be like “I know you bought a 2 liter of Coke for like $4, but we’re out of every soda except Fanta, is that okay?” “So you ordered a veggie sandwich, but we’re out of sandwich bread, how about a salad or a cheesy bread?” which people often rightfully didn’t take very well. Their system also had no way to give partial refunds because all it could do is completely cancel a credit card charge and obviously money isn’t fungible.
TLDR: When you work in the physical world, things go wrong sometimes and you have to adapt. That’s normal. It happens every day. So when building digital things that interact with the physical world FUCKING ACCOUNT FOR THAT :monke-rage:
Probably part of the problem is the quality of the requirements provided (and the quality of the consultant). Developers are usually not in-house but developing according to requirements provided to them. So it should be a mutual process of the business deciding what the requirements are, and the developers providing feedback and suggestions based on their experience.
For example if you have a network based service, a developer SHOULD ask the question, what contingencies do you want in place if this service becomes unavailable? But developers also don't work for free, they aren't going to build an extra offline process if they aren't paid for it.
Long story short it's probably cost cutting in both directions.