As a beginner, why you should use Linux (And try VIM)
Tags: beginners, linux, programming, vim
Published: 2024-02-26 13:34:35

Starting to learn coding can feel like an exciting adventure. But sometimes, it can also feel overwhelming, like stepping into a world of unknowns. This post isn't about OS or IDE wars, but it's simply to share how I've enhanced my experience as developer and my relationship with computing using this tools. All knowledge is valuable, regardless of the platform; what truly matters is the depth of understanding, going beyond the surface level. For me, this experience has been amazing. 

So I have 3 main reasons why you should consider using Linux and why it worked (and still works) for me:

## It's Liberating! 💪

If there is something about Linux that I really enjoy is the level of freedom and flexibility that I haven't matched by other OS. 
In Linux, you have access to every part of the system, which helps you understand how the operating system's software works, from the hierarchy of processes and directories during boot to he loading of programs. This freedom, combined with a bit of Bash and some dotfiles, allows your development environment to be uniquely yours, configured with your preferences and coding style.
The key here is experimentation, testing and customization. Didn't like the default colors and shortcuts of tmux? Create and modify them to your liking! Wish there was a terminal command to execute a specific task? Write that command and combine it with fuzzyfinder to easily execute that long command with the correct parameters!
As a developer, you'll spend a significant amount of time sitting in front of your computer, so why not make things simpler and more beautiful for yourself?

## You're in control... and it's Fast!! 🎮

You probably heard, or will likely hear, about how Linux systems are known for their speed and superior performance, especially on older devices. This is indeed true, and the versatility of the Linux kernel, coupled with its lightweight nature, makes it incredibly hardware-friendly.
Have you ever stopped to think about how the actions you take on your keyboard are related to the resistors and integrated circuits inside your computer? Or how your system allocate memory in RAM and Swap? While these concepts may not be directly tied to the operating system itself, Linux provides a unique opportunity to gain a deeper understanding of hardware communication through tasks such as configuring and installing drivers (which you'll undoubtedly need to do at some point), setting up your network, USB ports and more.
This knowledge, coupled with the freedom that Linux affords, allows for further customization and optimization of performance. Particularly if you choose to install Linux without a graphical installer, configuring and allocating system resources manually, while it may seem daunting (and it is), is an excellent exercise that puts many concepts into practice. Not only will you gain valuable knowledge, but you'll also acquire new skills that will serve you well in your journey as a developer.

## It's Open Source!!! 🌐

Finally, one of the things that led me to choose Linux-based operating systems, and undoubtedly one of the best aspects of these systems, is that they are all open-source projects. This is a truly marvel because, in addition to enabling the benefits discussed earlier, there's also a vibrant and active community of developers willing to help, working on updates, bug fixes, and many improvements. New updates are released constantly, and bugs are fixed with ease because as soon as they are discovered, they are reported and addressed promptly.
This community and open-source nature of the project extend beyond just the operating system itself and encompass the entire ecosystem - meaning that programs, drivers and almost everything else you encounter on Linux is open-source. This alone is incredibly compelling, but what I'd like to emphasize at this point is the power of being an open-source project. **YOU** have the opportunity to contribute, to develop, to correct, and to enhance, ultimately making life better for other users.
The best exercise, and undoubtedly the most rewarding experience to have in both personal and professional portfolios, is the pleasure of contributing to an open-source project and being part of this community.

## Honorable mention to VIM 💻:

Of course, I cannot finish this post without talking about my current passion: Neovim. I was a regular user of VSCode and IntelliJ until I decided to dive into the experience of using a terminal editor like Vim. I went through all the stages, from rejection and denial to acceptance and mastery, and without doubt, my Neovim portfolio on GitHUB is the project I've invested the most time in.
In this topic, I don't want to discuss which tools are better or why don't using a mouse increases productivity, as this is highly subjective. VSCode, IntelliJ and others have a lot of value and utility. What I mean by 'use Vim' is not about the tool itself, but about the entire process of configuring from scratch, learning bash and Lua, and having your own environment for coding.
While LunarVim and other pre-configured setups offer a friendlier interface, they 'simplify' too much, which isn't the purpose. Do you know what an LSP is or how VSCode notifies you about a missing semicolons in your code? Or how PyCharm detects incorrect indentation and color codes each term correctly? This experience has been incredibly rewarding for me, and now I have a customizable environment with functions and keymaps that make sense for my use case.

--- 

Finally and once again, this post isn't about which IDE or OS is better, or about how using Linux will make you a better programmer. All these experiences are inherent to the system and the tool, and they can be achieved on Windows, Mac, or Linux using Notepad or the latest program with endless extensions. The main objective is to show how mindset is what truly matters, and how important it is to delve beyond the surface and immerse oneself in something deeper and more complex than just typing a few letters and lines of code into 
the most popular stack of today. For me, this experience was with Linux and Vim, which has helped me develop professionally and renew my relationship with programming.

And you? Have you had something like this? Share a bit of your experience and let me known if this content has helped you or been useful in any way!!

Best regards,
Pedro Masteguin.