I’ve been developing Windows apps since Windows 3.1, back in the 90’s when the first program I wrote was an energy tracking screensaver along with a DOS TSR (Terminate Stay Resident) equivalent. In those days you booted into DOS first then started Windows with a command. This was before Visual Basic and Delphi existed, when you wrote Windows apps you had to explicitly code everything including font handling, display contexts and message loops. It was quite fiddly.
A friend had got into Linux, but as far as I can see he only ever used it to benchmark his hardware by measuring how long it took to build Linux from source. Then around 2011, after fifteen years of working on Windows, I found myself needing to test some C code. MS VC was fine but Microsoft was a bit behind the curve with C99 support and I learned enough Ubuntu to let me install and run gcc and clang C compilers. When I started doing web development, it was easier to setup a local test web server on Ubuntu.
I still program on Windows as well as on Ubuntu and Raspberry Pi OS (Debian). I learned Rust a couple of years back to rewrite a C++ poker hand evaluator and found a curious thing. I compiled and ran it on my four-year old Windows 11 PC, then on Ubuntu running under Hyper-V on that same PC. It took 175 ns to evaluate a hand on Windows and 125 ns on Ubuntu, i.e. it was 30% quicker. Perhaps Windows Defender was the reason for the slower time.
Why consider Linux?
- Not just for the faster performance, but applications seem to need less RAM. I can just about get by with 32 GB RAM for my Windows PC but for Linux 16 or even 8 GB is enough.
- You can try Linux out without having to commit to it by installing Linux on WSL, Hyper-V or VirtualBox. This is a good way to learn Linux while you still have to use Windows.
- Many PCs can’t upgrade to Windows 11 but will happily run Linux. Get some extra years out of them.
- Being able to use Linux and develop software for it is a useful skillset for any CV.
Reasons why Windows can be irritating
- Linux updates mostly don’t need a reboot and you can choose when to have them.
- Windows slows down over time but Linux doesn’t. This is the registry getting cluttered up with dead entries. Every time I run an app, or install or uninstall software or a dozen other things, the registry accumulates more dead entries. It’s a database and those dead entries gradually slow it up. I have a commercial registry cleaner and it typically removes between 300-600 dead entries when I run it every five days. That’s maybe 30,000 a year. The registry on my PC has about 800,000 entries. It’s been running for four years and still boots up in 20 seconds. My work laptop by comparison is three years old and takes longer to boot and the fan comes on a lot more often.
- There are a lot of processes running in Windows, and many could be disabled to improve performance if only you knew which are safe to switch off.
- As a software developer, it feels that Windows is getting more restrictive over time. On my work PC, I’m not local admin. Any requests to elevate such as installing software or modifying the HKLM registry have to be approved by a third party application which logs the requests. If I need to kill a process that’s hanging, I have to run an elevated cmd and then run taskmgr to be able to zap it. Additionally, compiled software has to be signed before it can be distributed due to customer’s increased security requirements.
- Unlike Windows, any telemetry in Linux is 100% opt-in and you can see what is being sent if you do allow it.
Microsoft wrote the best text editor on Linux
When I first started developing on Linux, I was really limited to C and C++. Then I learned Python and how to compile and run C# on Linux. That’s when I noticed the faster performance on Linux. It’s a bit ironic that Microsoft have encouraged switching to Linux by providing the best Linux editor (VS Code), as well as .NET and giving Visual Studio the ability to remotely debug.
Windows probably has the edge with GUI development but Flutter now provides a route to developing Linux GUI apps if you don’t want to go down the GTK or QT route. Many Linux utilities are run from a terminal and don’t need a GUI.
Conclusions
I haven’t made the leap to being a full-time Linux user as I have a lot of games that can’t run on it and I need to support a Delphi project. After 30 years I still like Windows despite its flaws. But now all of the non-work development I do in Rust, Flutter and C# can be done on either Windows or Linux. I’ve mentioned Ubuntu but there are many other distributions available, and you should spend a bit of time finding your favourite.