Should You Be Using Command Line?
I’ll be the first to admit, I’m not a total command line expert and the point of this article isn’t to give some techy facts about command line and tell you, “you must use this!”, but to share my experience as I’ve been adopting it into my workflow.
Up until a few months ago, I used a GUI for any of the tools that I would need and it wasn’t until I started using Git for version controlling that I really started using any command line. I always thought it was just overly difficult, an un-necessary skill and never really had an interest in giving it a chance.
Like I mentioned, I started using a little command line when I was starting to use Git for my version control. Sure, there are some GUI’s out there to do this, but honestly, I found them less appealing and doing my commits and pushes via the command line made more sense. I also felt if I was to only use a GUI for it, I wouldn’t truly understand what I’m actually doing and down the road, if I run in to issues, I wouldn’t be able troubleshoot more complicated problems. So, I kept rollin’ with the command line.
It really didn’t take long for me to get comfortable using my command line for Git, but like any new skill you learn, it takes a bit of time and practice to learn the ins and outs. After I started feeling really comfortable doing that, it gave me some confidence to venture out and try using some other tools that are popularly uses via command line such as Grunt or Gulp task runners, style guides, static site generators, and other helpful tools that can only be run from command line. After getting comfortable with some basic commands and task, it gave me confidence to keep pushing my command line knowledge and was starting to see the benefits.
I don’t think I can iterate enough how much I didn’t want to learn command line, but I like to have an open mind when it comes to my workflow and I’m glad I have started adopting it. Some of the benefits I’ve noticed so far have been, just a better understanding of the tasks that I’m doing, a more confident workflow (in most cases a faster workflow), and a more versatile toolbox.
I may be going out on a limb here by saying this, but I don’t think there’s a developer out there who doesn’t want all of those improvements and qualities. It actually wasn’t until now, writing this article, that I truly realized these benefits.
A good specific example to this is using ssh. Once I learned how to ssh to a server, navigate to directories, and do Git pulls to updates files on a server as opposed using something like FileZilla and updating/uploading files through a GUI like that, I understood what this program is actually doing instead of sitting back and knowing everything is okay because my GUI is taking care of it for me and it was actually much quicker and less tedious. I became more confident and knowledgeable in my craft, which is a constant goal of mine. Hopefully this example can give you an idea of what adopting command line to your workflow can do for you. Obviously there is a lot more you can do, but I think the main principle stays true no matter what you’re using command line for.
I’m not one to only talk about the good of certain things, but the cons must also be evaluated as well. By reviewing both, it lets you make a better decision on whether you want to do the task in question. The cons of adopting command line for me was that there was a big level of fear I had to conquer. It’s always really scary (at least for me) trying to dive in to a new skill you know absolutely nothing about. I’m going to make mistakes. I’m going to break things. I’m going to fail. I’m going to feel lost. There is no way around it and I don’t think there are many who like feeling that way.
But I have a rule. My rule is, if I’m not using a certain workflow because it’s not efficient, that’s fine. If I’m not using it because I don’t want to take the time to learn it, I have a problem with myself. So, I used that rule I hold myself to, and said, fuck it, let’s learn some command line and new tools.
Wrap it up
The purpose of my article was to give someone on the fence, or not using command line a better idea of what it’s like to adopt it in to your own workflow. I’m no super command line genius and will never claim to be, but I enjoy sharing my experience and hope it can help others make their own decision on using this tool in their workflow.
My answer to, should you be using command line is, if it’s going to improve you, absolutely. If not, maybe the right time or project hasn’t come around for you to reap the benefits, but it never hurts to explore new tools.
If any readers have had similar situations, experiences, or opinions, I would love to hear about them in the comments. It’s a topic I’m quite interested in hearing more opinions about especially, with the direction front end development has moving.