The Windows Developer Experience

A blog about Linux, POSIX scripting, Computer Hardware, Cars, and Anything In-Between

Many developers today use a Unix-like operating system to work. Many people just accept this as a fact and move on, simply thinking that people enjoy the feel of macOS or Linux more. However, most who think this haven’t tried to develop on Windows because if they did they would know the true horrors of what takes place on Windows development.

The Setup

Getting ready for software development on Linux is relatively straight-forward. Simply type a package name into the GUI software to download the package or use the terminal package manager and voila, VSCode, Node, Rust, Go, Java, whatever is installed and ready for you. To couple with the fact that most Linux distributions come with either gcc or clang installed, C and C++ development can be accomplished right out of the box!

On macOS the story is slightly different, but not by much. First, HomeBrew must be installed which installs Xcode development tools along with it. This Xcode installation is done right through the terminal, only takes a couple minutes, and along with install Swift and Objective-C compilers, it also installs many more tools, such as git and make. Overall, this also painless as the whole process can be done with one line of code in the terminal.

But what about Windows? Have fun.

Everything open-source sucks on Windows. You can’t use WSL (Windows Subsystem for Linux) within reason on VSCodium, instead you have to use proprietary Visual Studio Code. Also, if you want to use any native systems programming language such as C or C++ or Rust, the Windows SDK must be installed, so say good bye to about 10GB of disk space. Then CygWIN must be installed, and some other random obscure programs to emulate a Unix experience on Windows.

Actually Developing

I have to say that I am slightly biased as I have been using Linux for at least 2 years and a tiling window manager for about 6 months, but Windows just feels clunky and slow. Every time I boot into windows I have to give it about 15 minutes to run all of its startup processes, and I don’t run old hardware either. I currently am rocking an i9-9900K with 16GB of RAM. That should be plenty to boot up Tiny11 in a reasonable amount of time, but nope. Windows also doesn’t allow as fine grained control and it’s internal font rendering plain sucks. Mac and Linux’s font rendering is so much cleaner and it looks like actual text, not some yellow and purple mess.

The installation process also isn’t fun at all. First off, it has gotten much better ever since winget was added, but even then it can still get tedious. I wanted to play some Minecraft the other day, and while I mostly play it on Linux I did try it on Windows. The experience of just setting it up was awful. While some of it is on my part, no one can really be blamed. First off, I used PolyMC because I wanted a sensible Minecraft Launcher. However, because of this I had to install Adoptium, which was a nightmare. The website is a mess, and while a person can stumble through it, there should be an easier way to go through such process.

But back to developing: everything is so slow compared to Linux. Especially for Rust. For some reason the rust-analyzer takes way too long to cache tokens but also its completion is so slow even with the proprietary VSCode version.

Its not all bad though. There are plenty of guides for Windows and most programs support it. But for a developer who is not focusing on something Windows specific or even platform agnostic, one of the best developer experiences can easily be classified as going to a Unix operating system, as mostly everything developed for Linux can work on Mac, especially if it doesn’t deal with system internals.