About 22,000 CSS-Tricks visitors voted in the last poll about command line usage, which asked:
On average, how many commands do you run from the command line each work day?
The result: there is a lot of people at all the different levels. It’s no wonder it can be such a hot topic.
Here’s the results as a chart:
See the Pen uJjyD by Chris Coyier (@chriscoyier) on CodePen.
19% of people never use the command line at all. The largest group, 27%, only run a handful of commands a day.
18% run 10-50 commands, 15% run 50-100 commands, and 15% run 100-1000 commands. I think it’s interesting that this group, taken together (10-1000 commands a day) represent the largest number of people (48%).
The smallest group (6%) run over 1000 commands a day. Some people just live in the shell!
Personally, I’m in the 10-50 group. I’m typically doing things like firing up Grunt, starting a Rails server, and related things to get a dev environment set up.
The idea for the poll was based on the common side-conversation that always seems to accompany conversations about command line tools.
Say a new tool comes out that can only be used through the command line. Whatever it does, the end result is desirable. Some folks will be excited and be talking about it and using it. Some folks will think about using it but never get around to it because it’s a bit out of the comfort zone. Some people will bemoan the fact it’s a command line tool and write it off completely.
Then there will be some comments lambasting the non command line users. Some comments telling them there is nothing to be afraid of. It’s easy to agree with that, since of course learning more is always a good idea. But on the other hand, not everybody needs to know everything and there is some tools that, however nerdy, could benefit from a UI. Tools like CodeKit are proof they are desired and highly used.
I suspect tools like Grunt are both:
- Getting more people into the command line
- Making the command line less difficult
- Giving more bang-for-the-buck for learning it
If a new command line tool comes out these days that does something cool, chances are it already is a Grunt plugin or someone will make it one in short order. So now you don’t have to learn something new, you just include the Grunt plugin and configure it, which you’ve probably already done a number of times.
I’m also of the opinion there probably will never be a GUI for Grunt – at least not one that is any good – because what matters in Grunt is the configuration of plugins. Each plugin is so different it would require it’s own special UI unique to it, not something generic.
The most interesting bit I’ve learned here is how broad the spectrum is in command line usage, ranging all the way from zero experience to mastery. That’s much different that most things we discuss in web tech, so it’s good to keep in mind.
New poll soon.
I recently started using the command line (just after voting in the poll) for the purpose of Git Version Control as well as SSH.
Looks like it is too late to change my vote.
I guess people who does use command lines a lot use things like Grunt/Gulp/Yeoman/Bower/Git, and those who doesn’t mostly use CodeKit/Prepros/SourceTree/Github, those UI things.
Personally, I’ll be very happy when the Command line dies a horrible death. it’s the very epitome of bad UX and it’s so easy to make a simple GUI these days that software developers have no excuse.
I love grunt, but would never use the command line to run it. I use it inside Sublime Text.
I think you’re missing the reason the command line is still around to begin with. Although this article is clearly addressing stand-alone utility suites (for which I have mixed feelings), anyone with a decent amount of CLI experience will tell you that writing a GUI for tools like
grep
orwget
is basically wasted effort. For the same reason that understanding HTML and CSS leads to better websites, understanding the language and tools of a command-line environment allows a developer to use them more effectively (and, often, much faster) than equivalent graphical-only options.Especially as someone who spends most of his time writing code anyway, I vastly prefer to keep my fingers on the keyboard whenever possible. I’ve even got a single-key shortcut which pulls down my system’s terminal emulator on top of whatever else I’m doing, just to make it that much faster. For people like me, the CLI is often the better option. Calling it the “epitome of bad UX” is perhaps an exaggeration.
Note: I am primarily an application developer, and only do Web work as a hobby. Grain of salt and all.
As long as command line is faster than GUI, I won’t change!
Why would you want to go through a menu of actions and then wait 3 seconds for creating a new file, when you can do that in 100ms with a single command? Why would you waste a minute trying to find that folder to see what files are in it, when you can do that in 100ms using a single command?
Command line might not be as intuitive as GUI (arguably), but in some cases it gets the job done a hell of a lot faster than any GUI. Don’t forget that for fanciness you pay with CPU and memory.
Not to mention, that when we use GUI tools, we are practically using a black box. When eclipse says ‘Building workspace’ do you actually know what that means? You have no way of telling! You have no idea what eclipse is actually doing, you can only guess. If something goes wrong with it.. With command line, on the other hand, you can’t guess – because it’s you running the command. You know what command you are running, and even more important is the fact that this command outputs its errors right into your face.
And I’m not even going to start about people who don’t understand the simplest things such as the basic concepts behind CVS (“what’s a ‘diff’?”), because they use a GUI and never really understood what’s happening there.
GUI’s aren’t perfect for everything, and neither is the command line.
Each has its own pros and cons.
App launching? I’ll always use Alfred/Spotlight/Launchy, because it’s easier to just type…
Command+Space
'pho'
Enter
…than it is to grab my mouse, click Applications, click Photoshop.
I realize it’s splitting hairs, but app launchers provide a unified interface for everything with minimal searching involved. I just use my words to find what I need, whether it’s something I use all the time (Sublime, Photoshop, Evernote) or rarely (Camtasia, Illustrator, Suitcase). The words reduce the cognitive overhead of searching.
And what about keyboard shortcuts?
If GUI’s were the answer for everything, there would be no efficiency gains from giving people a mechanical shortcut for something.
So yeah, all that to say that GUI’s are great, but they aren’t perfect for every task. Sometimes it’s easier to just use good ol’ arcane language to get it done.
Jon, that’s kind alike saying the hood of cars should be welded on.
Some folks just like to do things under-the-hood.
It’s not for me, but occasionally I find a use for it.
However, I hate to generalize, and it is a generalization, but my experience has been the more a person works in the command line, the less likely they are to respect people who don’t. Again, that’s been my experience, and I’m sure there’d be many command line jockeys out there not like that.
I’m in the 100-1000 group, probably hitting the lower end of that on most days depending on what I’m doing.
Having a background steeped in *nix and what some might call ‘proper’ programming, I have to question your point of view here.
We are in the business of coding, and to do that we build cool new stuff ontop of not so cool old stuff alot of the time. There’s no point slating the not so cool old stuff; we require it in order to be able to build our cool new stuff.
Saying the CLI is badly designed from a UX perspective is like complaining about the UX of a telegraph pole. It’s there to do a job, and was designed and built some time ago for that purpose, not to provide the modern-day idea of a good user experience.
Apologies if I’m going on too long, and I don’t mean to cause any offence here – it just gets my goat when people slate something that they have a choice about using. It’s a tool to do a job at the end of the day – if you don’t like that tool, you can use others that are built to do that task.
Kind of like griping about how your scythe looks when you have a strimmer in the shed.
Jon –
You have absolutely no argument. Command line will never die! Thanks to guys like you who were never motivated enough to learn it and become more productive than their GUI user counterpart.
Thanks,
Cooper
AlanC –
I love your analogy: “Saying the CLI is badly designed from a UX perspective is like complaining about the UX of a telegraph pole”.
Spot On.
Cp
I think of it more like this:
The web designer is a painter, and the command-line jockey is a writer. Both are artists nevertheless. I would guess that it’s primarily because each person thinks and feels and perceives differently, that’s why not everyone expresses using the same medium and style. Thus I hope the command line never dies, let alone horribly. Bite your tongue.
When I’m using Linux or OSX (almost all the time) I live in the shell except for the browsers, under Windows I never had to open the console, weird. :)
I have been watching this, and it baffles me.. I am not on my linux machine everyday, but even without, I am pushing to git, or running compass through Ruby for windows..
My concern is workflow, compass on ruby fits me best right now so compass watch is my best friend when I goof
I love the command line..
Maybe specificity is the next poll. I would be interested to see that
With nodejs and abundance of web services it’s too easy to create a cli tool to do crazy stuff. I have a compound “upd” script that I run every once in a while during the day it checks my gmail, calendar, weather, parcel tracking status, new film releases and house prizes in my area. Try doing that with GUI apps (or even a browser) – 5 minutes at least!
I am old enough to have had no choice but to use a command line with a computer…or as they called it in the MS-DOS days the DOS prompt. We had no GUI so we had to use the prompt…and we had to learn these DOS commands to use our computers…I remember it did make it feel smart…
I remember seeing my first GUI…It was the Apple MacIntosh and I was like…”Wow” you no longer have to remember a tonne of strangely worded commands and I can operate a computer in a fashion that is more similar to how I work in the real world…(files go in visual folders…deleted items go in the trash shaped like a trash can…etc…)…For a visual person like myself it made computers so much more accessible…and I could focus my efforts not on memorizing low level OS commands such as move, make directory, change director…and instead focus my efforts on producing things…this was thirty years ago…
Thirty years later and I feel like the command line is back and I don’t know why…I guess we are in the computer business and the nerdier we can make our UI’s the smarter it makes us feel…but I see no logic in it…memorizing all these commands to perform basic operating system commands…
Maybe the command is like a retro novelty to some people…but not me…
Anyways to each is own…I prefer a GUI most times for my UI’s…
Michael!
At the time I voted, I was in the handful of commands group. Now I’ve started downloading and building Android stuff (kernels, ROMs etc) it has increased to a whole lot more.
As I have on a slide for a talk I’m planning: “I’m no CMD expert, but the CMD is now part of being a Web Designer”.
The problem with the CMD is not the CMD itself, anyone can type text on the damn thing. The problem with the CMD is that the commands that developers and programmers have come up with to execute basic actions are so effin’ weird and many, if not most, of the times don’t make sense whatsoever.
git push origin master
, seriously.~/my-awesome-site jekyll serve
, really.Fortunately I’ve been able to overcome some CMD-based applications but only because I’ve persisted, not because the CMD commands are intuitive.
sass --watch scss:css --compass --style compact --debug-info
, figured this one out after a couple of months cracking my head against the wall. I now use Prepros App for this.browser-sync --config bs.js
, same here, cracked my head against the wall for several weeks until I figured it out. I still use it today as is.Would I recommend the CMD to a fellow web professional? No effin’ way. But IF they want to be good at Web Design/Dev they’re going to have to use at one point or another.
I just recently started using the Command line for the first time when using Sass.
CLI is so much faster than a GUI, and you can do so much more with it. How can you pipe gitk through Midnight Commander, and feed the results into Outlook Express? Does that even make sense? No, you’re stuck with what the GUI offers.
Knowing how to use CLI is like being a telepath amongst mouth-communiators. It’s just beyond their ken to even imagine what they might be able to do if they had the capability. It’s great fun to bang out some mystical command at touch-typing speed and get the results on the spot. GUI users just pick their jaws off the floor and pretend they didn’t see it.
I use the command line for Git, Compass and now Grunt. It really does make things quick for me, so much can be automated. I’ve always found Git GUIs confusing, and that’s one of the things that started moving me away from Windows.
I started out on DOS a very long time ago, and to this day stay as far away from the green screen as possible. I installed node.js to be able to use some functions on Sublime Text but that’s the extent of my need for the command line
I love the CLI as long as it’s intuitive. I’d take Linux as a good example, I use the CLI daily now but when I tried to switch to Linux it was so difficult to get anywhere that I abandoned it.
I can totally understand the love for GUIs or the CLI but for me they’re both similar in that they can be intuitive or a nightmare to get anything done. I’ve only tried a couple but Git GUIs have always had me running back to the CLI.
I primarily use the CLI for Grunt, SASS/Compass and Git and for the most part the commands are fairly easy to remember and use and it doesn’t take an age to learn them. That’s the key.
I think a lot of web devs who are starting out or even at intermediate would do well to learn it – a good demonstration of it’s power will win them over in no time.
I think I’ve been using command line since forever. I’m using it so much that I don’t understand half the things in some GUIs.
CLI usage: SASS, GRUNT, GIT.