6 ms·
Discoverability. CLIs are notoriously bad at discoverability. GUIs, on the other hand, are much better about showing a user what options / commands are availa
by Osiris 8y ago
Discoverability. CLIs are notoriously bad at discoverability. GUIs, on the other hand, are much better about showing a user what options / commands are available.
If you look around, GUIs and CLIs are both around because they are each good at specific kinds of tasks. We use CLIs to remote into servers because it doesn't require much bandwidth and it works with high latency, etc.
The right tool for the right job. I don't understand this mentality that people have that one tool is superior to another in all cases (e.g., linux is always better than Windows, open source is always better than proprietary, etc).
- yellowapple 8y agoAs a counterpoint: a command-line application with a --help option has just as much discoverability, IMO.
- AstralStorm 8y agoI remember the days when CLIs had a HELP command built in and accurate enough. Oh and when people read instruction manuals. A decent manual beats a "discoverable" GUI almost always.
- xg15 8y ago> Oh and when people read instruction manuals. A decent manual beats a "discoverable" GUI almost always. Sorry, but nope. You can rant about GUIs all you want, but UX research did yield a lot of actual insights about how people interact with systems and learn usage. From a learning standpoint, RTFM is enormously inefficient and error-prone. You can learn about usage of an application a lot faster if you can use existing knowledge (e.g., leveraging standard UI widgets or menu items) and if the application gives you feedback loops, so you can evaluate what a command did or will do (ideally before it does anything consequential)
- oblio 8y agoWhat do you mean by that? Didn't you also learn about balls by someone giving a 100 page dissertation into spheroids? After all, all the info you needed was in there!
- PurpleRamen 8y agoI think most people couldn't read yet when they learned about balls. A better example would be games. Remember how thick the manuals were 20-30 years ago? Remember when you last time read a manual for a modern game?
- oblio 8y agoI'm perfectly fine not having to read manuals for games...
- boomlinde 8y agoI don't think that this is a question with an absolute answer. Standard UI widgets and current design conventions aren't always great or even good ways to tackle the problem in terms of productivity and efficient use. For a complex productivity application that I'll use daily for a long time, learning the basics is always a relatively small initial hurdle whether it takes an hour or a week. It's much more important that its application of standard UI widgets doesn't get in the way of productivity later on when I am at a stage of learning where I can perform the basic operations from muscle memory. For such an application, say a music sequencer, 3D modelling software or CAD software, I'd much rather have a terse UI and a manual in a binder than standard UI widgets that are worse than specialized solutions that take into account every aspect of the problem.
- johnalamos 8y agotroll ?
- chuckdries 8y agoI don't think it's reasonable to expect the average computer user to go digging through man pages to figure out how to do literally everything they use a computer for. My mom relies on information and actionable instructions being presented in the context which it is used. I once discovered that she didn't know what a button did because there was a delay between pressing that button and the change it made, the delay was enough to break the cause and effect relationship in her mind. You and I have spent our entire lives training on, memorizing UX metaphors and computer patterns. We go into a problem knowing generally how we want to solve it, so we know what to look for when reading a man page. My mom methodically reads every option in the context menu when she right clicks on a file in an email before choosing save, because nothing is obvious and if she didn't have that she'd be writing down explicit, context sensitive, step-by-step instructions for how to save an attachment (I know because before I taught her to read the menus that's literally what she did)
- misnome 8y agoThis is really a really good description of the problem. People use computers in ways that seem bizarre to us. Another e.g. I have lots of scientific colleagues (I don’t think any of our teams programmers) who still don’t know when to single click vs double click, OS vs Browser. All they know and care is that double click works almost everywhere.
- adventured 8y agoThis can be made even more simple as a contrast. Hand an average consumer an iPad. Then hand them a laptop with no interface except for a command line. Watch what happens. We already know exactly what happens. The average consumer absolutely detests the CLI. The iPad GUI is so trivially easy to immediately learn to use that children in third world villages with zero formal education and zero knowledge of modern technology can instantly pick it up and begin using it without training.
- chuckdries 8y agoand, importantly, they can still pick up the metaphors even if they don't understand english (or the language of preference) very well. MAN pages often require really really good language skills in the given language to understand.
- izacus 8y ago> I remember the days when CLIs had a HELP command built in and accurate enough. Oh and when people read instruction manuals. Those days never existed. Support stories of exasperated developers are in abundance from 1970s.
- AndrewDucker 8y agoThis is one of the things that I love in PowerShell. It autocompletes the command from all of the commands available through either scripts or modules on the path, and then it autocompletes parameters (their names, and when they're an enumeration, the value). Discoverability makes life much much easier.
- saagarjha 8y agoHow does this differ from bash-completion?
- chuckdries 8y agoI think he's implying it's built in by default? I personally have never observed it, but I don't really use powershell so maybe I'm doing something wrong
- yaleman 8y agoBash completion for every single installed module isn't baked in on every install?
- saagarjha 8y agoI know of multiple Debian systems I've used with decent bash-completion for most commands out-of-the-box–now, whether this was because it had already installed bash-completion and the associated completion files for each preinstalled APT package in the bash-completion directory, I don't know.
- oblio 8y agoBash completion scripts have to be hand written for each command. Ok, at best they can be autogenerated from some tool if the command's development environment has a tool for it. But many of these scripts are handwritten. So they have to be created by humans and then installed on the system. Far from auto-introspection into a standard API.
- 8y ago
- onion2k 8y agoGUIs, on the other hand, are much better about showing a user what options / commands are available. Except when they're not. Take Blender for example - the GUI is contextually sensitive in the sense that buttons do different things in different circumstances, but they don't inform you why or what you can do to change their action. Consequently options are greyed out seemingly randomly. You can't discover things because you can't know the way they work consistently. Good GUIs are discoverable. Bad GUIs actively work against discoverability.
- atticmanatee 8y agoThat is just bad design. You would have the exact same problem with CLI if a command was contextual sensitive.
- kaffeemitsahne 8y agoBlender has a fantastic UI though.
- fwsgonzo 8y agoIt is objectively one of the worst in existence. Same as with photoshop. It just ended up like that, everyone learned it that way, and now no one dares to revolutionize. I tried to work strictly with the B (3rd) and A (4th) color channels separately in photoshop but I clearly don't understand how its supposed to be done. Blenders UI is a horror show unlike anything in existence. Blender is extremely capable though. No question about that.
- TeMPOraL 8y ago> Blenders UI is a horror show unlike anything in existence. Blender is extremely capable though. That kind of goes together, though. Simple UI is usually a symptom of lack of capabilities of the software at hand. When your software has a lot of power, UI design becomes tricky. Doubly so when, like in case of Blender, you aim for efficiency of usage, which is usually at odds with typical UX guidelines, and instead expects the user to actually learn something.
- mahkoh 8y ago>GUIs, on the other hand, are much better about showing a user what options / commands are available. In general this is only the case if the user is browsing and not looking for anything in particular. That is, when the user is trying to learn about the program in general. If you're trying to find anything in particular, that thing might be hidden in an options window in a submenu of a submenu somewhere. The only effective way to find it is to google for the functionality and to hope that someone else has already asked the same question. This is my experience with Inkscape. A well written, flat manpage can have much better discoverability than a GUI with poor or hard to search documentation. Bad manpages are of course considered harmful.
- iforgotpassword 8y agoYes this is a big plus for CLI. I don't know how many times "something --help | grep keyword" has immediately solved a problem while for GUI apps you always need a google search. I mean it's not really that bad, you always have the browser open anyways and 99% of times someone had the same problem before, but still, it just feels cumbersome.
- carlmr 8y agoYeah, I agree, and a good --help might not be included in every CLI app, but then again a lot of GUIs are also barely discoverable if the options have bad names and no tooltips.
- simongray 8y agoIn most GUI apps on the Mac you can do this kind of thing through Help > Search..., though. Not sure about other platforms, but I sure use that feature a lot in e.g. intellij.
- dotancohen 8y agoI was going to mention PyCharm. The Jetbrains editors (intellij) are about the only GUI app that I've ever replaced a CLI app with and been happy. Their discoverability and documentation played a big part in that.
- endgame 8y agoThat might have been true once, but now every button is a different hieroglyph I'll take `man foo` or `foo --help` any day.
- daniel-grigg 8y agoI could equally argue the opposite is true today. A good CLI program has either a —help option / man file. I run that and presto, I have every command and option succinctly presented. Whereas with unfortunately far too many GUI apps today, discoverability is a trial and error mix of gesturing with various swipes, clicking odd shapes and asking friends how they accessed some random feature.
- chuckdries 8y agoGUI applications can have good documentation, which, if they do, makes your point moot. If we assume a given tool has little or no documentation, a GUI wins out.
- AmericanChopper 8y agoA good GUI will show you how to use it. That’s what UX is all about. But a CLI will always have to be learned.
- v_lisivka 8y agoA good CLI program, with autocompletion and on-screen documentation, will show how to use it. That's what UX is all about. Many people cannot switch from one GUI to another GUI, e.g. from Photoshop to Gimp or from MS Word to LibreOffice, because they learned one GUI and don't want to relearn.
- AmericanChopper 8y agoCan you name a CLI program that is as complex as Photoshop? There’s certainly CLI apps with good UX, and ones with bad UX. But I don’t see a reasonable way to argue that CLI has better UX tools than GUI. Autocomplete and tips can make a good CLI experience, but a good GUI experience can convey more information without even using those things.
- dotancohen 8y ago
- bjpbakker 8y agoI don’t think the last part has anything to do with the topic at hand, however > open source is always better than proprietary I don’t think anyone has ever claimed this. But for people ( like me) who care about their freedom, it’s mostly a small sacrifice you can make to retain freedom. I find the latter is more important, not that OSS is _better_.
- majewsky 8y ago> > open source is always better than proprietary > I don’t think anyone has ever claimed this. There was this one guy who maintained Emacs for some time.
- ranit 8y agoThe article is not against your points. It is against creating GUI-only applications. Explains why it is better to have modules in applications with functional "backend" and GUI if needed, and CLI for programmability.
- de_watcher 8y agoDiscoverability? Our best discoverability tool is the Google Search. It's actually kinda a CLI tool.
- oblio 8y agoTrue, but it's a CLI tool which basically has humans at the end of the tunnel. After all, you're searching for stuff written by other humans, preferably things which directly address your problem and are actionable, not vague high level advice.
- pjc50 8y agoModern mobile UIs have often forgotten discoverability; interactable elements are not always highlighted, there are different types of touch, and sometimes things behave differently for no good reason (e.g. web pages that want to disable pinch-zoom).
- fiiv 8y agoI think the intention, despite the title, is not to say that GUIs are harmful. I think more what he's saying (especially in the closing paragraphs) is that both a GUI and CLI need to co-exist because they target different groups. He's against bundling a GUI as the only method of interface to a given program, but rather wants the application to be open to both. Not agreeing or disagreeing with his viewpoint, just summarising.
- laumars 8y ago> We use CLIs to remote into servers because it doesn't require much bandwidth and it works with high latency, etc. If that were a primary concern then we wouldn't be using SSH but rather something like Mosh instead since SSH requires remote echoing and other tricks to function - which aren't ideal for low bandwidth / high latency connections. CLIs are great for administrative tasks - be it remote or local - because it's more expressive than GUIs. You can chain tasks together, and you can expose more options in a cleaner syntax than you can with a GUI. This is also the same reason why Puppet et al also work for administrative tasks. They understand the requirements for expression so provide a syntax that offers that. I don't think GUIs make for good administration beyond allowing for configuration of common tasks in an environment that is already running. That's not to say you cannot do sysadmin work purely in the GUI (Windows admins will testify to this) but the CLI does make things easier once you get a handle on the tools. If that weren't the case then there simply wouldn't be a need for Powershell.
- mannykannot 8y agoI agree to a point, but I have come across some remarkably opaque GUIs - in cars, for example. You can have the best of both worlds if there is a well-designed API behind the GUI that also supports CLI tools. This also helps with test automation.
- Walkman 8y agoYou can make modern CLI tools today with great discoverability, there are a couple of great frameworks that makes this possible like Click[1] for Python or cobra[2] for Go. [1] http://click.pocoo.org/6/ http://click.pocoo.org/6/ [2] https://github.com/spf13/cobra https://github.com/spf13/cobra