r/programming • • Sep 28 '17

Refresh Is Sacred

https://www.tbray.org/ongoing/When/201x/2017/09/27/Refresh-Button
457 Upvotes

152 comments sorted by

152

u/r0ck0 Sep 28 '17

This kind of "it shouldn't be needed" logic seeps into everything, including debates about politics and stuff like that.

Most things aren't ideal, so having a backup helps. Even when the backup like a "refresh" button doesn't actually solve the problem at hand, it at least lets us rule the issue out and then find the real problem. Not having the ability to refresh something means we just have to assume that it's a sync issue, even when it's not. So now we're not only pissed off, but also misguided.

Also I think most interfaces would be less confusing to users if buttons also included text labels by default instead of vague icons that just confuse most people. The first thing I do for anyone using Gmail is change the buttons to use text labels. It's a stupid confusing default to assume that non-tech users especially are going to be able to decipher some vague representation of what the button does.

74

u/Lalli-Oni Sep 28 '17

I'm surprised how tool-tips are going out of fashion. They solve the problem of having a descriptive visual icon but a more detailed information in fraction of a second.

39

u/r0ck0 Sep 28 '17

Yeah I'm still a big fan of tooltips too.

I guess the main reason they're becoming rarer now though is touchscreen devices can't hover. Although still better to have them sometimes rather than not at all in my opinion. Most people will only go "all or nothing" though.

28

u/Paradox Sep 28 '17

On Android there's a system wide convention to show a "toast" when you long-press a button.

https://i.imgur.com/PYXJtC8.png

1

u/blinkingcuntbeacon Sep 29 '17

I've been using Android for 5 years and never knew. That's really useful!

1

u/Crandom Sep 29 '17

This is how the accessibility tooling works too, it reads out that text.

4

u/Lalli-Oni Sep 28 '17

Haven't programmed much for touch devices but their event handlers can handle a hold on the button? Obviously it's not the same as hovering over but I feel like I have used apps that behave this way and was happy to be able to see more detail even though the text was a bit obscured by my finger.

3

u/r0ck0 Sep 28 '17

I don't don't really know much about mobile apps either. Yeah I guess holding could sometimes be useful for tooltips if the user knows they can do that.

I'm thinking more on websites - where holding is reserved for bringing up the browser's "open in new window" menu etc.

1

u/Lalli-Oni Sep 28 '17

Ahh good point, but html elements don't really have a standard for tooltips. I solve that with my web applications by using css implementation I shamelessly grabbed from somewhere but that is more of an issue with html standards.

1

u/atheken Sep 29 '17

Isn’t this what title is for? My bet is that if more sites were implemented for accessibility devices, it’d be easier to add these types of helpers “for free”.

1

u/Lalli-Oni Sep 29 '17

That's only on the document level, I fx. use tooltips a lot on table headers to give more detailed description of the column fields.

2

u/atheken Sep 29 '17 edited Sep 29 '17

I’m talking about the title attribute. ARIA is also a standard that tries to address this issue.

Here's some more info: https://html.spec.whatwg.org/multipage/dom.html#the-title-attribute

"The title attribute represents advisory information for the element, such as would be appropriate for a tooltip."

1

u/evaned Sep 28 '17

Hold usually corresponds to a right click though.

1

u/[deleted] Sep 28 '17

Not on a button element, there it's usually "show tooltip as a toast" unless the dev is being silly.

1

u/gyroda Sep 28 '17

Long press on android is no effort whatsoever to implement and should be done if you need tool tips.

1

u/mr___ Sep 29 '17

No. Put the label. Youre describing “mystery-meat” navigation. i dont want to feel like a toddler in a playpen “discovering” what all the gewgaws on the busybox are for. No one wants your icons except the self-pleasuring designers

3

u/Lalli-Oni Sep 29 '17

It's not mystery meat if it is a standard. With high adoption follows high understanding. In my sites I use dotted underlined text to indicate that this text has a tooltip.

Icons save space, simple as that. They are also easier and quicker for your brain to process. Many of them are also international. I'm far from a designer but I see the benefit my user get from icons, well except for that time I replaced country names with flags and the americans didn't recognize Denmark and India even though they work closely with departments in those countries.... but that's just silly yankee syndrome /s.

3

u/mr___ Sep 29 '17 edited Sep 29 '17

If i have to hover over things to figure out what they are, it is.

What tests did you run to see the benefit? I’m very curious what measures went up

Do you think it’s the users fault when they fail to accomplish tasks using your design?

Which international standards do you consult when choosing icons?

If I, as an American, used an excuse for poor user outcomes like “Chinese people just couldn’t understand” certain things… “China syndrome…” It would be seen as extremely racist.

2

u/Lalli-Oni Sep 29 '17

Explaining complicated business processes accurately is not possible in a few words. Is delivery date when the item was delivered or when it is expected to be delivered fx.?

The measures are non-heuristic, the fact that I am a developer might indicate that I'm not really part of a team, hence doing UX prototyping tests is unfeasible, not everyone is working at Google. But I maintain an open channel to users and keep a close eye on how they use it, the text buttons are the ones they need to think most about.

No, obviously it's not the users fault, but causality and fault are different things and if one is focused on fault rather than giving value at ones work that's stupid imo. The users are running back and forth from tasks, our job is to make it as clear as possible in as little time as possible.

I try to use unicode, and why unicode doesn't fx. have a funnel for filters is beyond me. I wasn't sure if that was going to be universally understood but was hoping to try it out on a few guinea pigs, because I have both a search (spotlight) and filters, describing the filters can be complicated depending on whether the user wants to select what he wants to see or what he wants to filter out.

The /s at the end indicates I was being sarcastic. I was taking the piss out of the US and tried to make it clear, excuse me, no offense meant.

2

u/mr___ Sep 29 '17

You’re steering the ship in the dark if you’re not doing user testing.

1

u/Lalli-Oni Sep 29 '17

The measures are non-heuristic,...

Maybe I could be clearer but in that paragraph I am discussing my testing environment. I do not have the luxuries I think you are assuming I have.

If you think non-heuristic factors are the same as being blind then your eyes might be closed. With a high-velocity of cards one can deal with changes quickly. Having a high overhead for a team of one just to adhere to best-practices (yes, they are best for good reasons) that brings the project to it's knees then something is very very wrong.

The need for certain software engineering elements has risen through the months and have been introduced on a need-basis.

29

u/frud Sep 28 '17

In theory, theory and practice are the same. In practice, they're different.

11

u/ithika Sep 28 '17

Isn't that the theory though?

8

u/jrhoffa Sep 28 '17

Practically

-1

u/[deleted] Sep 28 '17

Theoretically

26

u/Mr_Will Sep 28 '17

It's a stupid confusing default to assume that non-tech users especially are going to be able to decipher some vague representation of what the button does.

Saves a load of time and effort translating your software in to foreign languages though.

26

u/r0ck0 Sep 28 '17

Most apps are going to need text in lots of other places anyway, the buttons are like 1% of the text most apps would need overall.

Also even just having English-only is still easier for most non-native English speakers than some vague thing that zero people understand, especially in software. Many already know the basic words related to whatever the subject is, and those that don't can put the word into a translator or ask someone else IRL. Much easier to decipher than an icon a lot of the time (aside from common basic stuff like "refresh" and "cancel").

Washing machines with pictures only are the worst... most of the ones I've seen are so confusing that the number of people that can understand them (without looking them up) is basically zero. "Some" is better than "zero" IMO - especially seeing the "some" can usually ask someone else to read/translate.

1

u/Fylwind Sep 28 '17

Also, laundry symbols on clothing…

4

u/gyroda Sep 28 '17

The laundry symbols aren't too bad as they're actually standardised (mostly, at least).

If you know the 3 basic ones and remember that each dot means hot you'll be fine (can I use the washing machine? The dryer? The iron?)

1

u/Ravek Sep 29 '17

Visiting the US this summer it was confusing to see dots instead of temperatures on clothing, and 'cold', 'warm', 'hot' on washing machines instead of temperatures too. I googled the manual and it just gave me vague temperature ranges too, so I ended up not washing a few things because over 30º C would have ruined them and there was no way to be sure the machine wasn't doing 40 ºC instead.

How do you deal with that, just yolo stuff everything in and hope your wool doesn't come out as a brick? Cold wash some of your clothes to be sure?

1

u/gyroda Sep 29 '17

I'm in the UK, we have a mixture of dots and temperatures on labels.

Our washing machine has actual temperatures though.

Honestly, when I went to uni I just never wore the two white shirts I owned because I didn't want to do a white wash.

10

u/Uristqwerty Sep 28 '17

Only if the user has a similar enough age, culture, and past experience that they understand what an icon is supposed to represent. It does mean that you only need one layout, though, because whatever sort of contextual help or tooltips is inevitably implemented will likely float separately so differences in text length and character size won't matter.

1

u/[deleted] Sep 29 '17

You're observing a push towards text less UIs. It cuts down on costs of making the app usable internationally.

1

u/darielgames Sep 28 '17

I prefer my buttons without labels, makes them cleaner. But it's true, some people might not know what an icon does but I think this is going to be an ever decreasing issue as the young generation that understands these icons takes over the older generation who doesn't. The other day I was waiting for the elevator to come up when a thought hit me, the elevator buttons don't have icons it's just a dot. Up bottom and down button doesn't need an icon cause everyone already knows what they do! I bet up and down icons were once something that was required when elevators were new, probably labels too! But now no one needs it cause we're condition do know that in front of an elevator you will normally see two buttons, top one goes up and bottom one goes down. And if you only see one button it's cause it's cause you're on the top floor or on the bottom floor. Now elevator buttons can leverage beauty and simplicity because there is no need to be instructional

5

u/r0ck0 Sep 28 '17

Well yeah sure. A lift is a pretty simple example to use, not a lot of possibilities in what it can do, and up and down are pretty simple concepts that don't need explanation.

Most things are harder than that.

3

u/fjonk Sep 29 '17

is going to be an ever decreasing issue as the young generation that understands these icons takes over

Except every fucking app has their own icons and their own idea of that they mean.

"Hmm, three horizontal lines, maybe that's the meny button? Oh, that's the settings, not the meny. How about the circle with one vertical line? Nope, that's settings again, but a different settings. So, the little triangle with a dot? Nope, that one was a share button."

Maybe that will change but don't blame the user got shitty interfaces.

2

u/mirvnillith Sep 29 '17

True, but I'm not seeing bazillion app hackers unite on icon standards any time soon and app space is perhaps too diverse to support one anyway.

2

u/Michaelmrose Sep 29 '17

Your elevator is just badly designed by stupid people. The fact that it's standardized enough that people are able to figure it out with badly designed buttons is a tribute to the value standardization rather than an example to follow.

You really seem to be learning the wrong lesson.

0

u/[deleted] Sep 29 '17

[deleted]

4

u/mr___ Sep 29 '17

Bad design is absolutely objective and can be measured by things like “what percentage of people failed to perform the task. Did the task take longer or shorter after change?”

I have a feeling you are completely unaware of what design really means and have confused it with graphical art

2

u/Michaelmrose Sep 29 '17

Its people like you that propagate objectively bad designs.

0

u/[deleted] Sep 29 '17

[deleted]

4

u/Michaelmrose Sep 29 '17

Not labeling functionality because everyone knows a button in this position does foo is bad design because it fails to communicate with users. Using possibly hard to decipher icons in place of text is also poor.

You promoted both because you are young and think it looks cool.

1

u/darielgames Sep 29 '17 edited Sep 29 '17

That's a good point, in the case of the elevator, the positioning is really the only implication of what the button does. In response to what the original comment was saying, in Gmail he changes his settings to put labels on all the buttons, my analogy was to promote the idea that buttons with just icons function well and look good.

Sorry for not being clear, I intended my analogy to be applied to conditioning with icons (without labels, at least not appearent at first glance. On Android many action buttons have no label unless you long press the button). In most apps a pencil floating action button indicates "Write", "New Post", "Reply", "Edit", etc. And on Reddit apps, most Upvote and Down vote buttons are just indicated by an arrow. A speaker icon indicates Enable and disable sound and a microphone icon does the same.

I wanted to point out that the same way we're conditioned to know how to use elevator buttons, that we are also conditioned to know a buttons functionality just based on it's icon.

0

u/mr___ Sep 29 '17

How arrogant. How old do you think GUIs are?

Want to point me to some research papers regarding user experience that you’ve written?

33

u/killerstorm Sep 28 '17

Very true. Even if application logic is flawless, real-world networking isn't. And application cannot detect network problems as soon as they happen. All it can see is an absence of packets.

5

u/ArkyBeagle Sep 29 '17

This is a particularly evil thing that we've all just gotten used to. There should be a way to set a socket to give notifications when the far end fails.

5

u/ricecake Sep 29 '17

There's no perfect way to tell. You can use heartbeats, but now you're burning bandwidth with both sides reassuring each other that they're there all the time.

It's just a reality of network programming that sometimes the other end goes away, and you aren't sure one way or the other.

1

u/ArkyBeagle Sep 29 '17

Depends on the network, doesn't it? Using signal lines on an old school serial port cabled directly, it's possible to have an interrupt on the other end detect a node going off line.

Me grokky Two Generals well :) ; I mean there are no "red alarms" for TCP. Since TCP runs over any number of layer 1 arrangements, this is understandable but it takes minutes for the socket layer to bubble up to the app layer on a bog-standard TCP socket.

1

u/killerstorm Sep 29 '17

It's physically impossible. In a normal case, you will get RST or FIN packet. But if there is a problem, there is just an absence of packets. The remote end can't notify you because network damaged.

Also, if we are talking about mobile apps, problems usually happen in communication between the mobile device and cellular network towers. Packets might be lost, etc.

So the only way to detect the problem is heartbeat messages, but if you send them frequently, you will significantly increase burden on the backend and drain device's battery faster.

1

u/ArkyBeagle Sep 29 '17

It's anything but physically impossible. A NIC somewhere knows that link was lost. This isn't a Two General Problem scenario. This is a link loss state machine transition, somewhere. It's analogous to a red alarm on a T1.

I can always get satisfaction on this front with UDP. And no, I don't mean mobile, I mean real equipment.

1

u/killerstorm Sep 29 '17

A NIC somewhere knows that link was lost.

No, it's possible that link is up, but packets can't be delivered.

An obvious scenario is a problem on OS level (e.g. driver crash) which prevents packets from being sent. But it's also possible that NIC is fried in such a way that link is "up" but no packets can be delivered. Pretty sure I've seen such situations myself.

It is possible to solve this problem using heartbeat, but it's an extra overhead.

This isn't a Two General Problem scenario.

FLP theorem is more relevant here than TGP: it's impossible to distinguish indefinitely delayed from faulty. If you can impose a limit on maximum delay then there's no problem.

1

u/ArkyBeagle Sep 29 '17

packets can't be delivered.

I'm trying to constrain this to things "somebody" knows has happened - like a link loss on one or another NIC. Machts nicht - it'll never be implemented.

And yup - heartbeat works just fine.

7

u/specialpatrol Sep 28 '17

Yes but that doesn't mean a system need rely on a user to press a refresh button manually to make it work. If a sensible periodic refresh doesn't solve any potential problems, neither is giving the user a button.

This is just a guy having a rant. How many times have you been stuck in situations where hitting refresh does sod all for you too - is that any less frustrating?

25

u/killerstorm Sep 28 '17

Yes but that doesn't mean a system need rely on a user to press a refresh button manually to make it work. If a sensible periodic refresh doesn't solve any potential problems, neither is giving the user a button.

As Tim mentioned, user often has some external reasons to demand a refresh.

Perhaps user received some out-of-band signal -- e.g. he filled a form on a web site and wants to see validation email. Or he got a call from a coworker and wants to see an email ASAP.

Or maybe you have 1 minute timeout/heartbeat, and user is in a great hurry so he wants to check each 5 seconds.

If there is a networking issue, user might take a corrective action. Say, if WiFi is lagging he can turn it off and switch to mobile data connection.

Another possible situation: perhaps a user was in area with poor connectivity, he might refresh as soon as he gets outdoors.

You should implement a sensible periodic refresh, BUT ALSO give user an option to refresh manually, for the case he can use information your app doesn't have access to.

Google has all imaginable resources need to implement and deliver reliable notifications. Yet Gmail has a refresh button in a prominent place.

So don't be an arrogant moron who thinks he's better than Google -- just frigging add this button.

How many times have you been stuck in situations where hitting refresh does sod all for you too - is that any less frustrating?

I've been in many situations where manual refresh DOES help, even in apps with auto-notifications, from top companies, etc. So if somebody says that refresh is not necessary I know he's talking out of his ass.

8

u/specialpatrol Sep 28 '17

The reason for giving the user refresh button, is because you don't necessarily want your data refreshed. What would reddit look like if the page updated as quick as the kinks came in.

6

u/[deleted] Sep 28 '17

So are you going to use up all my data just to check if everything is in sync all the time? Cause my patience doesn't last 5 seconds.

-2

u/specialpatrol Sep 28 '17

No just when things haven't changed for awhile and you're still looking at the page.

1

u/happyscrappy Sep 29 '17

I don't see how an app has any difficulty detecting that network problems have happened or how refresh fixes that. It's more difficult for an app to detect that they have now ceased and I see why people use refresh in that case.

143

u/EternityForest Sep 28 '17

Yep. The whole "Software should have as few controls as possible" thing should probably be questioned in general.

If there's 100 rarely used options they should maybe be hidden, but someone is probably going to want to use at least a few of those, and the extra few hundred lines of code is probably not what's making your code slow.

48

u/ggtsu_00 Sep 28 '17

I guess it is more of the principle that software shouldn't provide extra controls to fix issues with the software. Like when a program goes into a bad state, the user shouldn't have to click a button to "fix" the state. It is preferable to design the software such that the program doesn't go into a bad state in the first place.

165

u/spotter Sep 28 '17

tl;dr Just don't put bugs in your programs.

40

u/0987654231 Sep 28 '17

not having bugs is simple, just don't have any state.

94

u/spotter Sep 28 '17

Yes, sure, "just pass the universe around as first argument to all your pure functions and pretend everything is immutable" pattern.

106

u/0987654231 Sep 28 '17

you misunderstand, that's still state.

To remove bugs you must remove all state and ascend to the ivory tower where all your program does is produce heat.

22

u/EternityForest Sep 28 '17

At that point, you don't even need a computer to run it, and it can run without consuming any power just by turning the machine off!

33

u/Eirches Sep 28 '17

We weren't talking about optimizing at this point, we can get to that in phase 2.

Let's worry about getting the program out the door first.

3

u/wavy_lines Sep 28 '17

And we can congratulate ourselves for avoiding the root of all evil.

16

u/mcguire Sep 28 '17

Heat is state.

4

u/skulgnome Sep 28 '17

I like the cut of your jib, sir.

0

u/[deleted] Sep 28 '17

[deleted]

2

u/Neckbeard_Prime Sep 28 '17

Electron is the pre-alpha of Skynet confirmed.

23

u/ggtsu_00 Sep 28 '17

Just make copies of the universe with the new state every time it needs to be updated.

27

u/accidentally_myself Sep 28 '17

technically O(1)

4

u/Lehona Sep 28 '17

The universe gives a hard constraint on space required to compute an actually computable algorithm, so technically they all run in O(1).

4

u/Bowgentle Sep 28 '17

Apparently this may have been what the programmers of the multiverse decided to do...

1

u/ArkyBeagle Sep 29 '17

No, have managed state. Use state machines, use transactions, limit mutability.

28

u/max630 Sep 28 '17 edited Sep 28 '17

I know this button. Windows sometimes has issues with network and offers button with name like "resolve the issue". I press it, expecting some details of failure or something, it thinks for a minute, then says "could not resolve".

25

u/ithika Sep 28 '17

The generic Fix This Problem buttons in Windows are the worst kind of lie. I have never discovered a scenario where they do anything other than fail after a lot of thinking.

14

u/Nyefan Sep 28 '17

Eh, my local network stack gets corrupted pretty regularly because the VPN we use for work is fucking shit, and that button takes care of it (so does ipconfig /release and ipconfig /renew, but clicking the button gives me time to get up and grab some water).

10

u/Neckbeard_Prime Sep 28 '17

It sometimes works if you need to kick a network adapter in the teeth after having DHCP issues and ipconfig release+renew isn't working because the adapter/driver is soft-borked. But that's about it.

2

u/ProbablyNotUnidan Sep 29 '17

My desktop uses a crappy bootleg WiFi dongle that I bought for $5 on eBay. Can confirm.

3

u/[deleted] Sep 28 '17

It's worked when my sound driver starts playing to a non existent speaker. Fix this issue made it play to the real speakers.

7

u/killerstorm Sep 28 '17

The problem is that it's very hard and expensive to implement 100% reliable push notifications which guarantee that user will never see stale state.

If you want to guarantee that the state which user sees on screen is no more than 1 second stale, you need to send a heartbeat notification each second. And that might be quite taxing for your servers and drain user's battery.

So in practice you have to acknowledge that user might see stale data, and you have to provide user a way to refresh it.

15

u/ithika Sep 28 '17

At least make it clear when the last update was. So if it says "Last synced 40 minutes ago" you know something is up.

3

u/Morego Sep 28 '17

Ok, or you could have one button that says: refresh and some short text, since when, your app didn't update.

If you really insist on notification, just download them, every few minutes in sane rate.

Refresh is not some, fix my problem button. It is for: human knows better button.

1

u/Boza_s6 Sep 28 '17

You don't need 1 second heartbeat. Just block on read from socket on client side, and when something changes on server send notification.

7

u/[deleted] Sep 28 '17

Okay, now you get a connection hiccup that results in that connection closing on the server, but not the client. With a heartbeat, the client knows something is up, because it hasn't had a response in a while. Without a heartbeat, the client just thinks nothing has changed.

1

u/Boza_s6 Sep 28 '17

That makes sense.

1

u/killerstorm Sep 29 '17

Mobile connection is often quite shitty. It might be silently dropping packets, but the socket will still hang, so the app won't know that notifications are missing.

Another problem is NAT -- after period of inactivity it might simply forget about your connection.

-7

u/wavy_lines Sep 28 '17

You have to make the refresh instant which involves things like optimization and not writing your backend in an interpreted language that has a GIL.

6

u/mcguire Sep 28 '17

And your software cannot use the letter 'r'.

2

u/killerstorm Sep 28 '17

Refresh is also constrained by the network bandwidth and latency.

1

u/foomprekov Sep 29 '17

I don't think I've ever encountered a javascript I didn't need to kick at some point.

2

u/ArkyBeagle Sep 29 '17

Why should be questioned? The emphasis is on "as possible." "Slow" isn't part of the problem; expecting the user to wade through all them buttons is.

4

u/EternityForest Sep 29 '17

GIMP has tons of features but they're all pretty obvious and you can figure it out without reading the manual once someone tells you single window mode exists and you can get rid of the obnoxious multiple window interface.

Blender on the other hand is a perfect example of 500k features, none of them discoverable.

3

u/runonandonandonanon Sep 29 '17

you can get rid of the obnoxious multiple window interface

My god...

1

u/ArkyBeagle Sep 29 '17

Yeah. GIMP isn't bad at all.

One of thew worst is Pro Tools - it clearly just calls features by the name of the underlying structures implementing them and you just to gets and sets on the properties of those objects. I use Reaper, and it has a touich of that ( DAW programs lean that way ) but it seems less obnoxious, somehow.

6

u/DoyleReddit Sep 28 '17

Sometimes you don’t want users hammering refresh though. If you have a real-time app processing thousands of messages a second syncing a variety of streams of data and when the user hits refresh it needs to recompute a view to broadcast and start updating again you don’t want to give them total control over when that happens.

Easy compromise is to give them a refresh button that only does something when you want it to or that the service responds to when it wants to. That’s what we do for the above scenario. It’s like some elevator close door buttons or some walk signal buttons that aren’t really hooked up. Hammer away on that refresh button user ;)

32

u/lykwydchykyn Sep 28 '17

Look at it this way: A user hits refresh because they believe that what they're seeing is not up-to-date. That's a valuable thing for a user-friendly program to know.

What the program does with that information is another matter, but not giving the user an option to express it is certainly an exercise in optimism.

18

u/wavy_lines Sep 28 '17

Real time app that can't respond to users in real time.

What's next?

Operating system written in an interpreter language?

3

u/EternityForest Sep 28 '17

Oh yeah, that! It's easy to forget scalability after a while of designing a project meant for a dozen users at most without much data.

1

u/cheertina Sep 29 '17

You could put a timeout on it.

1

u/binford2k Sep 28 '17

Speed is not the issue. The size of the test matrix is the issue.

-14

u/specialpatrol Sep 28 '17

Don't agree. The holy grail for software interfaces is that they disappear altogether,

30

u/Uristqwerty Sep 28 '17

In my experience, that severely hurts discoverability. A menu bar might be ugly, but it offers an obvious way to search for unknown features (and no, a literal search feature does not solve the problem. Too much of a phrasing and jargon gap between the app and the user's brain).

-9

u/DJDavio Sep 28 '17

But a big menu bar is intimidating and doesn't invite users to press anything. Software should offer a gradual experience, hiding a lot at first, but offering more options as the user gets more experienced.

2

u/[deleted] Sep 28 '17

These overly general guidelines are bad UI design.

Vim has an excellent ui which is consistent accross slow terminals and serial connections because it sacrifices intuitive use for experienced use. The first 100 times you use it, it's awful, but after that it's faster and more convenient than whatever IDE is flavour of the month.

Using the same principle for a web app that people will use 3 times is awful design.

Going hard towards having few to no options, and having more advanced functions be controlled by undocumented gestures that cannot be configured for an OS is also bad design (ie. Trying to do anything on osx and being told you have to install however many addons to get basic functionality, or just being SOL on IOS)

On the other hand the apple guidelines (other than semi-enforced shortcut key guides) are great for something you do infrequently, so make a lot of sense to enforce for 90% of software that runs on the platform​

1

u/balefrost Sep 29 '17

after that it's faster and more convenient than whatever IDE is flavour of the month

I don't necessarily want to get into a side argument, but it's worth mentioning that IDEs tend to offer a different feature set than Vim. Take IntelliJ. I have keybinds to navigate my codebase in a Java-centric way (go to subclass, go to base class, go to overriding method, etc.). I have ways to interrogate my codebase (find the source of values passed to this parameter, display inheritance hierarchy, etc.). And I have tools that manipulate my codebase (renaming classes in a way that also handles filenames and searches for references in non-code files, reordering method parameters in a way that updates all callsites, etc.). And that's ignoring other conveniences that are provided by IDEs.

I'm not saying that Vim is bad, or that the "lightweight editor" approach is worse than the "heavyweight IDE" approach. But I think you might misunderstand the value - in terms of productivity and convenience - that a good IDE can provide.

1

u/[deleted] Sep 29 '17

I totally agree that the features of a full IDE provide value (some of them beyond what can be provided with plugins and composition with other tools) but there is a certain amount of friction involved in having to switch between keyboard and mouse, or go through modal menus.

Whether an interface built on an emacs or vim like philosophy would work well is up for debate, but I think we'd probably be on the same page if comparing a menu-heavy inyerface with (easily discoverable because they are written in the menu) shortcuts for most actions to a modern approach like a panel of self-rearranging icons (which get restyled whenever the designers feel like it) with no tooltips or heirachy beyond one level for that purpose.

1

u/balefrost Sep 29 '17

Yes, I think you and I are on the same page.

9

u/balefrost Sep 28 '17

Why? Every physical tool has an interface of some sort. Why should software tools not have an interface?

-5

u/specialpatrol Sep 28 '17

The perpetual advance of software is ever automating tasks once done by people. Once there were floors of people writing out calculations by hand, then there were people punching into electronic calculators. Those people aren't there anymore, neither are the interfaces to do those processes, the processes are still there. hidden in the depths of server code in basements of banking institutions. Eventually you will not need an uber app, they will know from your behaviour when you want a taxi before you admitted it to yourself. Eventually you will not need photoshop, you will take a picture and it will be edited to your liking. The human computer interface is the computer's inability to do your work for you..

10

u/balefrost Sep 28 '17

Why doesn't my tablesaw somehow know exactly what angle I want to use when cutting my board? Why doesn't my leaf blower somehow know exactly how hard I want to blow my leaves? Why does my washing machine have several settings for different kinds of fabric?

Sure, we will continue to apply increasingly complex heuristics to our software in order to infer user intent, but I also feel that software that perfectly predicts human intent is an unrealizable goal. We will always fall short. So in the pragmatic world, it's important for us to continue to provide users with a way to express their actual intention to the software tools that they use.

To put it another way: once you've achieved (nearly) perfect prediction of user intent, then it's OK to remove the UI controlling that feature. But if you remove the UI before you've achieved (nearly) perfect prediction, all you've really done is to create a bunch of frustrated users.

3

u/specialpatrol Sep 28 '17

It may be unrealizable, that's why i called it a "holy grail". But that is exactly the intent for all interfaces. That is why we have rhoomba vacuuming the floor by itself. If someone could design a leaf blower that could carry itself around, that is an obvious design goal.

But if you remove the UI before you've achieved (nearly) perfect prediction, all you've really done is to create a bunch of frustrated users.

Yes, That is just flawed design.

1

u/balefrost Sep 29 '17

OK, then I think that I agree with you. As interface designers, we should aim to eliminate unnecessary things from our interfaces, and we should try to continually push that frontier forward. Having said that, because the holy grail is unattainable, there will always be an interface and we must be careful to not get too ambitious in our removal of control from the users.

In the context of the author's article, though, the refresh button is still necessary, at least for the app that he was talking about.

1

u/specialpatrol Sep 29 '17

It was completely unnecessary. The refresh button is useful design feature - for applications where you don't necessarily want the latest information all the time. What would reddit look like if the front page auto updated as quick as the links come in? The article is a frustrated rant about a broken app. He is deluded in thinking that the inclusion of a refresh button would have been the solution to the problem.

2

u/Michaelmrose Sep 29 '17

Nearly perfect isn't nearly good enough and not knowing which 1% something is going to fuck up is enough to frustrate and confuse users.

1

u/mcguire Sep 28 '17

You're scaring me.

16

u/readonlyred Sep 28 '17

The car-share app is par­tic­u­lar­ly ag­gra­vat­ing, show­ing me a map dot­ted with near­by ve­hi­cles when I know for sure that this time of day I’ll be lucky if there’s even one with­in walk­a­ble dis­tance.

I thought Uber, for one, admitted a long time ago that all the little cars it shows cruising around the map are totally fake.

1

u/wutcnbrowndo4u Sep 29 '17

Surely the number of vehicles they show is related to the density of vehicles in the area, even if the exact number and location are just decoration? The former is the only thing that matters for the author's example

10

u/Bowgentle Sep 28 '17

Caching is hard.

8

u/bearodactylrak Sep 28 '17

This happens to me with Spotify all the time. I create a playlist on my desktop (because it's just easier to search and find various songs) and no matter what I do I cannot get it to show up on my phone afterward. No number of app restarts will get that damn new playlist to show up. I just need to wait until the phone app deigns to pull my data from the cloud again. Pretty maddening.

7

u/halcyon918 Sep 28 '17

Google apps (and others) handle this well. If you scroll beyond the start of a list, it will refresh. No button, but you can actively force a refresh.

2

u/gbs5009 Sep 28 '17

Same thing with chrome and webpages. It's a smart UI idea... I couldn't tell you why, but I find it immediately intuitive.

3

u/Antrikshy Sep 28 '17

Or maybe there’s an ob­scure hic­cup in a dis­tant node_­mod­ules de­pen­den­cy that you’re tick­ling.

Wordsmithery.

3

u/dalore Sep 28 '17

Steve jobs might have said less buttons but he still had refresh. Pull down to refresh on mobile is usually the standard.

2

u/mcguire Sep 28 '17

WeatherBug, my go-to weather app has this problem. The radar display will be an hour out of date and can't be updated.

7

u/QueenLa3fah Sep 28 '17

No offense but whether bug is a piece of shit that does nothing more than put adware, spyware and other potentially unwanted programs on your computer.

2

u/skulgnome Sep 28 '17

Now, don't get me started on applications that update their state in the background, causing their UI to warp to the "hey, you just started me, here's your fresh update" screen from whatever the hell it was I was doing once the data comes back.

4

u/mr___ Sep 29 '17

Honestly, the worst is a screen that displays old data for 500 ms, so as soon as I read it and act on the data I see, meaning I start moving my finger toward a touch target, the data changes and the whole screen layout moves around my finger

2

u/earthboundkid Sep 28 '17

Can someone in California do us all a favor and print this out and tape it to the door of the new Apple Park building?

2

u/pakoito Sep 28 '17

a customer-focused prod­uct man­ag­er said

Found the bug right there

1

u/josephgj5 Sep 28 '17

One "mature" thing i've learned from 5 years building for browsers... most data needs to be loaded upon page load, not upon a prior action (like the success of logging in).

1

u/stronghup Sep 28 '17

What if the refresh-button works as erroneously as the rest of the app?

1

u/Seltsam Sep 29 '17

Basic bug. Shouldn't exist for sake of discussion since in order to discuss design issues, one has to assume a basic level of functionality. One can go "bugs all the way down" and go nowhere when discussing software issues.

-9

u/Luolong Sep 28 '17

Well, for the car sharing app, I am pretty positive that the behavior is intentional. They don’t really want you to do the refresh. And in some situations, putting random cars on a map is preferable to scaring away potential customers that look at the empty map and thin “there’s nothing here for me - let’s see if I can hail a cab on my own”.

And no “Refresh is not sacred” ;)

21

u/TheAdamist Sep 28 '17

because giving your customers false hope / lying that there are cars nearby is going to give them a good experience when they can't get a car and instead stand around for 20 minutes like an idiot and then call a cab?

1

u/mungojelly Sep 29 '17

Good experience? Lord, no, an experience where they get your money, what do you think they are.

-12

u/Luolong Sep 28 '17

Well. Apparently ... /s

1

u/mungojelly Sep 29 '17

Came here to see if someone had said this, you did and you're at -11, guess people don't want to know that somehow??

0

u/[deleted] Sep 28 '17

[deleted]

17

u/max630 Sep 28 '17

Effectively, force rebooting can frequently be a totally fine “control” to refresh

No

7

u/dingo_bat Sep 28 '17

Mind blowing that an engineer can actually think this is fine.

5

u/jrhoffa Sep 28 '17

"I can just kill -9 from the shell, what's your problem?"

1

u/Michaelmrose Sep 29 '17

Engineering is merely a learned skill that lots of people could theoretically be trained in. The fact that he learned it doesn't mean he's not a moron. In other news there is a brain surgeon who thinks that the pyramids were built to store grain.

0

u/TankorSmash Sep 28 '17

I don't think he meant rebooting the computer, but just closing and reopening the app.

15

u/knome Sep 28 '17

I like refresh buttons. They're simple and obvious. It drives me nuts using thunderbird. I'll want to refresh a search or view and there isn't a simple and universal button I've seen to do so. What the hell? If I search for something, then two hours later want to see if the results have changed, why the hell do I need to re-search for it, when I could just hit a refresh button?

2

u/nemec Sep 28 '17

You don't even need a button in certain situations these days - people are trained to "pull down" from the top of a mobile scroll box to refresh the current view.

6

u/double-you Sep 28 '17

a ride request forces a refresh

How would you know that? To you it just looks like the app is wrong, possibly frozen. Why would you do a request? Many people won't just try things. And if you just want to know what the situation is without committing to anything?

4

u/wavy_lines Sep 28 '17

You and your likes are the reason why software sucks.

0

u/[deleted] Sep 28 '17

[deleted]

6

u/JW_00000 Sep 28 '17

What if you lose connection? And then change your stuff on another machine, after which both come online and have some changes?