Why CLIs Suck (and GUIs are Better)

Why CLIs Suck (and GUIs are Better)

Programming has come a long way over the years with how we interface with our code. Why do developers keep using command line scripts for daily tasks?

Lewis Cowles

Perhaps as a “lump as many people into a category as possible” this is true. Considering many large populations, skills, I’d argue in any given area trend downwards as you increase a non-biased population.

There has certainly been work from log providers, cli ui toolkits (maybe we could argue about what constitutes a GUI), to push back on this though. Perhaps to consider aggregate operations performed, CLI’s are much more efficient and scaleable than GUI’s.

Have you ever had to run a browser automation test. We’ve removed the mechanical human, and still they can be orders of magnitude slower than tests without a browser, or using a simpler sub-process in a shell

I feel like the best user interface is no interface. I don’t mean not having or the absence, but rather Automation. GUI’s for some users are a step to one side of that, towards a generalist, perhaps unfocused user, or a domain which is currently difficult to reason about and is being established.

CLI’s, which I’ll be cheeky and consider parts of systems supporting STDIN/STDOUT operation are vital to much GUI work, and are more efficient.

Okta certainly isn’t running on a mechanical turk system of highly accurate mouse operators is it? It uses automation, and possibly CLI as a stage prior to automation. It’s a compelling title and polarised subject though.

The world is big enough for GUI’s, CLI’s and No-UI’s to co-exist.

GUI’s, expressive, open, possibilities for non-native intuition. CLI’s tend to be less open, more focused, I’d argue less expressive and more engineered and require some degree of operator buy-in and skill.

Thanks for writeup

Noah Ginsburg

Generally I prefer CLI’s, I can automate tasks, or create my own view if needed. GUI’s tend to make assumptions about how I want to interact with data and can be limiting.

However, if you give me both I won’t complain.

John Corley

UIs are calling the cli anyway?
Pretty slow to render some things?

ilyearer

Good post, I enjoyed reading it. Just a small nitpick: Graphical User Interface, not Graphic User Interface.

I think if there exists a well-defined UI for a development tool or general product, it should take precedence over CLI. CLIs are most useful for when functionality doesn’t exist in GUI form or the overhead of developing a GUI vs a quick CLI isn’t worth it.

Eli

I agree completely. I started out with GUI tools (which appeal to me mostly cause of customization options) but I’d love a nice happy medium between CLI/GUI. A TUI if you will. Mostly for personal aesthetic reasons.

Harrison

I find using CLI is better (in most cases) for me but, I use VIM for development most of the time.

Alex Le

I use both. The right tool for the right job.

Lord Chuckles

I can see the point, but CLI allows automation after doing a task, simple history of shell shows what happened and lets you string it together. use both? most GUI suck. there should be a GUI shell. that wraps a CLI parameters with a gui

Rulo Kobashikawa

With CLI you can have command output as command input. This chaining is very useful and I’d like GUI could have something like that.

Jason Antonacci

I see. So git, kubectl, docker, powershell, bash, ansible, essentially every DevOps and systems administration tool out there got it wrong. Enjoy your bespoke pet projects while I run apps at enterprise scale.

Man na

What? Yes, they did get it wrong! Those crappy tools don’t have a UI for DevOps job security. All those tools you listed are crappy freeware offerings and no one has the guts to say that they all suck! It takes a lot more thought and craftsman ship to create an application with a quality GUI than it does to slap together some shell code! You UNIX programmers think you’re cream of the crop, but in reality you’re not. Some of us older programmers worked on operating systems that didn’t have preemptive multitasking and memory protection. So if we screwed up, we heard about it.

Man na

You’re judgement is based on Microsoft’s lousy implementation of a UI. I have a saying, be careful what you wish for from Microsoft, they might implement it.

Man na

Yeah, big macho guy you! I bet you sit in front of your computer dressed in camouflage fatigues with a glass of milk and cookies.

Man na

You like a little self flagellation once in a while.

Noah Ginsburg

Nope, actually I have no problem with microsoft’s general ui decisions. Some things the do are fucking dumb sure, but all in all whatever.

But for automation purposes and ease of my life, cli is better.

If you want to see UI decisions that I hate, go buy a Mac.

Man na

What are you saying? “Generalist unfocused user? More efficient?” You’re definitely too young to remember the good old days before the GUI. Computers would be nowhere as popular as they are today without them. If you’re too lazy to design and implement a GUI, and or place portability across platforms above usability and sales, then go ahead and make your software command line only. The world won’t miss anything. In fact, it would be an improvement, since less command line interfaces makes the world a better place.

Man na

Surely, you bare no relation to Allen Ginsburg, the famous poet. Anyone who despises the Macintosh, the machine that made computing accessible to the masses through it GUI and gave rise to the desktop publishing revolution, has no art or vision.

Noah Ginsburg

Well Allen’s last name is Ginsberg so good job there bud.

And anyone who thinks Mac’s gui is revolutionary is a fucking nutjob, given that it’s consistently inconsistent. The least understandable UX of any computing system currently available: the only reason it’s actually successful is due to marketing and not it’s actual usability.

Man na

You’re obviously living in another dimension past the event horizon.

The MacOS’s user interface wasn’t the first, but it revolutionized how people use computers. GUIs didn’t really make their way to the PC until the hardware was sufficiently powerful enough to support it. Bill Gates was smart enough to see the Macintosh as the future and pleaded with Apple to open up the platform to other manufacturers. Apple didn’t budge, so Gates made a cheap, sloppy copy of the Mac UI and the rest is history. Bill Gates used a Mac when he was still working for Microsoft!

You’re claiming that some of the most brilliant developers purchased MacBooks because they fell for clever marketing? You’re also making the same claim for a huge number of Google developers who have little stake at all in Apple? If you watch enough MSDN video broadcasts, you’ll notice a whole bunch of Microsoft’s internal developers use MacBooks! Wait… Even Miguel DeIcaza wrote in a blog article about how he prefers MacOS over Windows.

Moreover, you’re claiming that millions of everyday folks who broke away from the Windows hegemony and purchased Macs, especially when they cost a hefty premium over a commodity PC running Windows made by hundreds of manufacturers and sold at practically every retailer, simply fell for marketing?

Apple was nearly bludgeoned to death by Windows back in the 1990s. It had a tiny and ever shrinking market share thanks to bad corporate management. The company was already filling out the paperwork for bankruptcy. Jobs stepped in and miraculously turned it around by focusing on quality. The Mac regained its market share to become the top computer manufacturer. Today, Apple is a $2T company with $256B in revenue, making it one of the largest companies in the world. Are you claiming that the greatest American turnaround and success story in corporate history was all marketing and not quality?

You’re batshit crazy if you really believe MacOS is only successful because of marketing.

Btw, the spelling of an Ellis Island name was often left to the discretion of the immigration officer.