Some words about Linux
I’m experienced Linux user/developer.
I started to use Linux on my desktop about 15 years ago.
All because it was very painful to use Windows XP for developing software that was not aimed to run under Windows.
First of all I realised that GUI in Linux were even more handy than in Windows XP.
The most annoying issues were related to drives but there was many ways to fix them.
And there were almost no games.
Free of games time I spend to play with code which helped me to improve my professional skills.
CLI (command line interface, bash, sh, console, etc.) is a very powerful thing in Linux.
When I came up to this I find out that many task could be performed via CLI.
Also it is possible to create my own scripts that could work more handy than in Windows.
It is possible because in Linux many applications developed with CLI in mind.
Which means that even if you have nice app with GUI you also could use this functionality from CLI.
And you could combine all this logic together in your scripts.
Software package management in Linux is also much better.
You can install many things you require by simply typing in CLI
sudo apt install YOUR_APPLICATION_NAME and it will download application with all dependencies from trusted source.
Desktop environment with default software packages are also better in Linux.
KDE and Gnome provides you with full set of applications and drivers you need to open many file types: images, audio, video, document, etc.
Older Windows version were not able to open/view almost anything, in order to make it usable you have to install many things by yourself like drivers, codecs and additional 3rd party software to open view commonly used files.
But well I have to admit that Linux is not for everyone.
Mostly because many software could run on Windows only.
There are also workarounds such as running Windows inside virtual machine on Linux or connecting to remote desktop on Windows server.
You can easy install all tools you need launch/debug without issues, automate stuff and many more.
BTW Linux is more secure by design and because of Linux desktop market share is insignificant Linux is is not very good at running viruses, malware and similar stuff.
What was wrong with Windows?
From developer point of view Windows sucks almost in every aspect: mouse oriented UI even for servers, lagging, viruses, malware and huge CPU/RAM consumption starting from Vista. Windows 7 was better, but still has inappropriate tooling, bad CLI and no application “store” etc. Windows 8/RT was Vista like fuck up v2.0 like “pay us for lagging beta version of Windows 10”. In other words it was almost impossible to have smooth, optimized development workflow on Windows.
What we have right now in Windows 10 (may 2020)
With first release of Windows 10 there were not so many improvements for developers.
But for the last years many cool things were added.
Probably it all started as huge pivot from hating Linux and open source to embracing it.
Lets review what cool features we can have in Windows now.
Constantly improving PowerShell became much better and it transformed into cross platform product PowerShell core.
So now you can fell suffer from using PowerShell on Linux.
Power shell still feels pretty weird but is is much better than ugly CMD.
Built-in SSH client available in Windows.
Ant it is a big deal, now you can connect to production linux servers without using additional 3rd party software.
Yes there are several SSH clients available for Windows but they feels clunky and not cool.
Introduced Windows Subsystem for Linux (WSL) that allows you to run Linux from windows almost natively without extra overhead as with virtual machine.
WSL was intoduced in 2016 but it first versions were not perfect and were not able to provide you with full Linux power.
BTW CLI interface for first WSL was completely screwed up.
Everything changed in 2020 with WSL2.
Now Linux work faster with more core features supported and through really good CLI.
In order to work with all possible CLI environments MS developed Windows Terminal application
It work in a way as same applications in Linux and MacOs but it allso supports all possible shells: you can have CMD, PowerShell and Linux in different tabs in the same application window.
Core concepts of centralized application storage were implemented in MS Store.
But it was not enough for users and several CLI package manager for Windows appeared.
I consider Scoop.sh as a best solution but alternative Chocolatey tool is also should be mentioned.
And now we also have official MS CLI package manager called WinGet and it is cool.
Now you can easily install and keep up to date your applications using simple CLI commands.
Docker now is a must have tool for many developers.
You was able to run it only from virtual machine but after WSL2 it is possible to run Docker “natively” without any overhead.
This is a hude deal, no obstacles for developing and test applications in your local environment anymore.
No one of these things separately would make any difference but it is absolutely another deal if you have all them at once.
Steve Ballmer was a real narrow minded jerk who probably did more harm to Microsoft and it’s products than good.
Fortunately under new governance Windows OS became more reliable and friendly to developers.
10 years ago no one could imagine that Windows can be used as “GUI environment” that runs Linux natively.
But it happened.
So you can have all your CLI tools and stuff working natively in Windows.
Docker could be launched the same way as in Linux without any VM overhead.
You have proper terminal application with smooth fonts and GPU acceleration.
And there are several nice CLI package managers.
My verdict is that now you could consider Windows 10 as a acceptable alternative to Linux development environment.
What about Mac OS X
Mac OS X was considered as a “better Linux” desktop back in a day
because it is actually based on Unix like core
thus it has all those nice CLI features as Linux but with better and more stable GUI.
It was probably true back then but now it is not like this.
I’ve spent several month working on 2019 “16 Mac book pro with core i7 and my experience was terrible.
It is nowhere near what Apple fans told you.
Yes it has unix-like CLI with 3rd party package manager called homebrew.
OSX is also a more secure compared to Windows, but during last several years it get more and more attention from hackers community.
More business software could run on OSX natively compared to Linux.
Unfortunately there are still many drawbacks for comfort development experience.
First thing I’ve noticed is that despite everything desktop experience in Windows and Linux have more in common compared to OSX.
That is why using Win and Linux at the same time is easy, but it became really weird when OSX comes into play.
OSX if full of atavisms which are not about better UX at all.
It is only there because it was implemented in early Apple computers.
You can get used to it but it would not feel less stupid after all.
UI performance on my Mac book pro is not so perfect to.
Yes it is definitely smooth but not so fast.
Same applications are more responsive and less lagging on debian 10 with KDE running on similar hardware (HP EliteBook 850).
Me was shocked noticed that.
And Docker is a real pain in the ass for OSX.
It could run only from embedded virtual machine (similar as it was in Windows before WSL2).
That is why it is extremely slow, sometimes even slower than in Windows.
So if you are required to use Docker on your local environment than OSX would not give you any advantage expect “feeling cool” because you are own a Mac.
Last but not least thing to point out.
When you are in Apple ecosystem you have no option just to accept it as it is.
In PC world at least your has freedom to chose hardware that better fits your needs.