"Something went wrong, try again later"

This is a rant about the trend in user interface design to make error messages vague to the point of being unusable.

I decided last week that I felt like going to Sonic to eat. If your immediate reaction to that is “well there’s your problem”, fuck you, you snob ass motherfucker, it’s just a concrete example. People are allowed to eat cheap burgers. So I put the order in on their app - as I always do now to save time - and I go to order and it says “Something went wrong, try again later”

Hmm. Okay. I guess that means their back end is down, the ordering system isn’t working, and it’s telling me to wait for them to fix it. So I decide to go eat somewhere else. I decide to try again a few days later. Same error message. Hmm, did they just let their whole ordering system stay down for 3 days? That’s odd. But what can I do? That error message tells me nothing. I decide to take a look at the app settings, see if maybe it’s something on my end. Just in case.

Aha. That credit card I have on my payment methods. I had to cancel that a few weeks ago because I lost it. So I switch to a new credit card and the order goes through fine.

10 years ago, the app would’ve said “payment method failed, please choose another one.” Today? “Something went wrong, try again later”

Which is actually the worst possible fucking error message because not only is it vague and therefore unfixable, the “try again later” part is telling me that something is wrong on their end, that I don’t have to do anything to fix it, so I don’t go searching for a fix. It’s the exact opposite of a good error message. I could’ve tried the Sonic app every day for the next 6 months and it would tell me “something went wrong, try again later” 200 times. And every time it would imply the problem is on their end, something I can’t fix, instead of just fucking telling me the payment didn’t work. Absolutely fucking insane design.

And this is not an isolated case. I use google flow to generate images and videos. It often has insane moderation. I once got moderated for the prompt “a group of realistic looking humpback whales fly over glacier bay in Alaska, using their fins like wings” and that got moderated. Because, I don’t know, the naked whales are too sexy? What was the actual reason for the moderation? Who fucking knows, because all google will tell you is that it failed. It actually didn’t even tell you it was being moderated. Just “failed” – did it fail because their server was overloaded, or because the moderation system thought there was something objectionable about it, or because google is run by Orcas who are racist against humpbacks? Who fucking knows, they won’t tell you.

The most absurd version of this story is that it lets you generate up to 4 images or videos side by side with the same prompt. I would run 4 generations and sometimes one generation would get the message “generation failed, your account has been flagged for unusual activity” – but here’s the hilarious thing. Sometimes that message would appear in 1 generation. or two. and the other 2 or 3 would generate just fine. So is my fucking account flagged or not? You’re letting me generate some prompts just fine and telling me there’s something suspicious with my account and then generating 50-75% of my requests anyway. With the same prompt for each one. So obviously my account isn’t actually banned from generation. You’re just giving me a stupid fucking useless error message that doesn’t make any sense and making me think I did something wrong in the process. How am supposed to know how to fix what you’re telling me if you don’t tell me what the problem is?

It used to be that programs would say “operation failed, error code 3924” or something like that. Then you go google “[program] error code 3924” and you’d find official documents explaining the error code and how to fix it, or perhaps a forum post where someone else had the same problem and someone explained to them how to fix it. This makes perfect sense. You need to know what’s failing to have a shot at fixing the situation.

But modern interfaces are so infantilizing that they apparently think the user is going to break down and cry if you show them something as arcane as an error code. And not even an error code in Sonic’s case. They decided to hide “payment method failed” from me! Who the fuck wouldn’t want to know that they’re using an invalid credit card and that’s why the system is failing? That’s easy to act on and not technical or obscure at all.

How the fuck are we supposed to fix problems if the systems we interact with are deliberately withholding what the problem actually is? I feel like not only have we lost the art of UI design over the last decade but the design practices have become actively hostile to make the user experience worse. All so that these companies can make hardware and software that treats us like babies who can’t figure out how to operate in the real world.

(Irony? I wrote “infantilizing” above, the spell checker in my browser decided I didn’t really mean that and replaced it with “initializing” which I only caught on the proofread. The fucking spellchecker was infantilizing me as it assumed I didn’t want to use the word infantilizing)

No, the problem wasn’t that you chose to go to Sonic to eat. The problem was that you chose to use a cell phone “app” and expected it to behave like proper software, which it isn’t and doesn’t. The essence of the problem is that the thing we used to call “software” was usually developed by trained software engineers and went through rigorous design reviews before the first line of code was even written. “Apps” appear to be the product of 10-year-old hackers coding in their parents’ basement and subsisting on Hot Pockets and Red Bull.

That said, I do have sympathy with your POV as I, too, see that message far too often, usually on social media, which I don’t really use except when I occasionally follow a link to see what someone has posted.

Is google’s main creation tool “real software”? How about windows 11, where I can’t even move my fucking taskbar to the right side of the screen without hacking it? Is that real software? (I know that’s a UI decision rather than an error code, but it’s the same infantilizing of the user)

Smartphones are serious pieces of tech and shouldn’t be dismissed as some sort of toy that should come with no expectations. Phone apps saying “your payment method failed” is a reasonable design expectation and saying otherwise is absurd. People do real things on their phone, important things. Many big companies with teams of highly paid, skilled software engineers develop their apps as smartphone first or even smartphone exclusive. They’re the most commonly used tech device for many people. Their interfaces and their software should make sense.

My opinion of Windows 11 has been widely shared on this board. So has my opinion on Microsoft’s disinterest in software quality. As software migrated from minicomputers and mainframes to PCs and servers, the world saw an incredible decline in software quality and reliability. Microsoft was single-handedly responsible for this decline. When applications migrated to phone “apps”, it got even worse, further exacerbated by the vendors’ firm control of your device. Got an “upgrade” that you don’t like? Too bad!

As for Google, I’m not sure what you’re referring to. Google definitely runs a great deal of real software that powers their businesses.

You can have all the expectations you like – I’m describing the reality that I observe, admittedly with some nostalgia for the days when software quality really was a thing. My primary use of my cell phone is to make phone calls (apparently a lost art these days among many) and occasionally to text when I have to. But I do have an Android tablet on which I run a number of “apps”. They more or less work but I can’t think of a single one that isn’t buggy in some way, and some are so poorly designed that they’re virtually useless.

Where are people finding cheap burgers nowadays?

That said, it sounds like you have a legitimate beef (no pun intended).

The apps. Haha. They were running a deal on the app that offered “get a free burger with $5 purchase” so I wanted to get a milkshake and a burger. Hence why I didn’t even bother to go when the app didn’t work - it wasn’t worth it without the deal.

Im ok with software being buggy. Just tell me what the bug was if it happens. This has nothing to do with quality, it’s because of the obsession with making guis seem sleek and elegant by giving you no information.

As someone with experience in UI design for payment apps, I can tell you it’s highly likely their network security folks told them to use as vague a response as they can in order not to give up clues that could be exploited. At least that was what I was told when my error messages were deemed too helpful.

This explanation came to mind when I was reading OP’s episode with the image generator. If a user action is coming up against intentional guard rails, error messages are going to be intentionally vague to prevent a bad actor from using that as feedback to get around the restrictions.

But, it’s also true that this kind of exception handling is cheap and quick, so much favored for that reason.

@Dorjan nailed it.

When the majority of traffic hitting your website or app is bad guys trying to break it or break into it (and that’s the real world situation), defending against them is Job 1. Providing service to actual end users is Job 2. Because if you flunk Job 1, there won’t be any Job 2 to do.

I occasionally use Peacock to watch Premier League games. Whenever anything goes wrong it shows a “Puss in Boots” sad face cat with the generic “Something Went Wrong”. Absolutely no clue what it could be.

Might be a VPN, might be an adblocker, might be a problem on their end. No way to know.

I’m sure it’s an obfuscation technique to avoid folks trying to get around ads or location restrictions but as an end-user that just wants to watch a soccer match it is infuriating. At least now that the league is over I can cancel it.

There is no good reason to display an error code to a user (and some good security reasons not to display one (and certainly not the one generated by the database failure)). That said, when there is something the user can/must fix (such as payment failure) the message should surely give a clue.

Could be worse. The message could be informative, but inaccurate. I dealt with one of those recently.

I’m buying tickets for something that are in short supply. Pick my seats, go to pay. “Sorry, your payment didn’t go through”.

Double check that my card of file is a current one, not an expired or frauded one; all OK. Try again. Same outcome. Try again 2 hours later. Same outcome.

Change my seat selection to seats near the previous two. Goes through fine. At which point I see the seats I’d selected earlier had been sold.

My supposition is that the seats had been very recently sold out from under me when I tried the first purchase. But due to caching or whatever at their end, the server handling my transaction didn’t know my selected seats had become unavailable. So the buy failed, and the UI assumed the cause was a method-of-payment failure.

Hey devs: Don’t do that. Your helpful helping is unhelpful.

It never even crossed my mind, honest! :flushed:

The current trend in Technical Support, and they definitely have taxed the meaning of “support”, is to have as little involvement as possible. If you can finally get a human, they are coached not to accept responsibility unless it’s unavoidable. For example, they’ll suggest you need updates to your machine or browser, or flush the cache in your browser. They’ll suggest a possible virus, etc. The list goes on.

I always endorse eating Sonic. But it’s corn dogs I order.

My app says, “your food is being prepared, Ms. Wrek”

Oh yeah, it fouls up occasionally. So do humans.

I’ve never had too much problems with apps.

My problem with restaurants goes way WAY deeper than that. :squinting_face_with_tongue:

The world isn’t perfect.

Some persons get bothered by these little, yet irritating problems. Others just take it in stride.

I can be the “Becky” if need be.

I can accept this as one factor, but not nearly so dominant as you (or whoever told you that) suggests. A moderation system like google - that could explain the vagueness. A clear, easy to fix error like the card being invalid? There’s no justification to hide that from the user. “Payment method failed” only vaguely told you what happened but is clearly enough information for you to take a second look and fix the problem.

But I disagree about google’s moderation system too. For example, I think it says the same message for ANY failure, even if it’s their servers getting overwhelmed and losing the thread, the image generator itself generating some technical error, or the moderation kicking in. When you get a failure to generate an image, your natural thought with a vague error is that you’re getting moderated – most of the time it’s moderation.

I had the prompt – and I just looked it up to be precise – “a group of realistic looking humpback whales fly in the sky over the sea in alaska. we see ice, glaciers, and mountains in the background” generate a 25%-50% failure rate over several attempts despite consistently innocent results that I cannot possibly understand why it failed. So I started varying the prompt with words that were not meaningfully different (like adding “slowly” to flying) that would sometimes go through perfectly for no apparent reason. If it would tell me “this generation failed because of a technical error or our servers were too busy” I would at least know that I didn’t have to wonder why it was getting moderated and adjusting my prompting strategy. And if it is moderating me, telling the broad category of moderation (sexual content, violence, whatever the fuck flying whales could be) would at least let me speculate about what was going wrong and adjust my strategy. But having a 25-50% failure rate, A HIGH FUCKING FAILURE RATE for a completely innocent image, left me baffled and frustrated with nothing I could fix.

And “your account has been flagged for unusual activity” is an even worse message if it’s not true. And the fact that it was happily generating 2 or 3 out of the 4 image batch, based on the same prompt, run at the same time clearly meant that my account wasn’t flagged to prevent me from generating is even worse. It makes me think I’m in trouble even though I’ve done nothing wrong, and the behavior (still generating images for me alongside failed ones) certainly suggests that’s not actually what’s happening. A misleading error is actually worse than a vague one. Sonic told me that the problem was on their end and I shouldn’t do anything. Google’s is telling me I’m in trouble, but here are half your images anyway.

In contrast, midjourney (another image generator) has moderated me about 4 times in a thousand generations and when it does, it’s specific. It’ll say “this generation had an image of a person that was exposing too much skin” or something like that which made sense in context and I could meaningfully adjust my strategy.

The whole point of error messages is that the user is an agent in the process and can adjust or fix their strategy to work around the problem. When you stop treating them that way, they have no way to fix or improve the process. Sonic would’ve went on telling me something was wrong on their end until the end of time if I hadn’t figured it out myself, and the incredibly stupid error message me explicitly told me not to figure it out myself.

Stopping treating the user as an agent who can adjust or fix what’s going on is a massive loss in functionality. It makes any failure crippling and often unfixable or far far harder to fix. It is objectively bad interface design and the security concerns only go like 5% of the way towards justifying it.

No, it is the dominant factor. It’s just being implemented poorly in this case.

In current software design, is emphasized that error messages should reveal as little as possible about the underlying system so that it is more difficult to design attacks. This started about 20 years ago, but I’ve seen it become much more prevalent in the last 5-10 years.

The problem comes when “as little as possible” is interpreted to mean “nothing”, or when developers use it as an excuse to get lazy. In your Sonic example, the error message at a minimum should have communicated that it was a problem for you to resolve.

Too many bad reactions (and internet videos made for hits) from people who will not be told that they did something wrong lead to generic responses like “Something went wrong, try again later”. It is a legal defensive measure.

As a software developer, I apologise on behalf of my industry.

That “Something went wrong” message is the bane of the industry. It is completely due to lazy developers who essentially set up a code variant of this:

try(something()) {
    doSomething();
} 
{
throw(e);
}

That is, in laymans terms, try to do something, and if it fails, throw your hands up in the air, ignore the problem, fail to log it at all and just keep pretending it never happened .

Maybe someone will read the error logs later…

I, while employed as a consultant to a large UK based conglomerate spotted, in the error logs a bunch of weird, unexpected errors, and literally solved the problem within 2 hours, saving our client several millions per year.

Log files can be tedious to read, but they are immensely valuable. “Something went wrong” is not.

It should be something much more like

try(something()) {
    doSomething();
} catch (e)
{
     Logger.log("an error occured during this specific process, e);
     throw(Exception e);
}

You could have the opposite problem.

My next to last job before retirement was with state agency which was developing a replacement for a 15-year-old taxation system that ran on a mainframe. (Side note: the new system was being developed by a third party, not state IT staff.) I joined the infrastructure team, whose primary job was keeping eighty-odd servers functioning and talking to one another — a considerable task in itself, since they seemed to be communicating using the IT equivalent of two cans and a piece of string. In addition, we were designated as second-tier support after the help desk.

What’s relevant to this discussion is that it became obvious during testing that in many cases the developers weren’t even using the first approach in @scudsucker’s post: if something — anything — went wrong, which happened frequently, the program in question would crash and the user would see the raw Microsoft error message. Which was, of course, gibberish.

The problem was raised multiple times in status meetings, and we were told multiple times that the situation would be remedied before the new system went live. And of course, it wasn’t. Beginning on day one the help desk was flooded with calls from end users who thought they’d destroyed the system, calls which were passed to the infrastructure team. I would say that during the first couple of weeks we spent the bulk of our time reassuring panicked users that they’d done nothing wrong.

About the only positive was that the first phase of the new system rollout was restricted to back end functions, so only agency staff were interacting with it. Og knows what would have happened if the public had been exposed to it, except that state IT staff would have been blamed. When I left almost a year later the problem had been alleviated somewhat, but still cropped up with distressing frequency.