I’ve been thinking about this. Which is actually more efficient, in various metrics?
WORKING EFFICIENCY
For applications where you need a lot of visual feedback, such as computer games, video/graphics/sound editors, it appears to me a GUI would be more efficient, simply because a GUI is more suited to display lots of irregular information.
If you need to deal with textual data, then the CLI becomes more efficient. This becomes especially valuable if you need to do administrative tasks, coding, or word processing.
LEARNING CURVE
Contrary to what’s expected, the CLI is easier to learn (source: tried to explain GUI to my father (a complete digital illiterate), he did not understand it) and the learning curve is a lot smoother, although there’s more to remember (commands, key-press combinations).
A GUI is a very complex user interface. Even when it contains just one button. To a digital illiterate there’s just a bunch of images on screen. Opposite of this, a CLI is predictable: text appears where the cursor is located and the feedback is 99% of the time text. The input of the CLI is also very simple: the keyboard is a bunch of (over 90) physical buttons. Press a physical button and the corresponding character appears on the screen and the “Enter” key tells the computer to do the command you just typed. Simple.
Contrary to the GUI. Even with touch screens it’s difficult. What does what do? Where and when can I perform which action(s)? To us this may seem apparent, but ask any digital illiterate and they’ll tell you computers are difficult.
To make matters even worse, they have probably been told Windows is “easy” (it’s everything but) by their “technical” family member and the command line is for experts only. “Yeah, well, about that Linux thing… let’s not do it.”
When the digital illiterate struggles with the GUI, what must they think of the CLI when they see their family members use the GUI with impunity, and see that one “expert” entering what to them is the equivalent of dark magic on the CLI?
PREDICTABILITY
The CLI has a very predictable way to respond: everything appears below one another. Eventually the user is entering text at the bottom of the screen, and will always stay there, unless they take deliberate action to clear the screen.
Contrary to this, the GUI doesn’t have a clear way of inputting information. Where do you need to be on the screen now? Where is the output of the program? What does which image mean? It’s not always clear what type of task a particular widget (GUI element) fulfills. Sometimes it’s not obvious certain actions allow for further actions. An example here being selecting text and setting all of it to bold.
Thoughts? Did I miss anything?