I've read days ago a #discuss about why people prefer to use Mac (or Linux in my case) for developing instead of Windows, starting a kind of evergreen "OS war", however, my question is: is it so bad to use Windows in dev? independently from what kind of dev you are (web, mobile, desktop etc.)
PS This in NOT meant to start another OS war, please don't, my question is only about real and justified reasons why Windows is not so recommended for dev, even because I'm not a Win user.
Oldest comments (28)
If Windows works for you and if it does not limit you, just use it!
This is what I think, I mean, yes Windows sometimes is not so flexible and you need to make some effort to set up something, while on Linux (just because I use it as main OS) all you need is there and it's so simple to get it, but if you enjoy Windows or if those limits are not a problem for you, why not use it?
Windows doesn't have a mature package manager like all the linux distros do, but Chocolately and Scoop go a long way to solving that problem.
Finding Scoop made me fall in love with Windows again.
Yeah, getting into Ruby was what got me away from Windows. I suspect, though I haven't been watching super carefully, that Windows has been putting in work to improve for webdevs/open source. Sure seems to be what Microsoft as a whole is doing.
It's definitely not bad to use Windows for development, it just depends on what kind of development you're doing. Visual Studio is a really powerful IDE, and people that use it basically live in it. This makes it awesome for doing things in the Microsoft ecosystem (Windows apps, web development using .NET/C#, deploying to Azure). For anything outside of that, it definitely takes a bit more work, and you'll find that resources are hit or miss, depending on what you're trying to accomplish. PHP and Javascript/Typescript web development? Sure. Ruby on Rails? Maybe not so much. As a previous system admin in a Windows-centric environment, I always found it frustrating to do things outside of the Microsoft bubble. Simple things like needing to SSH into a Linux server always seemed to be venturing into a territory that Microsoft people didn't care to support. But that seems to be changing.
This is one of the reasons a lot of people are liking Microsoft's new direction. Since Linux servers can run on Azure, it's actually in their best interest to support diverse workloads and build tools that give all developers a good code/compile/debug workflow. Windows Subsystem for Linux is a monumental achievement, but also they're starting to include tools in new builds of Windows like curl and tar that help developers outside of the traditional Visual Studio workflow feel more comfortable. This also means you can more confidently develop scripts on your Windows machine that should work in production environments.
I also think if you're doing development on Windows, you should not expect the experience to be as good as it would be on a Macbook Pro if you don't spend about the same on that Windows machine. Far too many people buy $500 Dell/HP/Lenovo machines and think that their experience is bad because of Windows. People that buy $1500-2000 Windows machines like a Dell XPS or Surface tend to like their systems just fine (in my experience). Those cheap machines always have lower quality displays, slower hard drives, frustrating track pads, and plastic cases. All of that leads to a system with a poor UX, and makes it not something you want to use every day.
In my office we REALLY tried to let people use Windows. It was a huge pain in the ass: git, php, composer and other tools NEVER worked right.
Since the introduction of docker for windows, Windows has been a pleasant experience for all kinds of development work
As for shell environment, if one is comfortable with bash, there has always been git bash for windows so people coming from other os environment feel at ease.
I have done my fair share of dual booting between Linux and windows, removing windows completely and sticking with Linux but since docker for windows was released, there was no point anymore.
With the release of wsl, things just keep getting closer to a full blown Unix environment. I rarely use it and just stick with docker because its so cool.
For me it feels too slow to do anything dev related with Windows. I only use it for gaming because most of games I play only run on it.
Also I NEED a terminal and bash on windows is not enough for me (it is very slow compared to a terminal on macOS or GNU/Linux).
I actually prefer Windows over Linux for development. IDEs and text editors are mostly cross-platform, any popular programming language is supported, and most of the times you can get around everything you would do with bash with some GUI and get the same results.
But the most annoying thing to me about Linux vs Windows is installing things. I really appreciate clicking "continue" a couple times to install Docker on windows than copying and pasting several lines on the terminal form the official site to get docker running, not to mention when you actually have only a source file in Linux.
I prefer it. The only reason I have a MacBook is for app development. All of the software I use for development is cross platform, and dual booting was too much of a pain. Windows fits perfectly for what I do, and when I need to do some app development or development on the go I just hop over to the MacBook.
This question is flawed because it doesn't give any context. The best development environment entirely depends on what you are developing and the tool chain your team chose. If you are a C# dev Linux sucks. If you are a Ruby Dev windows sucks. Etc
Personally I've lived in Visual Studio on Windows for 20 years and have never been unhappy. But I'm a C# guy so it makes sense.
Something interesting to note is that Mac OS can't be run on anything other than Mac hardware without breaking the license agreement. Windows, Android, and Linux can be run on anything. Also Apple force you to have a Mac OS machine to install dev builds on iOS. This means if you want to do cross platform Dev and only have one machine you are forced to have a Mac.
yep, it makes sense, good point
As an web dev "stuck" temporarily on Windows (the Why is a different story) I can tell you is bad because the lack of support, not being used by the majority is not tested on this platform. I spent entire days trying to fix errors on open source projects (NPM, Node, and packages) including workaround the Docker features that don't work on Windows.
I can pinpoint some examples on Why is bad:
All of these issues may be mitigated, if you know what are you doing they will not exists, but from experience I can say this things happens.