5 ms·
The perpetual spinner thing happened at my last job too, and I developed the opinion that putting a spinner into your site at all is a sign of incompetence. For
by ndriscoll 2y ago
The perpetual spinner thing happened at my last job too, and I developed the opinion that putting a spinner into your site at all is a sign of incompetence. For any normal CRUD app, it should take milliseconds to do whatever task. Even with network delays, 150 milliseconds is a reasonable upper bound for end-to-end processing. If you have an animation at all, then your thing is either ridiculously slow or broken. Either way the animation is a crappy attempt to paper over a bad job.
- bluefirebrand 2y ago> For any normal CRUD app, it should take milliseconds to do whatever task. Even with network delays, 150 milliseconds is a reasonable upper bound for end-to-end processing This is only really true with stable, high speed internet connections. We still cannot take for granted that everyone has that, especially not in rural areas and double especially not on mobile devices
- akdor1154 2y agoAnd when your users are in the same continent as your backend.
- maximilianthe1 2y agoAlso, inside buildings in very urban areas
- rapind 2y agoAlso in my house in the first world because our telcos are an order of magnitude worse than third world telcos.
- n_plus_1_acc 2y agoHello fellow german
- nayuki 2y ago> my house in the first world because our telcos are an order of magnitude worse than third world telcos Hello fellow Canadian
- RHSeeger 2y agoWhere I used to live, in NY (not NYC, but close to _a_ major city), I had to go out onto my front porch to use my cell phone. It wasn't a great signal out there, but it was better than the _no_ signal inside my apartment.
- deleted 2y ago[deleted]
- ndriscoll 2y agoAt least on my mobile, I get ~100 ms ping to most things. Admittedly I don't use it very often so it's hard to have a real world feel for how frequent things like dropouts are, but that's mostly because data costs a lot. That kind of also ties into developers doing a bad job though (e.g. sending me 10 MB of who knows what when the task (like paying for parking) fundamentally should be doable with a few kB, most of which are the TLS handshake). If they didn't do that, their thing would be instant with 3g speeds. Most CRUD generally just doesn't need a lot of data to actually accomplish the desired task. Satellite Internet will be slow, but should still be well under a second? I'd still expect that even extreme cases, you wouldn't expect a spinner to complete a single revolution. So it still seems unnecessary. Anyway, I'm generally on a reliable 300 Mbit/s connection where my pings are more like 20-70 ms, so I suppose you could alter my statement to "if I see a spinner, I interpret it as incompetence".
- jagged-chisel 2y agoSo many places in apps just wait for no reason. Let's take a hypothetical situation: Suppose you're doing gig delivery. You're delivering to two customers in the same neighborhood on the same run. You drop the first order, take your photo of the drop, and the app spins. It's waiting for the photo to be delivered before it moves on. You can't get directions to the next customer until the app moves along. Why can't it just take the photo, take the text description, and hold that until service is better? Just give the driver the map, and upload the other stuff when you can. I have similar issues with every app. It seems like every user interaction, every button press requires a round-trip to the server before the app moves to the next step. There's no reason for this. I wager that every app can keep its UI and the user's data locally, and send and receive teensy data updates. But all "the best" software development employees (that they claim their hiring process hires) in these companies can't seem to work that out.
- bee_rider 2y agoThat’s bizarre. The whole point of having an app instead of a website is to have more processing occur locally, right?
- jagged-chisel 2y ago> The whole point of having an app instead of a website is to have more processing occur locally, right? One would think this is the case. I agree it should be. > That’s bizarre. Unfortunately, it's not. It's normal operation.
- ponector 2y agoWhy is it so? The whole point of app is to gather your info from the phone and to send you tons of notifications. And don't forget mandatory updates, when you open an app and cannot use it without updating to the latest crappy version.
- roughly 2y agoThe whole point of having an app is to collect data, show ads, and “engage the customer with the brand.” Any additional capabilities beyond that are incidental.
- anigbrowl 2y agoThen it should give explicit status information like uploading to server (xx%)...OK waiting for response...delayed. Check again in 3 minutes. Not as cool, but at least somewhat informative. Engineers have a responsibility to push back on this kind of thing, because marketing people frequently do not think about failure modes or actually put themselves in the customer's shoes.
- kristianc 2y ago> marketing people frequently do not think about failure modes or actually put themselves in the customer's shoes It’s literally the job of marketing people to put themselves in the customer’s shoes. If engineering isn’t looping in marketing on UX challenges, or if marketing is too focused on top-of-funnel vanity metrics to engage deeply with product usability, things fall through the cracks. But that’s a company culture issue, not a marketing deficiency.
- anigbrowl 2y agoIt should be, but it isn't in my experience. Marketing people care about onboarding and engagement numbers, and are a major driver of dark patterns - everything from popups to moving the 'close dialog' icon to unintuitive places like the bottom left of unasked-for video embeds.
- brookst 2y agoMassive over-generalization. I’m sorry you only worked with terrible, unethical, incompetent marketing people. There are good ones, just like there are bad programmers who do all sorts of terrible and dumb things without creating universal truths about programmers.
- anigbrowl 2y agoI don't think so; I said marketing people frequently do bad stuff, which is not the same as saying they're all bad. I stand by 'frequently', because just look at how much terrible adware, clickbait, spam etc there is on the web. It's a Gresham's law-type situation. Of course marketing people do a valuable job in terms of figuring out how to sell things and minimize the gap between producers and customers. But - just like engineers - there are lots of cynical and amoral people who work in that industry who make things worse for everyone else. By contrast, I can't think of any society that is suffering because they don't have enough advertising.
- mihaaly 2y agoIt sucks to live with a dial in nowadays.
- mark-r 2y agoSome things in the real world simply take longer than milliseconds; this is not a failing. I'm working with a system that takes over 10 seconds to get a list of wifi access points, and you bet we throw up a spinner while that's happening. Now of course if the spinner is merely cosmetic and doesn't represent any actual work going on, that can be a problem especially if the process you're waiting for dies.
- wayvey 2y agoMonitor the process if it fails hide spinner, show the user an error and provide a Retry button to restart the process :)
- andai 2y ago>150ms Server in Australia?
- worik 2y ago> For any normal CRUD app, it should take milliseconds For most CRUD apps Sometimes wheels within wheels can slow down even modern computers.
- ChrisMarshallNY 2y agoNah. We have a spinner, but I also have a timeout handler. The reason is that the app's backend (and many of the servers on which it depends) can be hosted on the lowest-tier-dogshit-shared-hosting plan. I would love to have a better backend server, but we are a nonprofit, and can't afford better. This app would be a lot faster, with a more robust backend. But error handling/reporting is a true art, and should never be an afterthought. In my experience, I need to start thinking about error management, as soon as I start planning. In my experience, the best error handling is to not have errors, and, quite often, good UX is the answer to that. If the user doesn't do something that might cause agita, then they don't get an error.
- lucb1e 2y ago> I developed the opinion that putting a spinner into your site at all is a sign of incompetence This so much. If your site is so slow that it can load what is usually a video file (non-SVG animated graphics) before it can load the text on the page, then you have failed at making a website Looking at Discourse® here, and iirc Google AMP did something similar except it was a blank page for 8 seconds (until it hit a timeout) if you blocked their tracking
- noduerme 2y agoI think it's an art, not a science. The alternative to a spinner is to show some sort of error to the user; a connection error or something specific that went wrong that they can report. Sometimes this is useful. I frequently put spinners just in the individual components that need loading. I tend to use them more for large data loads that will hang around awhile, so I have to do fewer round trip transactions. Loading a list of a customer's last 1000 transactions? I'm going to bring on all that data at once, not keep calling the server as you try to scroll through it. I want user actions to have an INSTANT consequence, not 150ms latency. So even if not a spinner, that button needs to gray out and something should affirm that they tapped it. Also, spinners are very useful for me in tracking down bugs. When a few customers report stuck spinners in the same day, I can almost immediately determine if some particular action is failing or whether it's a server issue. Even better, they can send screenshots helping me isolate the problem. If no stuck spinner and the app just freezes, they reload it and forget what exactly they did to trigger an error. And endpoints do go down, nothing has 100% uptime. I want to FEEL how long a call is taking on a heavy operation on a busy day.
- deleted 2y ago[deleted]
- RHSeeger 2y agoNot sure if it counts as CRUD but, when downloading files, it can take a while to prepare the files. If that while is long enough the user may thing something isn't happening, and a "I'm working on it" signal is not unreasonable.
- strken 2y agoAs an Australian whose parents have 300kbps internet, please continue to add spinners to your apps. The round trip time to US west is 270ms for a good connection here. That 270ms doesn't include any processing (maybe 60ms or so) and the wifi tax (another 20ms). Then your round trip time gets doubled by HTTPS, which goes up to tripled if you're sending more than 14 KB of data. This means it takes a full second to load most websites or apps, and this is further compounded by slow server code, daisy-chained sequential calls, living further away from the undersea cables, and bad infrastructure.
- olowe 2y agoImagine the entire UI of an email client becoming inoperable, diplaying "loading..." and a spinner every time you send mail. We don't do it now nor did we do that when 300kbps connections were more common. Spinners are a crutch for undercooked, bad software.
- wayvey 2y agoKeep in mind that spinners can also be used (as well as other indicators) that something is being processed client side, e.g. rendering a video and if the total time can't be estimated a spinner is reasonable.
- nicoburns 2y agoSpinners don't have to replace the entire UI or make it inoperable. Classic email clients did indeed have a losding indicator when doing things like a "send and receive" operation.
- strken 2y agoFrom what I remember of Thunderbird and Outlook, they both showed a visual loading indicator somewhere in the UI. Am I missing a detail of terminology here? By "loading spinner" I meant it in opposition to "do absolutely nothing for three full seconds and make me refresh the page with the network tab open." I didn't mean to suggest any particular indicator of a pending network request, only that there should be an indicator.
- silon42 2y ago150 ms is really bad... in mid 90s, 50 was considered the upper limit before some "busy" indicator was to be shown... these days, I'd consider 20ms to the limit of "good".
- lotsoweiners 2y agoI used to work with a web developer in state govt who purposely coded a couple seconds delay before data was displayed so that the spinner would always show. He was actually one of the best developers on the team ironically.
- cyanydeez 2y agoOur state implemented a regulatory report website. It took 10 minutes to file a quarterly report thats basically 5 screens and 3 check boxes. I emailed IT About it and they replied "try restarting your machine" I then produced a video of the process for them. I am 99.9% certain its just a poorly written SQL query, but no one responsible knows where that code is.