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.
Top 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.
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.
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.
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
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.
Windows OS is not bad per se.
Batch scripting is awful, PowerShell is not familiar to many users and it's kinda cryptic (I'll try to learn it).
Many programming languages are Unix-first since they use open-source stuff that is mainly made for Unix OS-es. Ruby, PHP etc. are in my eyes made just for Unix. Either they don't know/want/can port them properly to other OS-es.
Java and other JVM languages on the other hand are just fine.
All in all, I like Windows because I'm used to it. File explorer is great (e.g. I can't paste a path in OSX explorer to get to it, why?). Linux is great also, installation from CMD is great, you don't need to think about that stuff.
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.
as a .net developer and gamer windows is the only OS i need. but if there is a reason to use Linux I'm also happy to dive into the Linux console. OSX has nothing to offer for me. Visual Studio Code with git bash as terminal is all I need for JS web development.
I have tried both Linux and Windows as my primary development OS. For me I just stuck with Windows in the long run for my development. Mostly because it just already has what I need and supports it very well. What I use for development is supported on Windows very well so I just find it easier. Go to their website, download and install version needed. Done. Don't need to remember to do an "apt-get" or whatever you use. Don't need to remember or know what version is in the repo. I guess I never really believed I needed a package manager. Sense what I use is already supported really well I just find it easier to go to their website and get exactly what I needed that way. But maybe I'm just doing it wrong. I'll be the first to admit I could be.
Plus Microsoft has made great strides all around. I do use the WSL and love it for the times I do need to drop and use BASH commands. Plus the move and push of .NET Core and the .NET Standard you can easily go and use Linux or OSX all you want, if that is your cup of tea too. Microsoft has really improved and started to support developers all around.
I would agree that hardware manufacturers hurt Windows. Hoping the Surface line will give them reason to up their games. Lenovo was the last one that wasn't dead to me before the Surface Book was first announced. I pounced.
My wife liked the build quality of that and wanted one but it had some quirks that only an early adopter would put up with so I encouraged her to shop around. She chose the MacBook Pro instead (she's not a developer). She got one right before the touch bar rolled out.