Command-line or GUI for dev tools? Some hate the command-line, really? Still?

Shayne Boyer on March 05, 2019

The command-line is the place for doing all of my work, however depending on your background dev platform or tools might not be your thing? ... [Read Full]
markdown guide
 

I'm a GUI guy. I can use the command line, and do for some power things like less common git commands, but I much prefer a GUI. The things I need are obvious and visible, I don't have to keep searching the help or the internet for the right parameters.

Maybe if autocomplete was a thing with great popup prompts then I might change.

I guess I'm lazy - I like to find the simplest way to do something with a tool keeping the cognitive load down, saving brain cycles for solving problems

 

You should try az interactive for the Azure CLI. It is an awesome learning tool but also is kind of like a GUI for command line.

Azure CLI Interactive

 

I feel the same way. I don't have an issue or a perceived efficiency penalty by using a GUI so I don't see a need to stop using GUI-based approaches in favour of CLI-based ones.

 

I generally end up using npm init and npx on a daily basis to accomplish a lot of scaffolding for the many small projects I make.

The command I use most often:

  • npm init -y
    • I set up my global .npmrc with personal defaults so I can init a project like this with a single command rather than going through the interactive prompt
  • git init
    • I always end up creating a repo on GitHub and then copy/pasting the git remote/git push commands... always annoys me
  • npx gitignore node
    • Pulls down a Node.js .gitignore from the GitHub-maintained .gitginore repo
  • npx covgen hello@bnb.im
    • Sets up a Code of Conduct (specifically, the contributor covenant) and sets my email address as the point of contact
  • npx license mit > LICENSE
    • Spits out the text of the MIT license (which I have defined as a default license in my global .npmrc) and moves that output to a file called LICENSE
    • I've discovered this is important to be inclusive to people who work at bigger companies. I had a friend at Google that wanted to submit a PR to a project but decided not to because I didn't have an explicit LICENSE file with the license text.
 

I started writing software long before GUIs.
That being said, I absolutely hate CLIs. When I'm writing code the compiler tells me if it's valid. The IDE prevents me from having to memorize every single detail of syntax. With CLIs, not only do you have to just remember stuff, but what you have to remember is much less clear.

I just don't want to memorize this, ever:

Get-WinEvent -ea SilentlyContinue `
 -FilterHashtable @{ProviderName= "iotedged";
   LogName = "application"; StartTime = [datetime]::Today} |
 select TimeCreated, Message |
 sort-object @{Expression="TimeCreated";Descending=$false} |
 format-table -autosize -wrap

What the heck is this thing inside of brackets inside of braces prefaced with an @ or double colons? I'm really happy for anyone if this makes them feel like a hacker.

 

I guess by default I've always been all about the GUI. Partly from feeling safe and secure in the comfort blanket of a GUI but mostly as having been developing applications exclusively in the various instances of Visual Studio over the years it's never been a requirement for me to step into the command line world too often.

My day to day still doesn't require it, but as I spend more and more of my learning time playing with Git, Node, React, Vue etc there has been an increase in my use of the command line and it hasn't been as scary as I thought.

 

For my cloud resources, I prefer the az CLI and would use that/Infra as code templates for creating resources in a real world environment. but... if it's something new I'm learning/ playing with, I will generally create it in the GUI the first time round.

 

I rarely touch the command line unless something really goes wrong/is the method of last resort. It isn't that I can't use it, I just don't like using it.

I do though understand the flexibility CLIs can offer, especially when scripting more complex actions together.

 

GUI can help you understand the generalities of a system. But for me the CLI and automation is the only way to do repetitive tasks. Script something once and you will have it forever.. or untill the vendor makes breaking changes.
Sometimes I think it is laziness that makes people use GUI, but I have realised now it is laziness that makes me script repetitive tasks so I can do one step rather than 10.

 

I default to the CLI because I really like to understand how something works. In my experience most GUI tools are just executing the CLI commands, often batching a few together to undertake a task.

By using the CLI I get to know what the GUI would be doing if I don't have it available to me, so I'm never left high and dry.

When I was doing consulting the CLI was also a great normaliser. I'd be training someone on git and you'd have 1 person using Git Extensions, another using GitHub for Windows and someone using a different GUI. By focusing on one GUI you wouldn't have the everyone able to follow along, but using the CLI meant that everyone had it available and they could translate your CLI command to their GUI equivelant.

 

CLI has its place for repeatable processes, automation etc. But let's be clear, it's a regression for humans. It forces everyone to memorize cryptic commands and basically it makes us think, which is the opposite from what a good design does (don't make me think).

 

httpie, jq, docker, oc, composer, git, go,... and also a browser and intellij.

 

A lot of developers who like command line looks down upon developers who use GUI. That stereotype is almost a cliche.

code of conduct - report abuse