Why I switched from Windows to Linux
I used Windows for the first five years of my programming journey. WSL, PowerShell, Git Bash, the whole compatibility dance. It worked well enough that I never questioned it. Then I tried Linux on a spare laptop and within a week I could not go back.
The breaking point
The final straw was a Windows update that rebooted my machine mid-compile, killed my terminal sessions, and reset a system environment variable I had set manually. I lost about two hours of work and debugging time.
That specific incident was annoying but not catastrophic. What it made me realize was how much time I had been spending working around Windows quirks instead of working. Path separator issues, line ending problems, Docker running in a VM through WSL2, tools that behaved differently than their Linux documentation described.
What changed immediately
Terminal. The Linux terminal is not a compatibility layer on top of something else. Tools like grep, sed, awk, and jq work exactly as documented. Shell scripts run without translation. I stopped spending time on "works on Linux but not on Windows" debugging.
Docker. Docker on Linux runs natively. No WSL2 backend, no Hyper-V, no file system performance penalty when mounting volumes. Containers start faster and builds are noticeably quicker.
Package management. Need PostgreSQL for local development? sudo apt install postgresql. Need Redis? sudo apt install redis. On Windows, each of these was a separate installer with its own PATH configuration and service management quirks.
The transition
I installed Ubuntu on a spare laptop first to test for a week before committing. My checklist was simple:
- Can I run my development environment? (Node, Docker, Git, my editor)
- Do my peripherals work? (Monitor, keyboard, mouse, audio)
- Can I do everything I need for daily work?
All three were a yes within the first day. The biggest adjustment was keyboard shortcuts, which took about a week to rewire in my muscle memory.
What I miss from Windows
Almost nothing for development work. For non-dev tasks, I occasionally miss specific applications that do not have Linux versions. For those rare cases, I either use the web version or keep a Windows VM in Proxmox.
Gaming was the other concern. Proton and Steam on Linux have made this mostly a non-issue. Most of my Steam library runs fine. For the few games that do not, I have a Windows partition I boot into maybe once a month.
The honest downsides
Hardware support. Most things work out of the box, but occasionally you hit a laptop where the Wi-Fi chip or fingerprint reader needs extra work. Buying hardware with known Linux compatibility (ThinkPads, System76 machines) avoids this entirely.
Initial setup. Windows is ready to use out of the box. Linux requires decisions: which distribution, which desktop environment, how to configure things. This is front-loaded effort that pays off quickly, but it is real.
Professional software. If you need Adobe Creative Suite, Microsoft Office (not the web version), or other Windows-only professional tools, Linux is not a straightforward option. For pure development work, this has never been an issue for me.
Was it worth it?
Absolutely. My development environment is faster, more predictable, and entirely under my control. Updates happen when I choose. The system does not restart without my permission. Tools work as documented. The time I invested in the switch paid for itself within the first month.
Sources
Related posts
Setting up a productive dev environment on Linux
The actual tools, terminal setup, and configuration I use for web development on Linux.
Why I use Linux for web development
My case for using Linux as a web development environment, and the practical advantages it has over Windows.
Why Pop!_OS is my Linux distro of choice
What makes Pop!_OS stand out as a Linux distribution for developers, and why I chose it over Ubuntu, Fedora, and Arch.
Enjoying the blog? Subscribe via RSS to get new posts in your reader.
Subscribe via RSS