Why backend engineers should make CLI's
Tags: tools, discuss, automation, beginners
Published: 2024-03-25 21:12:15

In this article, I am going to focus on why I think people are missing out by not making CLIs. Almost everyone I know starts with web development because it is one of the things that gives results fast, which makes us go "me best, me genius," and that's exactly why I am still learning about web development. But there comes a point where you just want to be a developer rather than a *web* developer.

## It takes too much time

I wanted to be able to zip my files without using 7zip because I didn't want to learn about their CLI, which is complicated for no reason, and because of this, I always had to open the GUI. 

Now if I made a website, that would just be too excessive because I am making a server with Go, having my UI with HTMX, containerizing my application in a docker, using nginx, and let's encrypt to have https, and finally using docker-compose to have them in one container to run on my Linux server on the digital ocean.

Or I can think about the functionality that I wanted, the kind of input I wanted to support, learning about how to read a file, and later how to walk a whole directory with Go recursively, and figure out that there is a small thing about using backslashes with the `zip.Writer()` function. 

In the latter case, I was focused on the thing I wanted to learn rather than all the other junk that stopped me from actually getting into the thing that I wanted to learn. 

Making an entire website with all the bells and whistles for a little feature that you want to develop and figure out is too much. Just make a CLI.   
## Reusable code

Another benefit of making a CLI is that you can reuse your code, i.e., if you decide to make a CLI that takes a video and converts it into different formats, something that YouTube does to deal with the varying internet bandwidth of its users. 

After making the CLI, that part of the puzzle is now demystified, which means you can use it in a project that has videos; it almost acts as a microservice. 

## The Bliss of Finishing

Everyone has a lot of unfinished projects, which is completely fine, but sometimes your resume needs to have some complete projects that have the appropriate readme, which people can either install or see because that gives you credibility.

Remember, sometimes you have to finish the thing that you start. CLIs, in my perspective, make the probability of finishing higher because the problem you are going to tackle is by nature going to be small in scale. This also has the byproduct of giving you confidence, which is rather helpful, especially when you are starting. 

## It is cool

My favorite thing about making a CLI is that any time you use the thing that you made and it just works, it makes everything you work for seem worth it.

My advice is that when you feel overwhelmed by the things that you feel like you have to do or just feel like programming is losing its spark, just make something. It doesn't have to be grand; it only needs to be something that you want. It is by far the quickest way to feel the fire again, and CLIs are just a nice little middle-ground thing that you will use and will need.   
## Final Thoughts

If you haven't made a CLI yet, I would like to say just try it, or maybe start by customizing your command line to look the way you want to. You spend a lot of time there, so having ownership over the things you use is important. Having fun is also important. 

Note: I got this idea from the freecodecamp.org video about [Getting a job](https://www.youtube.com/watch?v=6nz8GXjxiHg&t=5376s&ab_channel=freeCodeCamp.org) It is a great video, and you should check it out if you are trying to get a job. 

If anyone wants to have a conversation about tech in general or talk about some of the cool CLI they've made for themselves, I'd love to talk about it. My information is on my profile.