The Command Line as a fault

I’m about to commit tech professional heresy. Back when I was a young techie pup the command line was how you did the heavy lifting of IT. I knew of cavemen like old admins who were great with computers and horrible with people who would swear by entering commands the old-fashioned way. One character at a time on the command line. These admins were purists. They had performed tasks at the command line since the start of their careers and were completely comfortable there. So what if some Unix commands had upwards of thirty or even sixty characters to perform one task? It was then, how we do things! I toed the line. I learned the syntax and switches. I developed mastery of troubleshooting those sentence-like commands. I’ve even developed scheduling systems that used those commands and performed flawlessly for years. I’m here to say that time is gone. If you have to go to the command line to perform a task in this modern age of point and click interfaces, there is a design fault in the system.

Let us consider the downsides to the command line interface. There are many. The first being that it’s very easy to misspell a command or enter a switch incorrectly. Then you’re left trying to figure out what went wrong. So you scroll to the keyboard buffer, for windows that means pressing the up arrow key and checking the command for typos. This can create some serious issues with some commands in that a typo can cause large-scale changes if not caught before pressing enter. After you’ve sorted this you’re at the point of re-running the command. Such efficiency! The alternative is a graphical window that runs the command with check boxes or drop down boxes for the options you’d like to invoke or include. This approach is very easy for all humans to understand and perceive as opposed to the garbled command sentence garbage filled with slashes, quotation marks, and other command line detritus.

Which leaves me to wonder why AWS and Azure still use the command line? It’s obviously antiquated. It’s inefficient. It feels developmentally lazy. These are the most modern computing systems currently in existence and they’re using an interface for some tasks that dates to the dawn of computing. Why are these modern systems forcing us to cook over a log fire while we have gas stoves readily available? Queue the command line defenders. Let’s address some of their arguments.

“Jason, there are times that you need to know what’s going on in the guts of the machine!” That is true. You’ve got me there. My whole argument fell apart at the seams with the utterance of that one statement. No, you really don’t. The only techie who needs to know what’s going on at that level is the developer. Then the developer needs to communicate effectively to you when something goes wrong, what that something is, and how to fix it. If the error message isn’t clear, concise, and offers a viable fix the developer has not developed the GUI enough to make it truly useful. We’re no longer talking about the strengths of the command line but the weakness of the GUI.

“I’d rather use the CLI because it’s faster! I don’t have to dig through menus and windows to find what I want to do!” See above. If the GUI is designed to be efficient, easy to use, and intuitive you won’t have to do that. Also, any command that you can perform on the command line should be made available to be invoked via the GUI. If it isn’t, shame on the developer or UI designer.

“I like to use scripts to do my job/organize my kid’s photos/whatever.” Awesome. Do that. Just don’t force your luddite tendencies on me because I like to do things in a more modern fashion. Just because you like to forge your own knives doesn’t mean I should have to stop buying them at a fair price if I need a new one. Some of us don’t see the need to work so hard to get basic tasks done.

Here I am. A command line hater. No sir, I don’t like powershell. It should go away. I feel the same about AWS CLI. Ditto regarding putty, and linux terminal – whatever they’re calling it these days on whatever flavor of linux you’re using. We live in a graphical interface world. We use them every day to get tasks done that are easy, efficient, and intuitive. The command line is none of those things. While dinosaurs were impressive in their day and even today, their time is past. I’d say the same about the command line. Let it die so we can progress to better things.