News for hackers. Stuff that matters.
Re:CLI user experience case study by roenxi on Friday January 12, 2024 @08:08AM (#38967506)
(1) is an important point, but I think it doesn't go far enough. The terminal offers no help at all to a casual user (the funniest case of this is watching a new user trying to quit vim [0]).

There are a specific set of skills required to learn how to use the terminal - a combination of knowing when and how to read man pages, when to look up Stack Overflow, when to look up YouTube videos, and where to hang out to learn about more esoteric commands exist like `parallel`.

Without those skills - and there is no recommended path on how to get them - the terminal is unusable. It isn't a case of people thinking it is hard, it is actually logically impossible to learn how to learn terminal commands without getting lucky at the start.

Software has two phases - a learning phase and a using phase. A lot of great software ideas died quietly because there wasn't a sanctioned route to scale the learning curve.

[0] Or this classic: https://cs.wellesley.edu/~cs249/Resources/ed_is_the_standard...

Re:CLI user experience case study by Phiwise_ on Friday January 12, 2024 @12:25PM (#38970977)
To add on to (1), expeeienced hackers trying to educate new users really should first immerse themselves into descriptions of the "bad old days" of utility programming to help get back into the mindset of the novice they're trying to relate to. Your ed link is good, and I like the "Power Tools for Power Fools"/"Teeminal Insanity" chapter of The Unix-Haters Handbook for something slightly more modern: https://simson.net/ref/ugh.pdf#page=185

Just like no one really uses ed anymore, the C shell is pretty much dead and many userspace programs have had their edges rounded over the years, but the experience of trying to imagine working around their foibles gives the perspective necessary to helpfully advise someone trying to learn an acceptable shell today (except that they'll have more use for their effort at some point) because they're pretty much the same kind of transition. Compare these highlights to that ed page:

>Pipes are not the be-all and end-all of program communication. Our favor-ite Unix-loving book had this to say about the Macintosh, which doesn’t have pipes: "The Macintosh model, on the other hand, is the exact opposite. The system doesn’t deal with character streams. Data files are extremely high level, usually assuming that they are specific to an application. When was the last time you piped the output of one program to another on a Mac? (Good luck even finding the pipe symbol.) Pro-grams are monolithic, the better to completely understand what you are doing. You don’t take MacFoo and MacBar and hook them together." Yeah, those poor Mac users. They’ve got it so rough. Because they can’t pipe streams of bytes around how are they ever going to paste artwork from their drawing program into their latest memo and have text flow around it? How are they going to transfer a spreadsheet into their memo? And how could such users expect changes to be tracked automatically? They cer-tainly shouldn’t expect to be able to electronically mail this patched-together memo across the country and have it seamlessly read and edited at the other end, and then returned to them unscathed. We can’t imagine how they’ve been transparently using all these programs together for the last 10 years and having them all work, all without pipes.

>This morning I read an article in the Journal of Human-Computer Interaction, “Expertise in a Computer Operating System,” by Stephanie M. Doane and two others. Guess which operating system she studied? Doane studied the knowledge and performance of Unix novices, intermediates, and expert users. Here are few quotes: “Only experts could successfully produce composite commands that required use of the distinctive features of Unix (e.g. pipes and other redirection symbols).” In other words, every feature that is new in Unix (as opposed to being copied, albeit in a defective or degenerate form from another operat-ing system) is so arcane that it can be used only after years of arcane study and practice. “This finding is somewhat surprising, inasmuch as these are fundamental design features of Unix, and these features are taught in elementary classes.”

In both cases, we have someone moving from a relatively monolithic, high-level, restricted, commercialized system that focuses on uniformity, error-bar tolerance, and DWIM/intuitiveness of the intended or common use-case over giving every capability equal billing to one that focuses on completeness, atomicity, and implementation simplicity/efficiency. Learning this transition has two phases because the best way to keep going with the learner's current knowledge has two phases: Before making the transition they probably learned the old system through self-tutoring and exploration; the stakes were low enough and the environment painstakingly organized to be similar enough that a little curiosity and a little induction from past experience explained basically every level of the user-visible stack, and the slab of composed foundation functions that made the first-blush system run were either walled off fully or guarded to wave away novices. Pre grokking the new software, though, the user lacks the idioms that make it possible to write a more complete computing system out of less code, and so don't know when to apply what even if they've read up on most of the pieces they need already. It's like a transition from an upper-class aerospace engineer or hedge fund manager exploring Animal Kingdom Park to making a trek through the indian jungle. Even if you're carrying a reference tome on the region there are intangibles you're just missing, so you're far more likely to get lost and confused or hurt yourself if you don't walk right in the footsteps of someone expeeienced for a good long while. It's similar with the terminal: When you're successful, things are clearer and simpler than a jumbled heavyweight gui, but when you make the "mistakes" that come along with not almost entirely knowing what you're doing it can be unhelpful, mystifying, and rarely dangerous, because the experienced users happen to be the most-engaged target market. Not everyone has Apple money, after all.

The phase change back to effective exploration, and actual use over learning through apeing, only comes after they've got both most of the terrain and most of the problem-solving strategies in their head all at once to hit a self-sustaining critical mass. Something akin to the Khan(academy) flipped method is what I think is most important to remember when teaching: most experienced users think in terms of learning new skills through integrating new components, while beginners tend to know less about the implications of recombining the utilities they're already aware of in the less common and simple ways than show up as line snippets in crash courses. New users can read a man page as well as you can recite it by heart, but what they really need tutoring in is how to know they're reading the right part of the right page and what your experience says to do with it.

Just getting that all off my chest as someone who didn't have anyone to teach me and used to be spectacularly bad at teaching others, so someone might learn from my mistakes.

Re:CLI user experience case study by Solvency on Friday January 12, 2024 @08:54PM (#38976614)
Your ChatGPT account needs to be reboot.
Re:CLI user experience case study by Phiwise_ on Monday January 15, 2024 @10:18PM (#39009018)
?
Re:CLI user experience case study by palata on Friday January 12, 2024 @07:34PM (#38976098)
> The terminal offers no help at all to a casual user (the funniest case of this is watching a new user trying to quit vim [0]).

I think that's because casual users did not learn how to look at a terminal. If you start `vim`, it shows you a few lines that say "type :help for help". The help starts with "how to move around" and "how to quit". But people ignore that.

One could say "people don't ignore it, it's just not intuitive". But I have seen many casual users struggle with GUIs, too. The difference, IMO, is just that they learned the basics of GUIs, and never had to learn the basics of CLI. I don't really believe in something fundamentally harder with CLIs.

Re:CLI user experience case study by funcDropShadow on Tuesday January 16, 2024 @02:56AM (#39010649)
> A lot of great software ideas died quietly because there wasn't a sanctioned route to scale the learning curve.

A lot of great software is dismissed because people pretend there should be no such thing as a learning phase.