DEV Community

Shayne Boyer
Shayne Boyer

Posted on

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

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?

As a long time developer, I started as a prompt style developer because that was all there was until Visual InterDev was introduced to me.

After going through tools like Eclipse for Java, various Visual Studio iterations for .NET; I found myself getting back to the command-line when node.js hit the development world.

Today, it is rare that I use the mouse to get around in my daily dev tasks.

  • git
  • .NET Core : dotnet
  • Node.js, JavaScript : node, npm, yarn, vue, ng
  • Azure : az
  • Docker, Kubernetes : docker, kubectl

If there's a command-line tool, I am all over it and usually writing some handy bash script to make it even easier.

What are your tools of choice?

Top comments (14)

bnb profile image
Tierney Cyren

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
    • 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.
dazeb profile image
Darren Bennett

this is the way

jimbobbennett profile image
Jim Bennett

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

spboyer profile image
Shayne Boyer

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

turnerj profile image
James Turner

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.

scotthannen profile image
Scott Hannen • Edited

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.

aaronpowell profile image
Aaron Powell

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.

theinfradev profile image

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.

deanbryen profile image
Dean Bryen

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.

jjtowle profile image
Jason Towle

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.

turnerj profile image
James Turner

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.

lbugnion profile image
Laurent Bugnion

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).

xngwng profile image
Xing Wang

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

biros profile image
Boris Jamot ✊ /

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