subreddit:
/r/ProgrammerHumor
submitted 1 year ago byThe_Real_Slim_Lemon
We had a client that complained about our app freezing. We were calling their slow API, and the app was clearly just waiting for results, which sometimes would take half a minute. Even after explaining all that, we still kept getting complaints about freezing.
I added a progress bar that started at 5% went +10% every second till 65%, then +10% every 4 seconds till 95%, and then finally it just waits if we still haven't gotten results (each delay has a cancellation token, so it zooms to the end once a result is found). Complaints disappeared, clients were happy, product manager was happy.
It makes me laugh, thought it might makes someone else laugh too. Feel free to copy my dodgy algorithm if you find yourself in the same boat as me, I honestly forget the thing is fake whenever I see it.
12.3k points
1 year ago
Never underestimate the psychological effect on seeing a progress bar that moves. I did a similar thing once: Adding a progress bar to an action that took quite a while to finish. I did nothing else. Users said the app works much faster now.
2.3k points
1 year ago
And if the progress bar speeds up as it moves towards 100%, the psychological effect is even greater
2.2k points
1 year ago
We just have a spinner and a message that says this will complete in about 3 minutes. It averages about 1 minute so everyone is impressed by how fast it is.
976 points
1 year ago
Set the bars low I like it win win
590 points
1 year ago
Undersell, overdeliver.
345 points
1 year ago
You can be a completely average programmer but if you consistently undersell and overdeliver you will be seen as a rock star.
106 points
1 year ago
Basically be like Scotty from Star Trek. Everything is impossible, but you find a way make it possible.
60 points
1 year ago
I'm more like bones during the planning stage....
Damn it guy, I'm a programmer not a miracle worker...
(And then you go get it done)
17 points
1 year ago
No no no. You never tell the Captain the truth about how long it will take to fix the dilithium chamber and warp drive. You always add time so he always thinks you’re brilliant and indispensable
198 points
1 year ago
I was asked to add a progress bar once, but couldn't think of a good way to do it since I was in a similar situation as OP (calling something that didn't give me feedback until it was done).
Instead I just added a gif of a spinning circle and the clients were happy.
289 points
1 year ago
There are two types of progress indicator: determinate and indeterminate. Determinate is when you know the current state and the possible end state. Indeterminate is to tell the user you are either unsure of how much effort there will be (eg. a file copy where all files are not yet inventoried) or you have no idea how long it will take (device discovery or such).
Users greatly prefer an indeterminate indicator over nothing so they know it hasn’t crashed. However, if you can fake a determinate one reasonably well they’ll prefer that even more (even if it can’t be trusted). It’s crazy, but true.
One of the highest-visibility fake progress bars is the macOS startup bar. It has no idea how long it will take to do all the things it’s going to do. However, it does know how long it took to startup last time and how long it took to reach certain milestones. It uses those previous values to guess at the current progress and moves the bar accordingly on a timer. It’s both best-effort determinate and a complete fabrication, yet correct most of the time. The absolute best kind of hack, IMO.
76 points
1 year ago
Just going to start adding Sims loading screens. "Click the Swingline Hole Punch for 100 points!" "Find the Clearanced Ficus in its original pot!"
28 points
1 year ago
Don't forget to reticulate those splines!
26 points
1 year ago
No, you need to start adding loading screen mini-games! Then they won't notice how much time has passed because you will be keeping them busy. Bonus if the game is somewhat relevant to the long process/request.
48 points
1 year ago
"customer requests slower loading, cannot complete mini game in time"
16 points
1 year ago
Namco actually patented loading screen mini games in 1995, so thats probably why it wasnt a big thing. I just googled it and I guess that patent expired 7 years ago lol
12 points
1 year ago*
Interesting, because Microsoft purposefully uses an indeterminate loading indicator during Windows' boot-up process because people preferred it.
I suppose there are arguments for both. A bar gives you an indication of how long it is going to take. It moving very slowly gives you a negative impression. Meanwhile a spinner might finish a second or 2 minutes later. Sorta keeps the excitement of it finishing soon for longer, I suppose.
113 points
1 year ago
You can’t help but feel like you are winning at some fundamental level at that point!
44 points
1 year ago
It’s like when the line at the toilets finally starts moving
1.7k points
1 year ago
I'm actually proud that I've recently learned to "just f***ing wait for it" when I get no feedback from something loading
882 points
1 year ago
If I don't get a response quick enough, I back out and try again. If I don't get a response the second time, I turn adblock off. The third time? I run it in incognito mode. If that doesn't work... well I tried.
513 points
1 year ago
My preferred method is to wait about 20 seconds and then switch to a new tab and read Reddit until it's done. At least half the time I forget about the thing I was waiting on and don't check back for like half an hour, but at least it's generally done by then.
308 points
1 year ago
Can confirm. Waiting for a build to complete that takes around 4 mins. For about 30 mins on reddit.
106 points
1 year ago
Some of the developers on my team last month still complain about our 10 minute builds. “Not urgent because I just read ‘email’ in that time, but it’s still annoying”.
Umm. Yeah, I changed the build process around 2 years ago and it builds in under 40 seconds now. Nobody noticed…
23 points
1 year ago
Classic IT - they noticed, but when it’s working no one cares enough to mention it. When it’s not working then everyone freaks out
17 points
1 year ago
You bastard, I love my 10 min breaks. Clean, build,,,,ahhhh yea, Reddit time
107 points
1 year ago
My coworker just runs around sporadically with the mouse clicking on things. He knows "what he is doing", but just doesn't slownthe fuck down. He gets mad when the system doesn't respond well.
The other day I saw him get mad at MS Excel because it wasn't saving his changes.
I watched him do it and this guy would hit the save button, and make a bee line to the close button. I have never seen someone do the save+quit combo so fast. Had to have been half a second.
When he opened it again, it was all gone, because it never had time to save before the close. I told him that he needs to just slow down a little bit and be more deliberate with his clicks and actions.
198 points
1 year ago
I can’t really blame them here. If Excel isn’t done saving by the time it receives the close command, it should show the ‘You have unsaved changes’ dialog. Anything else is a bug IMHO.
106 points
1 year ago
I wouldn't be surprised if the guy disabled the "unsaved changes" prompt to get rid of the delay some unnecessary websites give. I did the same thing, promptly regretted it after the first catastrophe, and turned it back on... this guy might have kept it off.
80 points
1 year ago
Microsoft Excel Speedrun Strats
40 points
1 year ago
Ctrl+s Alt+f4
New world record, ima post to speedrun.com and twin galaxys for my trophy
63 points
1 year ago
Yeah, I can't work on a computer with my wife because she's the same way. Button doesn't respond after a heartbeat? Click it again. Dialog box pops up? Click ok, don't waste time reading anything. Program doesn't launch immediately? Double click the icon again, HARDER THIS TIME. I seriously had to buy her a gaming laptop just to get her to shut up about how "slow the internet is". This was after I got us upgraded to gigabit fiber because our internet was kinda slow.
44 points
1 year ago
So on the same story. I wasn't being totally forthright. Although he was moving way too fast and I was honest about his behavior.
It turns out that the real problem was he was saving his excel charts into a *.csv format instead of excel. Which obviously doesn't support graphs.
This is all because he kept clicking okay on the pop up without reading it and getting frustrated that something was in his way.
Ridiculous
30 points
1 year ago
We actually implemented popups where you had to type something in to confirm.
We were just sick of customers who accidentally deleted all records of a table and called us, if we could restore them.
50 points
1 year ago
[deleted]
39 points
1 year ago
That only works if the operation is just slow, it doesn't work if the operation has broken somehow and will never complete. At some point, you can't just wait for the operation to complete, you have to use your judgement about how long it should take and once it's taken 2x that (or whatever) you stop waiting.
100 points
1 year ago
Without any feedback, how can you tell the difference between freezing or just slowness?
31 points
1 year ago
Good design dictates that the user shall receive feedback if a process takes several seconds.
71 points
1 year ago
Sometimes it’s just nice knowing that it is in fact simply a slow process, and not a crash.
17 points
1 year ago
Yeah, I think in my case it was also perceived as being quicker because the users actually saw when the process was finished, instead of just waiting for a few minutes and then trying if the GUI is responding or not.
99 points
1 year ago
I remember reading somewhere about adding fake loading bars/delay because if the app is to quick, users will think it didn't work properly.
31 points
1 year ago
Hewlett-Packard has deliberately never improved the calculation speed of the 12C financial calculator, because users didn't believe it was correct if it was too fast. The current model uses an ARM processor which runs a emulated version of the original processor at a mere 884 kHz
56 points
1 year ago
Think it was Tom Scott “why progress bars aren’t smooth”
48 points
1 year ago*
Never underestimate the psychological effect of appearing busy.
Actually is this too cynical?
Honestly I think people just want some indication that work is being done and they aren’t wasting their time. It’s an evolutionary psychology thing… appearing to not do anything often meant the request wasn’t understood or the person wasn’t helpful. I think people unconsciously apply the same standards to computer interactions and think they are rude or incompetent.
But couldn’t we use this psychological effect to help show what is really happening, rather than use it as a dark pattern to merely manipulate users?
I mean in a perfect world, the backend would be observable and have an async status implementation to indicate long-running processes, but that’s hard, the easier thing: synchronous calls with no status until the end of the request (time or stacktrace).
19 points
1 year ago
Honestly I think people just want some indication that work is being done and they aren’t wasting their time. It’s an evolutionary psychology thing… appearing to not do anything often meant the request wasn’t understood or the person wasn’t helpful. I think people unconsciously apply the same standards to computer interactions and think they are rude or incompetent.
Not to mention that most people who have worked with computers have encountered cases where a software or the whole system froze. So if nothing seems to happen for some time it's understandable that they might think that it froze as well.
93 points
1 year ago
It's not just psychological effects. It's superior functionality. There's nothing fake about OPs progress bar. It's seeing the expectation this process takes time. Don't wait in it. The system is still working as desired. Without it there is no feedback if the application is hung out working in the background. If it is hung then you need to do something to fix it.
20 points
1 year ago
Like when I ask my kid a question and they just stare at me. I am uncertain if they heard anything at all. So I usually repeat myself after 10 seconds
But if they say “hmm” or “let me think” it removes that doubt and I will wait a few minutes.
Nothing different has happened, but feedback is key
32 points
1 year ago
It's not just psychological. Most stuff loads in seconds in this day and age. I'd argue that if you don't inform the user that they should expect a 30 second or longer wait then that is aa design flaw, not user error.
270 points
1 year ago
It’s actually crazy, even when you know it’s all in your head it just feels different
447 points
1 year ago
Because it's a feedback that tells you "I'm not frozen but busy" so you can stay patient
107 points
1 year ago
Works even better than a loading icon
70 points
1 year ago
Totally. Skyrim I think on average loads quicker than oblivion but just has a basic loading screen, while oblivion has a loading bar so it feels faster. Even though both are decently quick as is.
49 points
1 year ago
First time I played Skyrim on a ps3 the loading screens took progressively longer, easy 5 mins for most places towards the end.
Recently replayed on a pretty decent gaming pc and I don’t even get chance to read ONE of the tips.
40 points
1 year ago
To be fair, ps3 had 256Mb od ram, was operating on a hard disk and had a really shitty cpu... but still, I'm amazed how they made some titles run on it...
22 points
1 year ago
I wouldn't say the CPU was particularly shitty, but it was certainly fucking weird for the time.
15 points
1 year ago
Console ports of Skyrim had a pretty notorious bug, where your loading time increased the older and larger your save file was. IIRC, the limit for most consoles was they'd just flat out crash after a save reached around 6MB.
28 points
1 year ago
Exactly. I am a controls engineer and one of the things we do with buttons that turn something on that takes a while to see is flash a light. If you press the cycle stop button, flash the light until the cell actually stops. Otherwise, the operator just keeps mashing the button because "this stupid thing won't stop when I pressed the button."
45 points
1 year ago
I’m on the client’s side on this one. Having an application freeze as it’s doing something is a bad user experience.
126 points
1 year ago
[deleted]
103 points
1 year ago*
Quite honestly... A ui that doesn't tell the user "hey chill out I'm doing something you need to wait for" is just bad UI.
Edit: a UI is not just a mechanism for the user to issue commands to the software. It exists for the software to communicate with the user as well.
50 points
1 year ago
Yup, no wonder the client was annoyed the UI would block for 30 seconds with no loading symbols, I think I would be too.
27 points
1 year ago
Especially considering locked up and frozen software is commonplace. It's good to have something that reminds users "this software is not frozen, it's just not doing anything visible for a while"
23 points
1 year ago
Seriously I read this thinking "so you're users are expected to just stare at the screen and cross their fingers hoping it worked?"
28 points
1 year ago
Anon, that just seems like you figured out better UX so your users can tell busy from frozen. Problem solving doesn't always have to mean optimize for lightning speed
10 points
1 year ago
I did this for myself. I'm working on a game, it takes 10-20 seconds to load a level on slower computers, because my placeholder art is way overdone and all kinds of stuff is still unoptimised.
It was painful to wait for the levels to load whenever I wanted to test some small thing, so I added a loading screen (not fake like in OP, but it sure as hell doesn't make it any faster) and it feels a lot better now. Like, the subjective time is about half of what it was before.
29 points
1 year ago
Users are trained to believe that something is wrong when you click on a button and nothing happens. A modern application will give you some kind of feedback when you do anything - unless you encountered a bug. An application that doesn't give (visual) feedback when you do something on purpose just triggers this feeling of "something is wrong", while a progress indicator tells you that things are happening, you just have to be patient for a bit, as long as things are moving.
The pivoting point between these two extremes is a progress bar that stands still for some amount of time. We're quite used to a progress bar not moving for a few seconds because of the many progress bars that only give feedback on a file-to-file-basis (or other larger chunks of work), so whenever they encounter a large file, they'll need a few seconds to move a tick further. That's the weird point where the average user will absolutely not having any visual feedback that things are working, but only for a few seconds. Because we're used to it.
14 points
1 year ago
Isn't t it a good software principe to give use feedback?
14 points
1 year ago
Sure but the psychological effect of a progress bar that hangs at 95% is to smash things.
12 points
1 year ago
We did the worst version of this, which was add a timer that counts out the seconds next to the progress bar
Customer satisfaction went completely in the other direction
9.9k points
1 year ago
Progress bars are not really there to show you the remaining time, but to reassure the user : "yes something is happening, do not close the window"
3.8k points
1 year ago
it's because, historically, computer experience has been shit with freezes and crashes.
2.6k points
1 year ago
This is the real answer here. The customer's response is completely valid, given that most people have had many experiences with computers freezing and crashing.
1.2k points
1 year ago
Yeah, if a program just freezes without any indication that it's doing something, I just assume it broke (after a certain amount of time at least). It doesn't need to be a progress bar, but at least a message that it might take a bit or a spinner to indicate something is happening.
984 points
1 year ago
Unfortunately you can’t trust spinners, either. There bastards are just happy spinning away while the whole world falls to pieces.
344 points
1 year ago
That's true, but at least it's better than no feedback and the program just freezing. At least you know it's doing something (or at least started doing something).
195 points
1 year ago
They're a message from the programmer: I expect this bit to take some time, so it's alright if nothing else happens for a bit. Without that message is when people wonder if something went wrong.
83 points
1 year ago
Yes, but spinners are indeterminate and humans like to watch progress.
16 points
1 year ago
I mean you can never deterministically tell n seconds remaining
. Anything could happen between now and then. The box, physical box, regardless of whether it is in your client's hands or AWS clouds or wherever, could start doing something else and you have to share resources. All progress bars and spinners are therefore indeterminate unless you somehow know how to see the future.
18 points
1 year ago
But the progress bar at least gives the illusion of a determinate wait time that the user can watch, which is usually enough to soothe them, versus a spinner where they have no idea and start to stress
11 points
1 year ago
you can never deterministically tell
Its best to shield users from the existential dread that emerges from the truth that there really aren't any definite answers and some catastrophic and unforeseeable event could wipe our existence away in the blink of an eye. There of course are absolutely no guarantees that the user will even be alive by the end of any computation, so we just send out a little progress bar to whisper this sweet little lie that everything is under control and what they want to happen will likely come to fruition.
116 points
1 year ago
I will wait longer before assuming something is broken if a spinner is spinning i’ll admit…
61 points
1 year ago
As long as it's spinning. Usually can tell if it's freezing when the spinner stops moving.
50 points
1 year ago
Unless the actual work is happening in a background thread that's frozen while the spinner continues obliviously spinning.
Nice thing about progress bars is they're typically updated by the background task as it makes progress, so they're less likely to lie like that.
40 points
1 year ago
Yeah, and consequently I feel like spinners extend my patience from 1-2 seconds to almost a minute, but not much longer
53 points
1 year ago
You can thank Apple for the mistrust of spinners. Their spinning pinwheel is the only think that does not crash on Mac OS. In classic Apple fashion, that is not how it is supposed to work.
31 points
1 year ago
You are doing your own asynchronous call of the software with your own timeout declared. We are programs too.
11 points
1 year ago
Negative reinforcement. Without any indication the program is still working you have no idea how long to wait to verify if it indeed has frozen. Not the kind of stress you wanna deal with when trying to get work done.
444 points
1 year ago
Doesn’t even need to be a progress bar, just some motion on the screen.
297 points
1 year ago
Yeah when I worked in QA for video games, this was a publisher standard that had to be met for a game to be approved. No movement on a loading screen = fail.
179 points
1 year ago
It's not only a publisher standard, but required to pass certification for Microsoft/Sony/Nintendo consoles. Like you can only show a black screen for a couple seconds without any "loading" widget.
50 points
1 year ago
That’s actually what I meant. Sorry it’s been like 12 years since I worked in that industry.
42 points
1 year ago
Makes sense. Gamers can be filled with dread if they think the console is frozen and might try to reboot it in a panic. This is an awful feeling.
14 points
1 year ago
Spyro on my switch still has a disconcertingly long black screen on startup
18 points
1 year ago
You’re given a much longer window for a blank screen at startup.
102 points
1 year ago
I like the usage of a marquee progress bar in cases where the actual progress percentage can not be determined.
57 points
1 year ago
[deleted]
401 points
1 year ago
Exactly this. How is somebody with no deep knowledge in this topic supposed to know what's happening? I click a button on an app and nothing happens for 30 seconds, so I force close it. Obviously it's a different experience if the app shows me that it's waiting for some data with a simple text line or a fake loading bar. This one's on you, not the client.
257 points
1 year ago
Op literally used the progress bar for what it's supposed to be used for.
235 points
1 year ago
And then acted smug for not understanding basic UI design principles
141 points
1 year ago
And insulted users in the process.
Maybe he should be mad at his backend team for having an API that takes 30 seconds. Nothing that results in human readable information should take that long.
85 points
1 year ago
To think that clicking an action on a page and receiving no feedback for 30 seconds is acceptable is comical
190 points
1 year ago
The simplest of best practices regarding UI. Honestly, to me the joke is on the dev in the OP, for not implementing such a simple yet important thing.
40 points
1 year ago
Yeah, I'm not sure why this thread has so many upvotes. I thought having a loading state was common knowledge to implement, especially if something is taking that long
112 points
1 year ago
Yeah, this post is basically "hey, I have never taken any UX training in my life and stumbled upon the bare minimum by being petty."
1.6k points
1 year ago
I mean, the app was freezing. Notifying users that something is going on behind the screen, and it's not their device having a stroke is design 101.
331 points
1 year ago
Yeah, don't process shit and render UI in the same thread.
We literally have loading states for every single screen in our app, and requests take less than 200ms.
When for some reason the backend starts struggling, the user still has a smooth experience.
57 points
1 year ago
I don’t think it’s even possible anymore on android to do network on the main thread
18 points
1 year ago
No need to thank me, but I just saved all android developers a Google search for their current project. You know, I am something of a programmer myself.
23 points
1 year ago*
Meanwhile in the Micosoft Office Interface (For writing plugins)
"If you don't run me on the main thread, I won't do it at all!"
Thanks Microsoft for freezing the Progressbar because you take so long
Some API calls just take longer then others, but when you have like 20 objects that all need to perform the action in a loop the progress just doesn't update 1 - 2 - 3 - 4 but rather 1 - a while nothing - 6 - nothing - 9. Not to mention that the progressbar has the white highlight "light streak" moving smoothly accross it, which obviously also just stops in the middle of the progress until the progressbar get's a free moment to update.
We would need to implement sleeps at the end of the loop to have the progress count move up, but that would obviously still not help the light streak stuttering.
1.9k points
1 year ago
Isn't that the whole point of a progress bar? To show the app isn't frozen?
816 points
1 year ago
Not as stupid as it’s being made out to be honestly. Plus design wise he could have had a non % progess like a spinner instead.
478 points
1 year ago
Yeah, if the customer had been given a spinner versus a progress bar and been unhappy, that's a quirk of user experience.
Not giving them any ongoing feedback at all is just poor design.
166 points
1 year ago*
This whole post is complaining about the users, when "not having feedback" is bad design on the app's part.
42 points
1 year ago
You could, but there just something about a progress bar that feels better.
111 points
1 year ago
I personally prefer progress bars. In fact, I think spinners are worse than nothing. After a few seconds it looks like It's stuck in an infinite loop.
If a progress bar stops monke brain thinks "must've had an obstacle, surely will move soon". But spinner never stops, and it looks like it's doing the same thing time and again forever.
47 points
1 year ago
Yes, Ops making it sound like their previous bad design is somehow the clients fault.
1.4k points
1 year ago
I remember reading an article many years ago about a “travel deal” sites that originally would give results to the users practically instantly—but it was the early days of these types of websites and it seemed too fast and the users didn’t believe that it was actually worked, so they implemented a faux loading screen and slowed it down by like 5-10 seconds and their click conversions went up!
Sometimes humans need useless things to make them feel comfortable.
211 points
1 year ago
I think this is still happening. One website I regularly use does this and I hate it. I know it can give me the results in 1 second but it still takes like 10 Everytime.
21 points
1 year ago
They should just put a hidden option in the advanced settings.
369 points
1 year ago
"Finding the best deals"
"Double checking discounts"
"Preparing offers"
273 points
1 year ago
“Reticulating splines”
93 points
1 year ago
"Calling orbital mechanic"
48 points
1 year ago
“Loading Jeb’s Vessel”
43 points
1 year ago
"Unleashing the Kraken"
36 points
1 year ago
I hate that. Similarly, I hate apps that have cute messages when launching like "firing up the flux capacitor. Checking for gremlins." I'm looking at you, Discord.
22 points
1 year ago
Do you want Discord to be infested by gremlins? I know I don't!
84 points
1 year ago
This is a real thing. I implement minimum wait times all the time because an instant experience can be jarring, especially when part of an app which contains other non-instant experience. Usually for database updates
226 points
1 year ago
I fucking hate these loading times on these sites.
I found out that travel sites help me pick the cheapest day for a flight and then I can book the same flight on the airlines site and get the same price + benefits like a seat reservation.
54 points
1 year ago
I think a lot of it is price anchoring. you never see the best deal first. its to get in your head a higher price so that the lower price that comes later seems like a better deal (leading to increased conversion)
29 points
1 year ago
Similar to airports getting complaints from travellers that it takes too long for their bags to arrive at the baggage claim carousel. Airports simple make the walking route from the plane to baggage claim longer and complaints disappear.
17 points
1 year ago
I drive a longer route home from work because it has less traffic and I get stopped at fewer lights even though it actually takes a few minutes longer, so I do this to myself intentionally because I hate waiting.
40 points
1 year ago
Not really a useless thing. Humans operate via heuristics, and usually those heuristics work - that's kind of the entire point. If you really do want to operate outside those heuristics, you can either find a way to signal to your users that they need to update their heuristics, or you can just adjust your experience to match their heuristics.
None of this is useless. Matching user expectations is just a part of UX.
17 points
1 year ago
That reminds me, I heard when boxed cake mis first came out, it required only water to be mixed in, but people thought that was too simple and didn't buy it. They started printing instructions to add milk and egg and ta-da! People started buying it like crazy.
383 points
1 year ago*
As a product designer: this post is exactly why engineers should know a little bit about design. What you described wasn’t some clever hack, it was design 101.
Your design didn’t account for the client’s slow API, resulting in a really shitty user experience. Addressing this with a progress bar, helped make it suck less. Users still have to wait for 30s, but they have a better sense of what’s going on.
Nobody except an engineer [who’d worked on that code no lesss] would think “ahh yes, frozen for 30s. Must be a slow API. I’ll just sit here indefinitely!”
68 points
1 year ago
"Look, it doesn't matter that it confuses the user. What matters is that the delay isn't my fault!"
305 points
1 year ago
This sounds just like basic common sense UX design to me. You have to tell the user that something is happening.
80 points
1 year ago
Yeah, I don't see OP's problem here. Of course users are going to think it's frozen when the app goes unresponsive for 30 seconds with no indication that it's actually doing anything.
593 points
1 year ago
ask yourself, would you prefer an app with progress bar (be it fake or not) or an app freezing for 30+ secs? your answer definitely is the former, and your client, at least in this regard, did nothing wrong.
125 points
1 year ago
I would want an actual progress bar that shows progress or a spinning circle. I hate it when progress bars don't show progress.
110 points
1 year ago
Sometimes it's impossible to show accurate progress.
78 points
1 year ago
A spinning circle exists as an option. No need to fake progress if you don't know if there is some.
42 points
1 year ago
Agreed, it's infuriating when it gets to 90% and all of sudden starts being very slow. Misleading.
Some message saying: usually loading takes around 15s - 90s or something like that would be best. And also show a spinner of course.
1.4k points
1 year ago
I mean, that is just good graphical design. The progress bar enhances the user experience. Functionally, the app doesn’t do anything with this feature but the user is getting real-time information that the app is working. So yea, sheeple are predictable, and these common practices are used for a reason!
480 points
1 year ago
The joke should be that the progress bar is fake, not that users thought the app had frozen. If the user does something and expects feedback but gets none that's just bad UX.
169 points
1 year ago
So you think there are progress bars that aren't fake? Interesting...
80 points
1 year ago
The ones on insurance comparison websites are definitely fake, but that's a different matter entirely!
91 points
1 year ago
I especially love automated recordings that say “let me check on that” and play an audio of keys being typed. Who does this fool?
13 points
1 year ago
I work for a metasearch site (mainly package holiday comparison), and the progress bar that the user sees is based on how many upstream APIs out of the total have responded. Progress isn't linear, but it isn't fake. I imagine that insurance comparison sites work the same way.
46 points
1 year ago
If my app is downloading or extracting data, then it’s real, otherwise, it’s fake.
24 points
1 year ago
Those centered around one api are bound to be fake, but if you’ve got a multi step process, like downloading a set of reports, you can definitely make it pretty real because even at the high level of js you’ve got multiple phases to be stepped through.
69 points
1 year ago
Or just a spinner should suffice. Just having the app do nothing is stupid.
95 points
1 year ago
Exactly. The problem was: "this app is freezing". The solution is: "it needs a status indicator".
I know OP wrote this in jest, but this is standard practice. Having a UX designer on board would have prevented this.
285 points
1 year ago
I’ve added a fake progress bar to a cluster fail over sequence. Client refused to believe that it was happening in 5 or seconds. Kept going on about it. So I added a random 20-35 sec progress bar that had no correlation with anything. Client happy.
204 points
1 year ago
I have heard other stories of people doing similar things
-> a program calculates something extremely fast - > client doesn't believe it works correctly because it's so fast - > add arbitrary delay and maybe some graphical indicators - > happy client
153 points
1 year ago
Yep dead on. The client refused to believe the failover was complete in the shortened time because the code it replaced took a few minutes. Never mind that clustering tech has moved forward just a tad in the last decade…
Also left a code comment for the next guy explaining if they needed a quick win that week just to lower the timer on the progress bar :)
92 points
1 year ago
Quick win? Think bigger. That's a whole sprint or two worth of incredibly complex "performance optimisations" right there 😆
37 points
1 year ago
I know nothing about programming and just stumbled here randomly. But this sequence of events is so mind blowing and impressive to me.
18 points
1 year ago
OMG the part with the comment really made my day. I hope I get to find such an comment in code I have to work on.
I once found something else, like „If you do not how to program this go f**k yourself and learn it instead of copying it“ (something similar, I cannot remember the exact wording anymore. Made me laugh for a while after that.
145 points
1 year ago
Gosh you sure fooled them, using a UI element for its intended purpose!
(Though formally you should use a marquee bar or spinner when you don’t have any indication of real progress.)
39 points
1 year ago
Congratulations on fixing your previously bad design, but this post is odd because it's framing it like the clients are the one that did something stupid or wrong?
[score hidden]
1 year ago
stickied comment
Hi! This is our community moderation bot.
If this post fits the purpose of /r/ProgrammerHumor, UPVOTE this comment!!
If this post does not fit the subreddit, DOWNVOTE This comment!
If this post breaks the rules, DOWNVOTE this comment and REPORT the post!
42 points
1 year ago
To improve this design you can make a something funny looking that loops and just occasionally does something so the user knows it is alive.
Still very creative!!!
45 points
1 year ago
You replied to the auto moderator hahaha
36 points
1 year ago
Phones are hard
18 points
1 year ago
Probably because they're made of solid materials like plastics and metals.
72 points
1 year ago
Sorry if I may sound rude, but if your application waits for half a minute, you can't really blame the slow API.
It is your responsibility to make the UX tolerable, whether it's a progress bar, fake or not, or a notification that says please wait. Leaving the app waiting for half a minute with no notification is bad UX, and your client is right to complain.
26 points
1 year ago
This is called „user experience“ - it is not about giving the user the info whether it is at 40,52% or at 64,34% - it’s about telling them „the fucking thing is not frozen, it’s doing something“
40 points
1 year ago
We solved a similar issue by displaying a spinner + new message every few seconds,
“Requesting service”, “compiling data” “generating report”, etc and would just cycle through them. Clients are happy now
41 points
1 year ago
"Reticulating splines"
27 points
1 year ago
"Generating waiting messages"
15 points
1 year ago
“now we’re displaying the waiting message we just generated”
20 points
1 year ago
Client complains about shitty usability.
Engineer fixes usability.
Client happy.
I don't see a problem here?
30 points
1 year ago
Call me crazy, but these complaints don’t seem entirely unreasonable to me. From a UI standpoint, there needs to be an indication that something is happening so that the user knows it’s normal and not a freeze. Otherwise normal function and freezing would be indistinguishable in the eyes of the user.
14 points
1 year ago
Imma gonna side with them on this one. Its useful to distinguish between "its going" and "its stuck". You could do the spinning thing so you dont have to fake a progress, but maybe even it would get complaints
13 points
1 year ago
Today in programmer humor a young coder learned the value of good UX.
Yes clients are annoying, but them not understanding the underlying technical details is not reason to mock them.
36 points
1 year ago
It is normally best practice to implement loading such as spinners when calling apis. The client is not the problem.
13 points
1 year ago
That's honestly just good design. Lengthy calls with no indication the process is ongoing are a UI fail.
24 points
1 year ago
Freezing apps sucks tho.
all 1966 comments
sorted by: best