I’ll go out on a limb and say,
“Real developers don’t give advice like this. And if they do, they should examine their own motives and biases before giving that advice again.”
It turns out that, although I might have just offended some readers, the limb I’ve climbed out on is nevertheless quite strong.
I only hear the “don’t use Windows” advice from people who dislike Microsoft, for one reason or another. I won’t go into the specific reasons for people disliking Microsoft, because I’m sure that many readers would find my list either far too short or far too long. And the fact that I worked for Microsoft for a few years might have some readers questioning my objectivity.
Personally and professionally, I am and always have been an operating system agnostic. I have preferences, sure, but I don’t artificially limit myself by taking an us-and-them attitude. It just doesn’t make sense in a software development career in the real world. I’ve seen far too many software developers plant their feet firmly into one operating system camp, and deride anyone who dares use a different platform as a target or as a development environment.
There is nothing wrong with using Windows for development, whether you’re targeting Windows or targeting some other platform. I have developed for and on multiple platforms over multiple decades, and have found no problem at all using Windows as a development environment or as a target for development. And contrary to what you might have heard, Windows is perfectly fine as a cross-development environment targeting non-Windows platforms, including embedded systems. All you need are the right tools available.
Over the course of their careers, professional software developers are fully expected to learn and embrace a wide variety of programming languages, programming paradigms, development tools, libraries, frameworks, hardware environments, and, yes, even operating systems. Cutting yourself off from an entire OS ecosystem, just because someone else doesn’t happen to like the organization that created that ecosystem, or had a bad experience with it in their programming youth, is artificially limiting your options over the long term.
Sure, people have preferences and opinions. Even I do. But at the end of the day, we use what we need to use to get the job done.
In addition to software development, I have done a lot of training of both aspiring and highly-experienced programmers. I have never run into any impediment when using the Windows platform for development or for training developers. And considering that, in the desktop/laptop arena, Windows still has over 87% market share (at the time of this writing, according to NetMarketShare), cutting yourself off completely from that market just because someone else doesn’t like it may not be the best career decision to make.
For the record, I like Windows (several versions, some more than others), I like Linux-based operating systems (several versions and distributions, some more than others), I like Unix (several versions, some more than others), and I like the many other operating systems and real-time embedded environments that I have worked with over the decades. Each has its idiosyncrasies, each has a learning curve, each has strengths, each has weaknesses, and each has its place in the operating system landscape.
As a professional software developer, even if you’re just at the beginning of your journey, I recommend that you strive to ultimately embrace it all, and learn as much as you can. You’ll have a richer experience and more opportunities. And you’ll know more than folks who artificially limit themselves and try to limit others.