DEV Community

Cover image for Why Every Developer Should Consider the Linux & Neovim Leap
stungnet
stungnet

Posted on • Edited on

Why Every Developer Should Consider the Linux & Neovim Leap

Table of Contents:

Introduction

When I first began coding, few things were as intimidating as confronting a barrage of error messages in the terminal. Attempting to decipher these messages and pinpoint my missteps felt overwhelming. This initial experience instilled in me a genuine apprehension towards the terminal. It appeared far more intricate compared to my then-favored IDE, VSCode. Within VSCode, running code was as simple as a click of a button. For Git operations, a user-friendly GUI on the side shielded me from the underlying complexities. Moving, creating, copying, renaming files done with the click of my mouse. While these abstractions seemed helpful on the surface, they inadvertently fostered a superficial understanding. I felt confident, believing I had grasped the nuances of what I was doing. In reality, my comprehension of the terminal and its intricacies remained elementary.

Image description


Needing Change

VSCode's comforts, once my sanctuary, started feeling more like a limitation. Whenever I faced challenges needing deeper system interactions or more nuanced controls, I'd dodge or find workarounds. Habitually, I'd resort to Stack Overflow, blindly copying solutions. This makeshift approach held until a project showcased my shortcomings. Up against a merge conflict, while my IDE hesitated, my colleague tackled it effortlessly using the terminal. This vivid contrast was a wake-up call that to grow, I needed to learn the terminal.

Image description


Turning Point

With this realization, I embarked on a quest to understand the terminal. My research led me to two pivotal decisions: transitioning to Linux and adopting Neovim. The appeal of Linux lay in its terminal-centric design; it compelled daily terminal interactions, something I've come to appreciate deeply. Neovim's allure came from an eye-opening video by ThePrimeagen titled "My Developer Workflow - How I use i3, tmux, and vim." His seamless window navigation with i3 and rapid file transitions were nothing short of mesmerizing.

If he so happens to read this, thanks for your constant content, vim btw.


Into the Terminal

Image description

  • Linux: Transitioning from Windows to Ubuntu felt like navigating a maze. The initial days were filled with challenges: from decoding unfamiliar directories to wrestling with package installations. But, configuring i3 opened up a new realm of efficient window management, while tmux elevated my terminal game. By embracing these tools, what began as a daunting journey transformed into a masterclass in seamless navigation and multitasking. Ubuntu became less of an OS to adapt to and more of a playground.
  • Neovim: Starting with Neovim was an adventure on its own. I chose the path less taken by avoiding pre-built configurations. Sure, it made my journey steeper than most, but the satisfaction? Unparalleled. I remember the euphoria of setting up my first plugin manager, tweaking the theme, and personalizing options. Every step felt like a revelation. While VSCode offered convenience, Neovim gave me control. But beyond its capabilities, what bolstered my Neovim experience was its incredible community. The /r/neovim subreddit became an invaluable resource for me, teeming with enthusiasts who were ever-ready to help, share, and guide. Each plugin I added, each configuration I tweaked, required research and decision-making. And clicking 'install' on VSCode just couldn't replicate that deep sense of engagement. After about a week of immersing myself, not only did I craft a working config I was proud of, but I also picked up a bit of Vimscript and Lua, thanks in part to the collective knowledge of the Neovim community.

Image description


Looking Back, Looking Forward

In another blog post last week, I talked about how diving deep into Data Structures and Algorithms profoundly enhanced my coding skills. Similarly, my expedition within the terminal has reshaped my perspective. The more time I invested in this environment, the more intuitive it became. I've grown adept with key bindings and configuring to my liking. Currently, my arsenal comprises i3, Neovim, and Ubuntu. Coding on any other OS now feels like a step back; I miss that seamless dance between windows and tasks.

A list of benefits I've seen:

  • Mouse-Free Productivity: I find myself rarely using the mouse now. Engaging deeply with my code without switching between keyboard and mouse feels more fluid and immersive.
  • Decoding Errors with Ease: Lengthy error messages that once overwhelmed me now seem more navigable. My relationship with them has evolved into one of understanding.
  • Unveiling System Depths: Venturing into the terminal, I've gained a deeper grasp of the foundational technologies that govern our digital realms.
  • Tailored Workspace: The power to mold and customize my environment to my exact liking is liberating. Every detail is a reflection of my preferences.
  • Rapid File and Window Transitions: My productivity has soared due to the swift navigation between files and windows. Every second saved compounds over the course of a project.

Some potential pitfalls:

  • Over-customization: The ability to tailor every detail can lead you down the rabbit hole of relentless tweaking. There's the temptation to perfect your config continuously. My advice? Once you have it in a functional, productive state, let it be for a month or so before revisiting. Nowadays, I rarely make changes to mine.
  • Steep Learning Curve: Diving into Linux or Neovim can be daunting for those accustomed to more user-friendly interfaces. The initial investment in learning can be high.

I wanted to share this journey with you because diving into Linux and Neovim opened new doors for me in coding. I genuinely believe they can offer you some fresh perspectives and tools, making coding even more enjoyable and efficient. Give it a whirl; it might just be the game-changer you didn't know you needed.


A Guide to Getting Started:

Image description

If this post has peaked your interest in wanting to take that step into the terminal this list should do you well:

Ubuntu Installation : I use Learn Linux TV for all my Linux needs, he does great content - Ubuntu 22.04 LTS - Full Installation Walkthrough

If you found value in this post, please give it a like or drop a comment. Your feedback helps and is much appreciated. Happy coding!

Top comments (8)

Collapse
 
nelson_bermeo profile image
Nelson Bermeo

Thanks for posting your journey. I am quite new to programming overall and currently use VSCode. I'm learning the basics of Python right now in my Computer Science class so VSCode works pretty well for that. But in the future you are saying I will need the control that the Linux and Neovim offer? I am happy you shared this and will take a look into the topic myself with the resources you provided. Also, I look forward to reading the post you mentioned in this post. Thank you again!
Happy Coding

Collapse
 
stungnet profile image
stungnet

To clarify, I'm not implying that every coder will "need" the control that Linux and Neovim offer. Tools like VSCode or other IDEs can be perfectly suited for many developers, and one can craft a proficient workflow within them. My journey into Linux and Neovim was sparked by an apprehension towards the terminal, which I once found daunting. Rather than fully understanding it, I often leaned on the comforts of more visual tools to sidestep challenges it presented. Delving deeper into tools like Linux and Neovim was my personal response to address this gap in my skills and to immerse myself in a more hands-on approach.

If you're intrigued but not ready to leap into Neovim, a good starting point might be to enable the Vim plugin within VSCode. This way, you can get a feel of Vim's keystrokes and actions without fully transitioning away from your current environment. Whatever path you choose, keep exploring, and most importantly, enjoy the process! Happy coding!

Collapse
 
pxlmastrxd profile image
Pxlmastr

Just about to switch myself, thanks! Although I already am very familiar with the terminal, I want to switch to Neovim to code faster. Good article! 👍

Collapse
 
stungnet profile image
stungnet

The list should serve you well!

What language will you be using?

Collapse
 
pxlmastrxd profile image
Pxlmastr

Rust. It's better on linux

Collapse
 
dablyputs profile image
dablyputs

I've gone the other direction. I just use the vim extension in vscode.

Collapse
 
stungnet profile image
stungnet

Great place to start, enjoy!

Collapse
 
t1to profile image
Tito • Edited

I say in jest: this article should have been titled "I forced Linux and Vim onto myself because I was too stubborn to RTFM otherwise"

Fare thee well, explorer