You may be out of touch with people that are used to GUI. For example, during the first installation of linux distro after the user is landed on their DE, as far as I know, no distro ever curates the terminal to them. Like "this is the menu", "this is the terminal emulator", and even after the user managed to open the terminal, it is not obvious what to do next as there is only text prompt. Remember, users using GUI usually encounter text prompts with some hint (username, comment, email). Meanwhile the terminal has nothing. Suddenly you see the user you are logged in as and a blinking cursor. After that, how do you know what apps are installed? What commands can you call? Typing help doesn't always help on every distro. Again, remember, users using GUI will see what apps are installed usually using a menu of some sort. There is a lot of friction coming from GUI if you have never encountered CLI before. Heck, I bet some people have never installed an application outside from an app store or their commissioned device. Even a file explorer concept is foreign to some.
Microsoft is one of if not the biggest and richest companies in the world and they got that way on a strategy based on the public's fear and hatred of reading comprehension.
I have a theory that the crowd of people who learned computers or iPads etc from GUIs only, they have a harder time with terminal. Those who used DOS a lot find it to be a happy space.
I'm not saying they can't overcome it or that it is universal. It's just a theory I have based on early observations.
Now, it does make sense that a GUI only person would have to play catch up compared to a person the same age who has a decade of exposure to using a terminal if they're going to code in a terminal. It's just different mindsets and workflows.
At my work the younger coders who say they prefer GUI coding (and are terminal avoidant) seem to have more trouble and their debugging methods have many more steps and take longer. Many times they run everything in Jupyter notebooks and avoid running the processes in terminal at all. This is a problem if they put off end to end testing until the very last moment instead of testing incrementally.
Also, for context, this is to create production level Python code which is to be deployed on a terminal only server.
I'd want to make a measurable experiment with a larger sample size to confirm this theory though, as the systems are complex enough there are many possible reasons for these patterns. I'm just very aware these days of that moment of hesitance, like a deer in headlights, when some people have to open the terminal to solve their problem.
I don't think it's a theory rather than an objective fact. A lot of "traditional" computer skills have almost totally gone extinct because consumer devices are designed to hide as many system features from you as possible.
The saving grace is that even being raised without it, you end up needing these skills to become a developer of any decent calibre. That gives at least some route for these skills to transfer to new generations.
Most people on this planet simply do not care. They don't want to learn terminal and you cannot change their minds. But they still need a desktop OS that works, so we have to give it to them unless you want everyone to stay on Windows forever.
In your opinion what makes a terminal program "more useful" than a GUI program with the exact same functionality? Genuinely curious because it's a perspective I cannot wrap my brain around lol
The flaw is in the question: terminal apps practically always include more functionality especially for batch processing and automation of tasks.
I'll give an example: Find me a GUI application that can quickly convert a gigabyte of .doc files into .pdf format. Pandoc can do that with a single command.
Also: You're probably comparing the process of "using" a GUI app with "using" a terminal app, in other words, if you spend 8 hours sitting in front of Premiere or KDENLIVE clicking a mouse, you expect to do the same job with ffmpeg by sitting in front of it for 8 hours typing commands, right? But that's not how it's designed to work; it's designed for you to write scripts that do the things you commonly do, which takes time to do once, then you run those scripts, maybe even from the GUI.
I'll give a real example: the software I use for my personal journal is called RedNotebook. This stores the data in a human readable markup format (I think it's YAML?) and displays it in rich text, including the ability to display inline pictures. I like putting pictures in my journal.
First problem: what it actually does is store a relative path to the location of the picture in your file system; if ever I was to change the location in my file system where I store the journal or my pictures, or change operating systems, this would break. So I created a Pictures folder within the Journal folder to copy all pictures there.
Second problem: My phone takes 12MP or larger pictures and the journal displays them at full scale so they take up the whole screen. I'd like to shrink them.
Third problem: The app's "Insert picture" funcionality opens a file browser window written in QT which is different than the one from most of my GTK-based desktop apps use and I'd have to manually find the file.
Simultaneous solution: I wrote a short bash script that calls ImageMagick to shrink the image among a few other cleanup details, and builds the appropriate string to paste into my journal and puts that string in the primary buffer. I then wrote a Nemo Action so that the option to run this script appears in the context menu iff I right click on exactly one image file. Now I can add an image to my journal by browsing to its location in my file manager, right clicking, clicking Add To Journal, and then middle clicking in RedNotebook where I want to paste the picture.
There are hundreds of tedious little things I would do over and over again clicking through endless menus, windows and dialogs that I can script away, like paving my own bypass lane.
It has always just felt a lot faster than navigating through a GUI. I suppose at the end of the day this is entirely dependant on how well designed the GUI is. Should I type in one command I have memorized or navigate through multiple sub pages?
Simple example: installing stuff. Much faster and simpler to type "install foo" in cli than open a gui, searching for it, finding the right one, clicking install.
Same for updating: it takes me 2s to type the command to update all packages, that's less than the time I need to move my mouse to the icon of the package manager.
Sorry, but that doesn't really work. I can expand your terminal answer as much as you did the gui one. You have to open the terminal, use the man page for apt to find out how to search for a packages name, search for a package and hopefully find it, then you need to run another command with that package name to install it.
Meanwhile, I can shorten the gui example to "It take me two seconds to use the search bar and click install"
They all have their ups and downs, guis are just easier and more intuitive for people who don't live and breath terminal commands. Terminals can be extremely confusing for them, having never used one before.
There is a bit of bias in your assumptions as illustrated by the “use the man page” step.
It is not always true that GUI means easier or more intuitive. It almost never means faster which is why terminal people like the CLI so much.
One of the major benefits of the command line is that it is almost universal between distros. Package management is one of the few things that differs between distros so let’s use that as an example as even in this case there are only a handful of package systems across dozens of distros.
I know that apt install and apt search work across the entire Debian family including Debian, Ubuntu, Mint, and Pop ( all different GUIs ). If I was at a random Linux command line in any distro, it would take me moments to try apt, dnf, pacman, and zypper. Without even knowing what distro I was looking at, I could be managing packages in 10 seconds. I bet one of these would work on your machine. The commands that did not work would be harmless. In contrast, it would take me at least that long to find the “store” in a menu ( if I even knew how to bring up the menu ). There are almost as many software stores as distros. Some distros have more than one. Once in the store, I would have to discover how to do what I want. I have never used most of them. In half of them, finding out how to do a full upgrade may take a while and I am not sure how confident I would be that it was going to do what I wanted. I may really be lost if I got any errors.
I use an old MacBook every day and booting into Xfce I can type “yay -Syu” before the wallpaper even comes up and certainly before a store would launch. I can also ssh into a number of other machines and update their packages remotely with the same command. Getting a Remote Desktop would be far harder and what methods are available to do that vary from machine to machine. It would be far harder.
Anyway, this comment is way too long. My point is that, for many people, the command line is faster, easier, perhaps more intuitive, more consistent, and often requires less to remember than the GUI. Windows just added a “sudo” command. Why would they need to do that if they are the poster child “everything in the GUI” OS?
It is great to have GUI options and clearly some people will did that less intimidating. That said, once you start using the CLI, it is painful to go back.
I think we will have to agree to disagree. Figuring out the software store guis is so incredibly easy. Install button installs, search box searches. They are all the same. Dont need to know what an update button is doing, because average people wouldn't even know what is happening while doing it via terminal anyways.
Searching is also 100x times easier in the guis. You dont have a million other packages match your search (ever try apt search chrome?)
Though you are right, I had some bias with the man page bit. Average users wouldn't even know what man is, making it even harder for them. They would have to open a web browser, describe what they want to do somehow, and hope a copy pasted command does what they want.
However once you're up to speed with CLI, it becomes much simpler and faster. While a GUI will still be more steps even after you become expert at using that GUI.