About Windows for devs

twitter logo github logo ・1 min read

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.

twitter logo DISCUSS (28)
markdown guide
 

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?

 

all you need is there and it's so simple to get 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.

 

The last time I had a Windows based system was 2013, so I'm a little out of touch. The reason for me to switch to OSX back then, was because the lack of improvement for webdevelopers. I didn't dislike Windows, I just wanted a proper terminal and for my ruby gems to install without tears. Many tutorials I came across were aimed at osx or linux, and getting these linux based things to work always seemed like such a hassle on Windows.

I believe nowadays Windows has taken great steps forward. You can actually install a bash shell on Windows 10, how cool is that? Microsoft seemed to have worked hard to close the gap.

What I still don't like is the bad build quality of many Windows based laptops. I used to have Vaio's and they were great, but with Asus, Acer and Dell I've had nothing but trouble. I just don't want to waste that time anymore.

 

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.

 

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.

 

Ah that's a thing though! I've got a late 2013 MacBook Pro and it's a great machine. If it would die tomorrow, I'd probably try and get a 2015 MacBook without that useless touch bar. I'm not a big fan of Apples latest machines either 😭

 

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.

 
 

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 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.

 

For writing apps for Windows (desktop), writing apps with Visual Studio using C#, XAML, and C++ with .NET will be the fastest path. OTOH if you write a cross-platform app especially those which have some difficulties on running on Windows (WSL may help though), developing the app on Windows might be harder.

 

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'm a die-hard desktop Linux user and have been for the better part of 10 years. I've still dabbled with OSX and Windows 7/8/10 during this time; however, I come back to Linux because it fits my workflow.

At the office, I'm the lone Linux user in a sea of Windows/Office365-centric folk. At home, my machines are Linux and my wife's are OSX.

To each their own, I say. So long as the operating system doesn't get in the way, it makes no difference what environment one chooses to develop in.

#osAgnostic :)

 

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 am currently using Windows 10 both at home and office for my Android development activities. It's just fine. Previously I used Linuxmint distro for around 5 years as my daily driver. Though I prefer Linux, but Windows does the job just fine. Just don't install unverified softwares and avoid unsafe websites to stay away from malwares.

 

IMO the hardware matters too. I've found that when using a mac, there's less configuring and more getting work done. It's like this: open it, do your work and shut it. And they provide the best battery life(in case of laptops) in the segment.

 

The shell/terminal traditionally sucks on Windows (I believe it's getting better tho, heard that you can install BASH and it's usable, same for Docker) which would be a big deal for me, a lot of stuff you can't (or couldn't) do from the command line, you have to click through GUIs instead which is annoying ...

And many dev tools (node, npm, languages and so on) are developed first for Linux or OSX, then ported to Windows, so tend to be 'second class' with limitations (some stuff doesn't even run on Windows).

However like I said I do believe the situation on Windows is improving (including MS' ethics/mentality and their CEO) ... only hearsay though, because I haven't used Windows for more than 10 years.

 

这个讨论不够严谨。因为 Windows 目前有 3 个主流版本,Windows XP/Windows 7/Windows 10。而 Windows 10 在我看来是最适合开发人员的 windows 版本。一来有大家在 Mac/Linux 上羡慕的命令终端(Linux子系统和 Powershell);其次 Windows 10 本身就有极高的生产力。就代码编辑器来说,VS Code 和 Visual Studio 已经是最好的编辑器之一了。如果要涉及一些设计的工作,也是有很好的选择。Sketch 的替代品也有几个,比如 Lunacy,Figma,当然还有 Adobe XD。另外设计师最喜欢的触屏做设计,加上 pen 和 dial,已经是最酷的了。我在一个较大公司的设计部门里做前端开发,很显然我的同事大都买 Mac 笔记本,特别是开会时就可以看到,清一色的都是。但是演示的时候经常要缩放一些东西,显得很不便,直到我拿着 Surface 去演讲过一次,他们惊呆了,觉得触屏在某些时候很方便。另外在演示一些 3d 的东西的时候也是很方便,Powerpoint 里面很方便插入 3d模型。前端开发往往有一部分设计的工作,比如在做 threejs/babylon 等 webGL 等项目的时候,比如在将设计稿用代码实现的时候。
无论是做移动端web开发,还是跨平台桌面的开发(如 electron,.net core),都能得心应手。Windows 还有很多玩法,vbs/hta/bat/cmd/jscript等,可以直接桌面环境里跑,注册表和组策略里面也可以定制很多功能,这些都可以在自动化任务里帮我们完成很多事情。
时代有些变化,Mac 已经不是最优开发人员的选择了,Surface 系列在我看来越来越适合开发。当然很多用 Mac习惯的人,他们只记得 Windows xp/Windows 7的各种麻烦,不知道 Windows 10的进步,也不会再回来用 Windows 了,这是事实。没关系,我们选择自己认为最好的平台做开发就好了,无需关心其他。当然如果你需要开发 iOS 程序,你真的需要被迫买一台 mac,这是没法避免的,只不过 Cook 在明年就会按下升级键,让你的 Mac 运行变慢,变卡,你需要更换一台 the new Mac😂

 

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:

  • even if you use bash for windows it has limitations, so you end up makeing .bat files for your project, duplicating some functionalities
  • you will write more code just for windows env (my example was Docker issues)
  • you will lose time on problems that the other team members do not have, so you are not efficient, basically you are wasting your employee money
  • if you are not careful you may put your company and team at risk, from a security point of view (it's easier to bypass or not use security features on Windows and being a more mainstream OS is more targeted)
  • not having the same env as your peer devs it may lead (depending on how competent everyone is) to some problems (the same as not using the same IDE), Stupid example, but real one: commits with windows line endings instead lf UNIX
  • some low level libraries are not compatible with Win, or they are outdated, or they behave differently, this adds more issues in the product pipeline or time to setup the Dev Machines

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.

 

For me I use Arch Linux. The reasons are as follows:

  • Super easy to install and keep my languages and support packages up to date
  • The OS does not cost a cent to run, and runs much better than windows on my Laptop
  • The OS is easier to use, easier to maintain, and does not require cumbersome anti-virus to keep secure
  • The Bash command line on Linux is far superior (IMO) to the Windows command line
  • Windows uses a tonne of RAM to run, which takes away from RAM available for development
  • I can develop and setup the OS however I want without being limited or "controlled"

I love running [pacman -Syu] and getting updates for everything, instead of having to fight to update all the packages on Windows manually.

 

I used to have a very strong opinion about developing in Linux. Since I've been too lazy to dualboot my current desktop and I play games, I've been developing in Windows for a little over two years.

It really doesn't matter most of the time. Most of what I do is in vagrant boxes which means my runtime is Linux anyway (so it has higher fidelity with production environments). Occasionally you get a nasty surprise (like having to use no-bin-links with npm), but it isn't often. In fact most of the annoying things are things that rarely need to be done (like manipulating host files). I save more time by not dual booting.

Most IDEs will run on any OS too so that doesn't matter much.

 

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.

Classic DEV Post from Aug 14 '18

RIP Side Projects

Here lies my dead side projects. They lived quickly, taught excellently, and died quietly. This is my GitHub Graveyard.

Vincent profile image
Dev hobbyist.