Learning The Linux Command Line Is Not Optional

Learning The Linux Command Line Is Not Optional

I started learning how to use the command line just so that it looked so cool, only to realize how powerful it is compared to a GUI.

ยท

5 min read

Someone starting with software development often would argue about how learning to use the command line is essential, and many would call it counterproductive. I started learning how to use the command line just so that it looked so cool, only to realize how powerful it is compared to a GUI. Using the command line to pass instructions to the computer is the most expressive and natural way of interacting with the computer. I use the term expressive because we, as software developers, are used to writing programs, and using the command line comes without any friction of adapting to something new.

I cannot stress more that anyone starting with software development as a career must learn how to use the command line, but if reasons are what you need, here are a couple that will entice you to start learning.

A Few Tasks Can Only Be Performed Using The Command Line

Here is the first and foremost reason. As a software developer, you would come across many tasks that would need you to have some basic knowledge of the command line, or else you would be unable to perform the task. Here is an example to illustrate this point. If you are developing using JavaScript, you could use NPM or Yarn to manage your application's dependencies. NPM is a command line tool that JavaScript developers use to manage their application's dependencies. Some IDEs like WebStorm allow you to install dependencies using a GUI, but at the end of the day, even these GUIs use the command line to pass the correct commands to the shell. The problem is not limited to installing dependencies; you often also need to run various NPM scripts to start the development server or to build your application. Hence, you will be stuck if you do not know your way through the command line.

Makes Managing Severs Easier

The Linux kernel dominates the data centers as many servers today run on Linux. Using the command line interface and the SSH protocol, you can easily connect to a remote server and run the desired commands on the server. This gives you the power to manage and configure remote computers running at a data center in another part of the world. Command line makes managing servers a breeze. It allows you to start and stop various services, install updates to various packages and perform regular maintenance tasks. If you are a server admin or even someone managing and maintaining a few applications on a server, you must work your way through the command line.

It's The Closest You Can Get To The Kernel

The shell (the software that passes your commands to the kernel) is the closest you can get to the kernel. The Unix shell was the de facto standard for interacting with computers decades before GUIs came into existence. The bash shell, which in most cases is the default Linux shell, was highly influenced by the Unix Shell and hence had the same rich heritage of extensive command line tools. One of the early adopters of Linux adopted it because the bash shell made complex tasks possible compared to Windows NT because it did not offer a powerful command line interface. The bash shell is the closest you can get to the Linux kernel and lets you perform complex tasks that a GUI might not be capable of.

Provides A Granular Control Over Your Computer

As a software developer, you need many dependencies or software installed on your computer, which helps you during your development process. You might need a webserver like Apache or NGINX, a database server like PostgreSQL or MySQL, a runtime environment for JavaScript like Node, other programming languages like PHP or Python, package managers to manage dependencies of your software like NPM for JavaScript, and Composer for PHP and the list goes on. The command line makes it possible to install, update and remove this additional software and helps to configure each dependency. You get granular control over the configuration files and can tweak each software however you want.

Recurring Procedures Using Bash Scripts

Once you get comfortable using the command line, you can take your skills to the next level by learning how to write bash scripts. Bash scripts help you automate various tasks on your computer. Bash scripts are super helpful and help you run procedures at regular intervals of time, such as clearing the cache, downloading and installing updates, fetching data from a remote server, synchronizing files on multiple machines, comparing large software applications for consistency by comparing files from a git repository and so on. These are just a few examples, but ask a server admin, and he will tell you that bash scripts are his best friend.

Server Administration and Bash Scripting, In-Demand Skills

There is no doubt that as a software developer, the knowledge of working with the command line is going to help you take your career a step further. But understanding how the command line and bash scripting works opens up many opportunities that give you the ability to perform server administration. Server administration and bash scripting are highly in-demand skills and are often expected from a full-stack developer. Understanding how things work under the hood allows you to explore and understand how you can achieve complex tasks with your programming skills.

In conclusion, learning the Linux command line is not optional for software developers. It provides a powerful and natural way of interacting with the computer, and it is essential for performing many tasks that cannot be done with a GUI. The command line also makes managing servers easier and provides granular control over the computer. Additionally, learning how to write bash scripts can help automate tasks and open up opportunities for server administration. By understanding how the command line and bash scripting work, software developers can take their career to the next level and achieve complex tasks with their programming skills.