Around a week and a half after I started my time here at Fonseka Innovations, something happened to me that I will never entirely forget. I was handed a Mac and told that all of my development would be on this from now on.
Of course, this is an age-old question. When it comes to consumers, they should choose the operating system they like more or are more used to. However, when it comes to professional software development, the choice becomes a lot more critical. Right?

General Use
The first thing that anyone will notice when switching from one operating system to another is the GUI quirks. Perhaps from it is legacy, Windows is known for its intuitive general desktop use. With a bit of practice and the Windows key's help, it is easy to quickly manipulate windows to fit halves or quarters of the screen, and Alt-tab or Windows-tab both allow quick screen switching.
Various touch gestures and slightly different keyboard shortcuts provide these features on macOS. Mission Control is a unique part of Mac, allowing you to see all open apps by swiping up with three fingers or pressing the command+up arrow.
As far as Linux goes, the desktop experience varied greatly depending on the desktop environment you are using. Most of them are more than capable, and it all comes down to personal preference. Customisation is the real strong point here. You can easily choose a desktop environment with the feature set you prefer.
Development Environments
Unix-suited
While Linux isn't strictly UNIX (only Unix-like), and MacOS is, they share similarities that allow a great deal of software cross-compatibility. Terminal operation is also similar, with software like iTerm2 and Homebrew closely mimicking Linux staples.
Suppose you need to develop iOS or MacOS applications. In that case, however, using a Mac may be your only choice, even if it is in a virtual machine. Xcode allows the simulation of iOS, which is essential for developers creating or needing to maintain iOS apps.
Windows-suited
Of course, if you will be primarily developing Windows applications, or using programming languages supported by Microsoft, development on Windows makes more sense.
C# sticks out in particular, the favoured language for Windows app development. However, C# development isn't limited to Windows. .NET 5 is fully cross-platform, so even if you need to use C# or F#, you may not need to use Windows.
Cross-platform
In the current climate, there aren't many platform exclusive code editors. Almost all major text editors are cross-platform. This includes VSCode, Sublime Text, Atom, and others. Even major IDEs (Integrated Development Environments) are cross-platform. Visual Studio has both a Windows and Mac version. Most JetBrains IDEs (PyCharm, IntelliJ IDEA, RubyMine, PhpStorm) are fully cross-platform, including Linux support.
If you need to develop iOS or MacOS applications, Xcode and AppCode may be your choice. These are exclusive to MacOS, so that may influence your decision.
Code Editing
In the current climate, there aren’t many platform exclusive code editors. Almost all major text editors are cross-platform. This includes VSCode, Sublime Text, Atom, and others. Even major IDEs (Integrated Development Environments) are cross-platform. Visual Studio has both a Windows and Mac version, and most JetBrains IDEs (PyCharm, IntelliJ IDEA, RubyMine, PhpStorm) are fully cross-platform, including Linux support.
If you need to develop iOS or MacOS applications, Xcode and AppCode may be your choice. These are exclusive to MacOS, so that may influence your decision.
Conclusion
There aren't actually many differences between the significant OS choices, especially if you are a developer. An incredible amount of effort has been put forward to allow programming (in whatever language or environment you would like) to be as accessible as possible. In the end, the decision comes right back down to user preference, just like any consumer looking for a computer.