Interesting to see such a representation of Windows.
My experience is that the only places where devs are using Windows is when it's mandatory, but when offered a choice, you end up with a 50/50 split Linux/MacOS +/- 25% depending on the company culture.
And even when Windows is mandatory, most devs try to find escape hatches like WSL2 or a VM
My experience is that the only places where devs are using Windows is when it's mandatory
That is a very narrow (dare I say Silicon Valley) view of the world. I know tons of developers who love Visual Studio and cannot imagine programming without it. Plus there is a whole world of developers out there happily writing and shipping software that runs natively only on Windows.
Indeed. It depends what you're doing. Web development, yes, I can see why you'd want a UNIXy system for that. But a lot of the enterprise is Windows-first and if you want a desktop app, that's what you'd develop on. If you're doing embedded development you may have a choice of exactly one operating system with the manufacturer's toolchain.
Do not underestimate the power of full Visual Studio. It's a bit bloated, and it's even slower with Resharper, but if you're working in C# it will do a lot for you.
I've found the opposite - with the companies I've worked for (all Australian) in the past 10 years, there's been a total of 5 developers I know of who ran Windows (and that's including a person who used to work at Microsoft).
In decades of software development in Danish enterprise and smaller companies I’ve never worked in a place that didn’t use windows. I don’t think I’ve worked in a place where using WSL wouldn’t be more of an administrative hassle than it was worth either.
Windows isn’t such a bad place to develop these days, depending on what you’re developing of course, but I’ve never had issue using Python, dotnet (as in the cli, not visual studio) or anything related to typescript or node in general.
I don’t particularly like using windows. I can’t tell you why, I used to like it, but I haven’t since I switched from 7 to 10. Which is sort of ironic considering that developing on windows has gotten much better with windows 10, but well, it’s probably just my personal opinion. So I actually often work on things on my personal Mac, which is sort of easy in todays environment if most of your assets live in the cloud which ours do. But I don’t mind using windows, about the only thing that annoys me these days is that you use “cd” instead of “ls” in the non shell terminal.
Danmark is very much still Windows first country for developers. Macs are showing up more and more and a few can use Linux. The thing is, those companies I know who allow their developer to use Linux, provides their employees with two computers, a Linux developer workstation, and a Windows machine for "other stuff".
I have the same issue with defining exactly why I don't like Windows. Part of the issue is my hand cramps up when I use it, but I don't know why. Windows seems sluggish, but people who measure these things says that it's not.
Re. everything is Windows in Denmark, my understanding (backed by a few acquaintances as MS) is that Denmark is being actively pursued as a test-marked by Microsoft: It is a sufficiently advanced market that they can get everything tested, and sufficiently small that they can sell at loss without large expenses.
My experience working in a large Danish Corp. is that you need a really good reason before you can get a non-Windows machine, and if you do you still need a Windows machine on the side. Still, coming from a decade of OS X and GNU/Linux, Windows was actually surprisingly workable as a development environment.
I willingly use Windows. It's what I'm most familiar with, and I prefer the much nicer desktop environment where things "just work" a lot more. Anything I absolutely need to do in Linux will usually have a workaround in Windows (especially with WSL).
I'm not sure it's fair to call WSL2 an escape hatch. I use Windows for work because I like the more polished experience of the desktop, but I can just open up a Windows terminal instance and I've got a linux shell (via WSL2). And best of all, I can access the files directly with `explorer.exe .` if I need to.
WSL2 is literally a whole OS shipped alongside windows. (with nice integration done by the windows devs)
Regardless of the implementation, the fact that you have to use it in the first place instead of native windows tools speaks volumes about how useless windows is for development. I can not fathom how anyone can consider it anything other than an "escape hatch".
For the type of work I do, Linux or Mac or WSL works. My preference also falls in that order, but WSL really does make Windows pretty painless for me. Now if they just ditch it all for Linux+WINE, that'd be great. ;-)
I have the Zsh terminal directly in the file explorer (slightly hidden in the screenshot), and also the KDE text editor (Kate). With the tab completion in Zsh, I often find it faster to navigate with "cd w-a/s/m/r/c/e/as<TAB><ENTER>" to go to "/home/symbiote/Workspace/work-app/src/main/resources/com/example/assets" than by clicking.
I also use KDE for the wide range of configuration options. From scratch, it takes me about 5 minutes to go through all the settings to put everything as I like it -- of course, this is only necessary on a completely new system, e.g. at a new job. On the screenshot, I think the only visible change from default is the ^^ and vv buttons next to minimize/maximize, which are "Keep this window above/below" toggles.
Invisible things are mostly keyboard shortcuts for moving windows around, mouse behaviour, auto-starting apps etc.
C# still has a large mind-share in enterprise. And while it's net core is cross platform these days, Visual Studio (Windows) is still the preferred way of working for many.
By contrast I'd never seen a developer use a Mac until a few years ago except maybe a few people at conferences. Then the past few jobs I've had have all been Mac-dominant.
I've heard that the situation you describe is common in Silicon Valley. Based on my personal experience in Sydney, Australia, the distribution is about a 40/40/10% Win/Mac/Linux. I've seen about the same amount of companies giving either Mac or Windows as the default, and almost always people can request a different OS if there is a specific need. In all other countries where I've worked (Italy, Thailand, Indonesia, Brazil) it's more like 80% Windows. I'm basing this on my direct experience in companies I've worked at, I don't have statistical data.
I’m a developer at Amazon and was at Disney before (both very corporate environments). In both companies I run Linux on my laptop/desktop as my primary development machine.
I've played with visual studio code ssh remote development with angular and it is relatively painless to set up for debugging with Firefox. Give it a shot if you'd like.
Is it really developed on Windows if Windows is solely only used as thin client to access something else? I'd say for examples #2 and #3 the development OS is definitely Linux.
#1 is the only where I'd lean towards "Windows", since WSL tends to involve a much more split workflow, where a lot of your interactions happen outside the VM.
Why is #2 not Windows? He is in Windows. That remote machine hosting a notebook may tomorrow be replaced with Windows, and he would barely notice if he didn't put a lot of shell in his Python.
Yes, unfortunately phrased question. I think they are asking what OS is your development environment on, not deployment target. But a little ambiguous and so will probably be slightly unbalanced in it’s results.
I use Arch Linux with dwm as my daily driver as a software engineer. Sure there is some initial pain setting it up but it’s been rock solid and super fast, never have any problems with it and I love how customised it is to my needs. I only use Windows to play games, while they may work okay with Linux this is certainly not the case with dwm.
Games on Linux are still hit or miss in my experience. With very simple setups (keyboard, mouse, one GPU) it can work okay-ish, but something "exotic" like gamepads, or multi-GPU setups still cause way too many problems.
Windows is a very fine game console, in comparison.
As an SRE I find that MacOS for me strikes a good balance between being unix-y enough but also reliable to the degree that it doesn't require me to spend time debugging why the bluetooth fails or why the VPN stopped working after I ran apt-get update.
I spent the last 6 years on various linux laptops (even a system76 one), but unfortunately I couldn't get the same polished experience as with a macbook.
MacOS, but mainly because the hardware is nice: big pad, nice screen, M1 eats almost no battery. You get to a time where you're a bit stack agnostic. A lot of things that would annoy ordinary users are not so bad once you get to where you can switch between OSes easily.
Between the three there's not terribly much that as a dev you can't just switch over. All your code is on a repo server, and there are IDEs for most languages on all of the OSes. According to rumor Windows scripting has caught us as well, so how different is it really?
There's a few under-the-hood things that might annoy you, eg kqueue vs IOCP vs epoll, but even that can be abstracted so that your dev machine can test things in similar way to your eventual deploy machine. If all else fails (eg I ran into an allocator issue yesterday) you can just VM anyway.
ArchLinux with Plasma 5 for everything. Coding at work, automating at work, gaming, homelab and servers. I tried Windows 10, but WSL doesn't feel the same, too many walkarounds to get to my way of working. Tried MBP it was alright, but CPU is too hot with 2 external screens not even doing any work. Attaching 3rd screen doesn't always work, doesn't detect the screen, it seems to be a power-consumption issue, and then I run out of USB ports. Linux PC has best performance with 4 screens and gives be best tools.
Windows by choice. I grew up with it and find it perfect. pycharm for python, intellij idea for Java, android studio for android, vs for .netcore, vscode for frontend. datagrip for db stuff
I find it astounding that so many developers use MacOS.
To do anything useful you need to install homebrew, and the hoops you have to jump through to get homebrew running are annoying. Not to mention the fact that it is a wholly unsupported third-party package management system that doesn't integrate properly into the rest of the OS.
Don't get me wrong, homebrew is awesome tech. It just seems that you have to use it to jump a bunch of barriers that Apple purposefully puts in the way before you get an actually useful and up-to-date development environment. Why do people put up with this?
It's a great machine for other things, too. And there are so many hoops you don't have to jump through. I remember wasting a whole day on trying to get some Dell's WiFi working under Linux. And then there are tools like Pixelmator, which simply have no equivalent on Linux. Not to mention that the company uses Office 365 for everything, and that just doesn't run well in a browser.
OTOH, setting up brew is pretty simple, and installing Docker is even simpler.
well, have you tried to get the Dell's wifi working under MacOS? its one thing to use a preinstalled OS, and another to install one yourself. Of course there is more hassle if you choose the second option. But you don't have too, there are laptops with Linux on the market.
I wouldn't call copy & paste a hoop. I am still running on my 5 year old homebrew installation without any issues with Mac OS updates. I think it was worth the "struggle".
I use Windows to develop at home, and Ubuntu at work. I much prefer Windows. The only advantage Linux has is the terminal environment. The GUI is crappy. The memory handling is atrocious, if it starts swapping it'll freeze for twenty minutes before the OOM killer finally kicks in. Multiple monitor use is a crap shoot, I'll always get one black screen after resuming from suspend. Windows is miles more stable. And this on a Dell XPS 15 which is supposed to have great Linux support.
There are two major and many smaller desktop environments for Linux. KDE is more like Windows, you could try that. (sudo apt install tasksel; sudo tasksel install kubuntu-full to get a KUbuntu equivalent, or just sudo apt install kde-full for the main things. Though you may well have a colleague already using KDE.)
Unless you need it for the type of work you do, you could disable swap, or reduce it to a small amount.
(I don't have a laptop, so I can't comment on suspend.)
Could you please elaborate why? I found macos/ios to be the most annoying platform to develop on by far, expecially if you are trying to make some kind of cross-platform software. For webdev grunt work, in 2022, I think there are no dramatic differences between the 3 OS...
I used to develop on Linux, but eventually wanted something that "just works" so I switched back to Windows. Much less time spent tinkering and more time spent getting things done, and WSL saves me from having to learn Powershell (even if I only hear good things about it).
Never even considered MacOS as an option. Not as good for tinkering as Linux, and with 17% market share (both in my country and global average) it can't deliver the "everyone supports this, everything just works" that I got with Windows (it also doesn't help that Apple lately seems to happily break anything not sold by them)
> I used to develop on Linux, but eventually wanted something that "just works" so I switched back to Windows. Much less time spent tinkering and more time spent getting things done, and WSL saves me from having to learn Powershell (even if I only hear good things about it).
I must be the strange one here since WSL is a hardcore nope from me. Mainly because I've gave that setup a chance last year and then after two hours of work I've noticed Windows git or WSL changed all my carriage returns to CLRF and basically broke all scripts and pipelines.
> I used to develop on Linux, but eventually wanted something that "just works" so I switched back to Windows. Much less time spent tinkering and more time spent getting things done
I started recommending WSL on Windows to a few friends who wanted to get a taste of how Linux works after hearing praises about it although I've never actually used it myself. I recently realized that systemd doesn't work on WSL (without ugly hacks) and /mnt also mounts Windows disks.
I have stopped recommending WSL since then. Although I don't recommend anyone to use Linux either.
WSL works pretty well for typical command line usage (your typical "grep | sort | uniq" stuff) or for "this command line tool only runs/compiles on linux" usecases. If you push it much more than the abstraction starts getting leaky and you have to get more involved (though WSL2 can be pushed a lot more, e.g. getting systemd running in WSL2 doesn't seem that bad [1]).
It's actually more like 15% globally, if you use statcounter.com numbers [1]. I was being generous by using the early 2021 numbers. Statista probably uses the same source [2]. Netmarketshare puts it at about 10% [3]
I've switched to Windows from Ubuntu on my desktop for development. I do miss some things but WSL2 is surprisingly good, the bluetooth stack doesn't randomly fail (as often) and having access to Windows and Linux tools at the same time without having to dual boot is very useful
I develop on Windows voluntarily. Funnily I was not able to set-up Docker with CUDA on any of the Linux distributions I have tried, but on Windows with WSL it worked pretty much out of the box.
I use CLion on Ubuntu and it's an absolute joy to use. Debugger is absolutely on par with VS in my opinion - and if you are missing something, gdb is always avaliable within a terminal.
Why? My career as been split pretty close to 50/50 between developing on *nix and Windows. And while both have strengths and weaknesses I wouldn't say one is better than the other. If you put a gun to my head and said I could only use one desktop OS for the rest of my life I would probably choose Windows.
From someone who has done heavy development on both - I would say it's quite difficult to get used to the filesystem, non-POSIX (which is why mac users and linux users tend to find affinity), windows API being a bit arcane (Things like user-groups, event viewer, and process explorer being mostly dated UI apps with unique and strange windows API calls), services vs daemons, session-zero.
I would say it's great at a user level, but under the covers you have to be a true windows grognard to know what is going on.
Some might pity you for not being able to add those beefy GPU-s into your setup. I know, external GPU-s exists, which is cool if you miss the Commodore 64 era of plugging a bunch of devices together.
It's not because you don't understand something that other people cannot live with it. Dare I say, I pity such lack of imagination? FWIW I use both limux and windows, if that even matters.
Unfortunately, Windows at work as of late. But I've been surprised at how not-that-bad it's been. With Webstorm + Windows Terminal + Chrome, I have an almost identical frontend workflow to my previous job on MacOS, and barely have to touch anything Windows-specific.
I've used osx a long time ago and was never satisfied with homebrew. Switched to linux, but I needed excel, so switched to win + wsl. Now I don't really need excel, but the Win+WSL combo just works.
I personally use MacOS for work and MacOS and Linux at home (Macbook pro and desktop PC with RHEL 8.5). Despite all the hate-on-Windows-cliche I have to admit they have been doing good things in the last years, however it’s just not for me. These are, from the top of my head, the things I dislike the most:
- Not full control over state of services running (e.g no kill -9, you can try to kill a service and it will simply tell you that you can’t despite being an admin).
- System directory tree. Not a big deal and a question of habits more than nothing.
- No culture of configuration in text files. You have to rely on Powershell. (Nothing against it, I simply don’t like it)
- The standard of using slash (/) instead of hyphens (-, —-) for arguments in the native command line tools.
- The limited set of native command line utilities.
- CMD feels limited and clunky and Powershell feels overkilling.
- It’s privative software. (To be fair, I use MacOS which is mostly privative too but I find a better balance)
- The inconsistencies on the UI in terms of aesthetics and also the mess they have with the old/new control panel options.
Pretty sure I am forgetting some more. Don’t get me wrong, I can see its good things and benefits but it’s just not my thing.
(laptops) I used OSX from 2009 to 2017, Debian from 2018 to 2021 (not my choice) and now back on OSX. Nothing against Debian specifically (and it's still my default production target in a lot of cases), but the lack of good laptop hardware and good software support for the hardware was a real pita. In contrast, the machine I have now is a real pleasure to work on: excellent keyboard and pad, totally quiet (fan-less), excellent energy management, great screen, extremely lightweight.
As I use Debian in production ($DAYJOB, https://afpy.org, https://hackinscience.org, https://mdk.fr, ...) it make sense to also use Debian to develop (which I use since Woody), so I have Debian on my laptop and even on my phone (mobian exactly) :D
Windows is what we get. I tried running Linux, I can't get our vpn software to work. I proposed reverse SSH tunnels, they call it an "unmanaged endpoint", deemed unacceptable.
Cisco anyconnect, I know it can work on Linux, and I talked to some collegues using it on Linux on a "don't ask, don't tell" basis, but they had to hack some cert from the Windows version and I'm sure that IT would frown upon this.
I tried installing a second disc in my laptop for Linux to try just this anyway, but I broke the laptop. Yeah this HP laptop has a 2.5" bay and an m.2 connector and it looks like you can use both at the same time, and you can! But if you read in the manual it says you can't because it puts strain on the connector and indeed, the "laptop died" after some days (pretty bad design I'd say). I didn't try anymore after that.
Linux has been my primary development OS since ~2008 but I had always run Windows as my main desktop OS for gaming. Over Christmas of 2021, I installed Ubuntu on my main desktop. During the fall of 2021, I was migrated to Windows 11 as part of the developer experience and did not care for it. Add to that the fact that Microsoft wouldn't support my "ancient" i7-4790k in the live release of Windows 11. They made the decision to switch to Linux for me. I went with Ubuntu so that I could easily test-drive Linux for daily driving and gaming. I've had a couple of strange snags but every game (that I play) has worked fine otherwise and many of them have native versions regardless. If/when I can spare a weekend, I'll move over to Arch.
I transitioned to Linux at work after Windows+WSL2 for a number of years. I went with Fedora - most of my work is with RHEL-compatible servers, so I’m somewhat familiar with the package manager. I generally develop in Emacs as it integrates well into the OS and I’m not familiar with VSCode, but I’m not averse to trying it.
A great experience on the whole. Only thing I can’t do is Remote Desktop, which is actually quite a pain and something I need to find a solution for eventually - but for now I get by. I have also found some weird GNOME bug where mouse gestures stop working when e.g. changing workspaces such that I have to reboot using only keyboard shortcuts (can’t even click reboot), this is also something I need to get to the bottom of.
I gave Windows+WSL2 a fair shake (more than a year), but it’s just too bumbling. Back to MacOS and finding it a pure joy, rivaling the joy I had with Gnome on Linux 10+ years ago.
Might have to give Linux a try again based on these poll results so far.
I've noticed more and more editors (TV news rather than movies) moving back to windows over the years, the stranglehold that FCP7 and the macbooks from 10 years ago (having supplanted avid/windows) had on shoot-edits isn't anywhere near as concrete as it used to be.
For producers and reporters, the OS has changed from Windows to Chrome
I develop on Linux (KDE) in Freepascal and Lazarus, working around OS-specific code since about half of my customers are running Windows. I also check for compatibility with Wine and ReactOS.
In my experience, I'm Italian, FE devs use macs, almost everybody else use Windows, but today almost everything is on Docker so many BE devs use WSL or a linux VM (WSL2 has a lot of issues with VPNs), but not all, sometimes it's just simpler to commit and let CI do its magic.
Windows 10 is now quite stable, IT management (with AD, GP...) usually works etc. And Office 365 is everywhere, Mac or web version are not on pair vs Windows version.
I would prefer a Linux PC, development would be simpler.
I used OS X from 2013-2020 when my at-the-time companies gave me a top-end MBP and the very strong encouragement to use OS X. It was fine. But my most recent gig had a lot of Linux users anyway, so I returned to Linux, got a crappy System76 ultrabook, have Debian and StumpWM running on it, and couldn't be happier. I plan to use this laptop and not do much more than a `sudo apt-get dist-upgrade` until the 2030s. Maybe I'll replace the battery too.
OSX is my "it just works" user-interface OS/development "appliance", which I use a dumb-terminal to SSH to a cloud linux host (or local shell, which is close-enough to linux for my development purposes).
So really, I develop in linux using tmux+neovim but my user environment is OSX because I want an OS that I don't have to tweak, tune, and fight.
I was a Linux primary guy for a decade and change but my current employer forced everyone to switch to Windows or macOS in 2021. Ive never felt comfortable in macOS and the hardware is always meh (m1 not withstanding, that wasnt an option at the time).
I have been working with Win 11 + WSL2 + x410 and it is really solid. I use x410 because WSLg is still a WIP.
Windows 10 with Visual studio, Vim and Visual Studio Code (that can now connect to WSL). I have WSL2, so I can use a mostly POSIX compliant OS at the same time (and use app like grep/sed/uniq/wc etc...).
I want to run on the same environment as my users.
Windows is mandatory at work, but all of my personal stuff I do on Linux. Since I do more at work than I do in my spare time I have to answer Windows, but if the question was which do I _prefer_ then the answer would be different.
I do Ruby/Rails at home on an iMac, work Java and Rails at the office on Ubuntu, and got a Windows laptop for C# and gaming. I work with them interchangeably, many days using all three seemingly.
I wonder if this roughly encodes front end and back end devs? As someone is regularly doing CUDA work, most things tend to be on Windows or Linux - usually we are cross compiling to both.
All three at some point, but MacOS has been my dev environment of choice since 2004. I'd probably be happier in Linux or even a BSD except I can't help tinkering with them.
I primarily do backend (PHP) dev. I write code on a Windows machine. I test it on a server running GNU/Linux, and deployment is also usually on a server running GNU/Linux.
It's not been the easiest, but with little exceptions, I'm Nix and NixOS all the way down now. The end result has been very good once it's rolling though.
As an aside, I use Ubuntu, but their commitment to Wayland is creating multiple issues. Any Debian based distros that are going to stick with X11 that people can recommend?
My experience is that the only places where devs are using Windows is when it's mandatory, but when offered a choice, you end up with a 50/50 split Linux/MacOS +/- 25% depending on the company culture.
And even when Windows is mandatory, most devs try to find escape hatches like WSL2 or a VM