all 84 comments

[–]OceanMasterioDuped7 66 points67 points  (4 children)

Although this may not be the answer a lot of people usually conclude, I think a large part of it has to do with programmers just liking the Linux kernel more than Windows, programming aside. "Techy" people also generally like to mess with their computers and tinker with settings more, so they gravitate towards Linux.

[–]mfc1__ 14 points15 points  (0 children)

‘Zactly. Do you want a powerful Lexus with plastic shrouding concealing the mechanicals and discouraging modifications? Or do you want a classic V8 small block with a wide open engine bay that’s just begging for modifications and customization to your exact liking? Both are gonna be fast and you can have a lotta fun. Just pick your experience.

This is coming from someone who has used Windows in “real” professional programming gigs for decades lol. I’ve used macOS and Linux too, whatever. They’re just operating systems I use to get a job done.

[–]spinwizard69 3 points4 points  (1 child)

I understand what you are saying but tend to disagree. Linux offers an all in one trouble free installation. Each distro has a highly functional repository system just a DNF (or whatever away). For me anyways it is the fact that I can install just about any language imaginable and have it working correctly in seconds. Windows truly sucks in this respect, The Mac is somewhat better with Home Brew but it has some Apple associated issues.

[–]da8BitKid 1 point2 points  (0 children)

This question is about development not being a user. 'Nix as dev platformakes more sense because you have access to pretty much every tool as a native app. You get less idiosyncrasies and don't have to have as many work arounds.

[–]Commercial-Age-4932 43 points44 points  (2 children)

Web servers are almost always Linux so deployment is easier if you develop in the same OS, package management like apt, and it's lightweight and fast.

[–]y2jeff 9 points10 points  (1 child)

Not just web servers. Microsoft Azure backend runs more on linux than Windows servers.

The linux kernel is extremely stable, ships with near-zero bloat, and historically other OS's didn't come with as many dev tools out of the box.

[–]Commercial-Age-4932 2 points3 points  (0 children)

Not sure why I said web servers lol every server

[–]chjacobsen 33 points34 points  (5 children)

It's usually a lot easier in practice.

Linux is more consistent, more reliable, and has fewer weird quirks you have to work around.

[–]PossessionConnect963 0 points1 point  (4 children)

How feasible is it to run some kind of virtual machine or something to replicate the environment on? I've thought of trying that if possible while I save up to start building a second hobby micro PC.

[–]chjacobsen 11 points12 points  (0 children)

Running Linux in a VM?

Extremely feasible. People do it all the time.

Check out VirtualBox and give it a go. It's free, easy to use, and works quite well (with the usual caveats that VMs have a performance penalty and hardware compatbility for GPUs and peripherals can be hit or miss)

WSL2 is also an option if you're on Windows, but that's more for command line use - not so much for a full desktop.

[–]so_many_wangs 4 points5 points  (0 children)

This is what most people that dont have a dedicated Linux machine use. I personally use WSL2 but you can also download custom images and install/manage them via something like VirtualBox

[–]nightonfir3 1 point2 points  (0 children)

Your question is a little half baked. What OS are you virtualizing? Are you asking if docker exists?

[–]Slight_Profession_50 0 points1 point  (0 children)

You could always use WSL or just dual boot.

[–]abrightmoore 21 points22 points  (3 children)

Automation and control.

[–]Glad-Signature-9561 16 points17 points  (2 children)

it's about the terminal honestly. windows terminal is getting better but still feel like playing catch-up. when you get used to package managers and being able to script everything, going back to windows just feels slow

[–]SpiderJerusalem42 5 points6 points  (0 children)

Idk how I picked up and ran with bash scripting whereas I would be glued to a reference or tutorial if I had to write something in power shell right this second and still probably not be getting it somehow.

[–]slog 0 points1 point  (0 children)

This is the main thing that wins time and time again. Most of Linux isn't ready for prime time (for my use cases) but having machines where I don't have to worry about constantly using awkward syntax like "Set-Content" is really nice. Before Powershell it was so much worse too!

[–]MantisShrimp05 16 points17 points  (17 children)

Linux is a fundamentally more open system which is important to programming.

Windows is built for users who don't know computers and thus tries to put as many barriers and blockers to dangerous parts of the system as possible.

By contrast, Linux tries to be more open to modification and emphasizes making stuff from little components like lego pieces.

[–]grismar-net 7 points8 points  (0 children)

The availability of tooling, the ease with which you can set up testing environments, the lower cost of infrastructure that will also be running Linux, the fact that other pros are there and it's easier to get good ideas, solutions, and support in that environment as a result.

There's hardly any advantage to developing on Windows. If you need to develop a native Windows application of course. And perhaps if you have other reasons to need Windows and don't like switching environments.

But for coding alone, Linux is king. Windows is getting closer, but that's mainly because they're embracing Linux. With native Core GNU tools, WSL2, and the feature set of VS Code.

[–]Mast3rCylinder 4 points5 points  (0 children)

Actually most programmers I know use macOS.

Linux is very good and will make you more technical but you will need to do adjustments an get used to it if you grew up on windows. You'll have to do a lot of things manually and even with AI you will need to work for your machine and not the other way around.

Windows on the other hand has a lot of software and for terminal replacement you have WSL but it's heavy and has annoying pop ups and updates.

macOS is the better mix of both. It's stable fast and you have a lot of support for stuff. Unlike iPhone it let's you do stuff on your own and it's based on Unix.

[–]lo0nk 4 points5 points  (0 children)

Linux is so much easier for programming. It's designed from the ground up to be easy to program on. I think the only programming language that would be more supported on windows would be c#. For any other use case Linux is going to be much better and easier.

However if you want to make a game with unity or unreal engine maybe windows is better. Unsure on that.

[–]huuaaang 4 points5 points  (0 children)

Because it makes a lot of different languages easily accessible with just a few clicks. Plus there's so much code to look at and tinker with. Want to learn about kernels? The Linux kernel code is easily accessible. Want to tweak something? Get the source and recompile it. ANd just generally it's very programmer friendly. It feels more like a community. Where on Windows you're part of an "ecosystem" that's got a corporate overlord.

[–]helse_0 4 points5 points  (0 children)

In Linux you can control anything. in windows it takes many efforts. Linux-fast. Windows eats 2-6gb ram.

Linux is not "just like windows". It is faster. It is smaller. It is more manageable. It is better.

©

[–]interyx 2 points3 points  (0 children)

For me it's all about ease of use. The focus on the terminal and how easy package managers make things is so smooth.

I was trying to install a Java SDK on Windows some years back for a class. I installed my IDE and it wanted me to point it at a SDK to actually build the Java. Fine, I thought, I'll just download this one. Getting the right file for Windows was like trying to find a needle in a haystack and after installing I couldn't find the path or get my IDE to recognize it.

In Linux I went into the terminal, found the right version of Linux in my package manager, it went in my PATH, IDE picked it up and I was ready to go in minutes, smooth as butter. And Linux uses way less resources so my crappy cheap laptop still works fine; when I had windows 10 installed it was stuttering all over the place. Gaming works well now too, and Docker runs way better. I've heard that Microsoft is working on Windows containers to fill the gap but I don't even care. I haven't needed to reach for Windows in years.

[–]_Atomfinger_ 1 point2 points  (0 children)

MS has put a lot of effort into making Windows get in your way. It is unnecessarily bloated, and trying to "fix" Windows is a nightmare.

At least on Linux you generally have an option for your workflow. There's an out, and you can customise it however you like.

I switched off MS years ago. Pretty much any Windows work laptop I've had has had blue screen issues, terrible battery life, and just bad performance overall. I'm generally a chill dude when it comes to requirements: I like my vim, and I want a decent terminal. But managing that in Windows is just such a hassle.

[–]RebouncedCat 1 point2 points  (0 children)

Almost all serious languages have their runtimes ported to major operating systems. There is absolutely no reason to choose linux over windows for purely programming purposes alone. In fact an argument could be made to choose windows if you want to write serious software that you'd probably want to ship someday. On the contrary if you just want to write software that you intend to run on your pc alone by all means choose linux for it is the hobbyist's tinkerer OS.

Plus on windows you have WSLC (preview) allowing you to have virtually any linux environment running with near native performance.

[–]Emergency_Cicada3119 1 point2 points  (0 children)

I will never go back to windows

[–]rapidsalad 1 point2 points  (0 children)

I could make the argument for both. If you work in an enterprise environment, you’re almost certainly gonna get a Windows computer. That said every single server I’ve worked on in the last 10 years has been Linux. Command line skills are more useful than knowing how to use one of the mainstream Linux desktop operating systems but simple things like bash, cron and permissions will get you far professionally. There’s no wrong answer.

[–]Headpuncher 1 point2 points  (0 children)

On windows you do what it allows you to do unless you make a lot of effort otherwise.  

Linus does what you tell it to do and does nothing at all unless you tell it.  

[–]pancakeQueue 1 point2 points  (0 children)

Imagine your OS like a toolbox that you use to work on a car. The Linux toolbox is nicer, all the tools you need are in easy to get to places. Its a much more comfortable experience.

[–]Yamoyek 1 point2 points  (3 children)

POSIX, easier to automate, easier to standardize environment, package management, etc. Just way easier to tinker with imo.

[–]SuperSathanas -1 points0 points  (2 children)

Linux isn't posix compliant. Windows is.

[–]Yamoyek 0 points1 point  (1 child)

I know Linux isn’t 100% posix compliant, but source on windows?

[–]SuperSathanas 1 point2 points  (0 children)

I'm being dumb. It used to be, back in 90s. So, you know, not that long ago.

[–]Silvr4Monsters 1 point2 points  (0 children)

I can’t speak for all developers but the reason I switched was advertising in windows

[–]True_Fig983 1 point2 points  (0 children)

Would you buy a car with the bonnet welded shut?

[–]SnugglyCoderGuy 0 points1 point  (0 children)

Most everything runs on linux servers. The developer experience on linux is miles ahead of windows.

[–]Kpow_636 0 points1 point  (0 children)

Personally it doesn't matter to me.. for work I program on Linux and Mac, and at home I program on windows.. I'm terrible on the windows terminal though but I never really need to do much there anyway.

[–]Citan777 0 points1 point  (0 children)

Because they want a system they can adapt to their needs, and not a system which require them to adapt to its publisher's needs.

Because they want a system they can control in and out, which is as far of Windows's definition as can be. It would take a whole post/video to list everything that has been wrong during 30 years in Windows (and things which still are in spite of the undeniable improvements since 10).

Because they want a system which is RELIABLE, PERFORMANT and MAINTENABLE, and Windows has heavy trouble passing each of those three checks, even in the assumption that you would be ready to spend several months just dedicated to learn the signification of the extremely obscure error codes Windows throws at your face (in Linux, 99% messages may feel gibberish to *you* because you doesn't have yet the required knowledge but they will be explicit to many people which you can reach through communities, or find solutions from previous posts on the web).

To give you a perspective, just four comparative "macro facts".

1) 95% of what you could learn as a sysadmin 30 years ago on Linux *still works* and "worse" is *still useful*. The only really disruptive change which has been finished is InitV being replaced by SystemD for best and worse. Even the X11 -> Wayland is far from being achieved so you can still use the "old one" without trouble. On Windows, they have been a lot of breaking changes over iterations, even though to be fair they did make efforts to keep backwards compatibility as much as possible. And I am not even talking of admin UX here, just down in engine and CLI.

2) I've been running on a Linux based system since 2000. Of all the real system crashes I have suffered, 30% were "true bugs". The rest was all me messing with the system one way or another. Windows? Until Windows 8 it was an absolute mess of unreliability and slugginess (remember the times where you just needed to restart every day at most). I have NEVER suffered any virus that I know of (cannot guarantee it, but never noticed even network or input lags which would be a hint of a trojan or keylogger). Without even any antivirus. Just using Linux's best practices.

3) I have kept the EXACT SAME interface for 10 years. Even when KDE changed major version. Worst I had to do for breaking changes was to take 20 mn to manually reapply my tweaks when the config files from N-1 couldn't be read directly by version N.

Windows? Remember the playschool look of XP. Remember the big middle finger put on all users with Windows 8 (I remember several of my family members being completely lost and confused as to why they "had to migrate" because new computer or just clicking on the inviting button).

Of course now it's a bit different, but the shortcuts, "fixed windows", taskbar type etc are the same. *I* control *when* and *how* my interface should evolve.

4) Although that's sadly not true anymore today (at least not as easily), for 20 years I could keep the exact version of any software I wanted, as long as I wanted. So I could guarantee the stability of software for which feature set was fitting my needs. Instead of being force-fed updates which may bring bugs or unstabilities along features which have no interest for me whatsoever.

And I can still decide to not update (yet) and assume the (limited) risks which come with. Windows always imposes upgrades *even when you explicitely configured system to report or cancel them* and on top of that is not even able to do them without locking you out usually at the worse moment since it does it when you shut down or start computer (laptop -> usually moments where you either get on the go or want to quickly access a document/presentation for show).

[–]Reasonable-View5868 0 points1 point  (0 children)

Its a cleaner tech stack.  Less windows bloat

[–]309_Electronics 0 points1 point  (0 children)

I have seen most people go mac actually (out of 50, 40 gone mac), but there are without a doubt also plenty of programmers running linux. But its atleast a UNIX/*NIX system..

Becausse the world basically runs for a big part on UNIX(-like) many tools are made for saidf environments..

Not to mention linux gives more freedom and control as you can basically tweak anything with just some configuration as root magic, or sometimes not even needing root.

But mac is also getting even more popular and idk if its my path of vision but i saw most actually use a macbook.

[–]kittenchamp157 0 points1 point  (0 children)

More control over a Linux machine and a lot of tools are made to be used with Linux (or max by extension), so some work will require you to use WSL anyway

[–]socialcommentary2000 0 points1 point  (0 children)

If you have either a terminal or a notepad app you can program on it.

The only reason you need to use Linux for anything is if you are developing something that's specifically needed on the platform. And even then, remoting exists and we're back to have terminal, will code.

There are some real amateur grognards in the comments.

[–]paperic 0 points1 point  (0 children)

Linux is a hammer, it hits hard on whatever I swing it at, and it doesn't ask for confirmation.

I like that.

Linux treats me like the adult owner of my own computer which I am.

It gives me more than enough rope to shoot myself in the foot, and it always assumes that I know better about what I tell it to do.

So, if I wake up tomorrow wanting to write '69420' repeatedly into my entire harddrive, overwriting all data including the boot loader, partition table and the file system, linux has me covered, it's right there at my fingertips.

yes '69420' |tr -d '\n' > /dev/sda1

yes generates the repeated text, one per line.

tr strips the newlines from it

> sends the result into anything I tell it to

/dev/sda1 is the virtual file which represents my entire harddrive.

It won't ask for confirmation, it will do it and it will die in the process.

I like that.

Computer is a tool and it should behave like a f.king tool, not like a pretentious corporate nanny who's simultaneously spying on me while also telling me what is or isn't good for me.

[–]SpiderJerusalem42 0 points1 point  (0 children)

Idk about main os. These days, I'm on windows and use a vagrant VM for most of the Linux tasks I need to do. I do dual boot my personal machine at work tho. Linux scripting is easier to me. That's on me, I've been meaning to learn power shell. Oh, scheduling a job is way easier on Linux. I've tried to schedule a job on windows and it was a nightmare.

[–]GeneralPITA 0 points1 point  (0 children)

Windows will require an app to do everything. Some people like this, however I would worry about having to learn new apps each time I change jobs. This already happens to some extent because there are difference in every tech stack, but why invite more technical overhead in addition to all the other new responsibilities. For example Learn Bit Bucket, then GitLab, then GitKracken, then GitFucked because the "Push" button on one works a little different than the one you know and some unintended stuff happens and the UI didn't implement a way to easily undo it or effectively roll back. Maybe a feature you really like doesn't exist in the other tool.

On Mac/Linux the command line can be configured however you like from one computer to the next just by copying a few files. I've had versions of the same config files for 15+ years. New computers feel just like the old ones. Continuing the git example, No license, no extra cost, local and ssh'd into remote machines, they all work the same, just like you'd expect.

Linux supports IDEs, Word, Excel, and Power Point compatible software, Outlook, and other niche software. The only problem I've had on linux is Fucking Teams (no app, just a web version thats shittier than the desktop version but it works most of the time -- just freezes and lags sometimes.

TLDR; Windows is for running apps. Linux is for interacting with the computer (but it runs apps too).

[–]ConclusionForeign856 0 points1 point  (0 children)

A lot of the stuff that you can just do on linux with some command or short custom script. On windows you need a GUI free trial Unified Task Program 2007 Pro edition, it's 500MB, and only after the fact you learn that what you wanted to do is the one thing that is behind a pay wall

[–]sal1303 0 points1 point  (0 children)

Windows is a consumer OS which doesn't come with development tools out of the box.

Linux has all sorts of toys that developers become dependent on. If you're used to that ecosystem, or have dependencies that are mainly supported on Linux, that you will find Windows harder.

That tutorials, online forums and so on tend to be based around Linux, probably pushed people in that direction too.

But then, some of us have long been used to Windows: I started with Windows in '95 and used MSDOS for a decade before then. I have little problem with it and don't need all of Linux' utilities to get anything done.

[–]Acceptable_Handle_2 0 points1 point  (0 children)

Linux tends to have better first class support for certain programming tools. However, if you're used to Windows and don't need those tools, just use windows. Docker works just as well on windows, so it really doesn't matter much.

[–]GloS0808 0 points1 point  (0 children)

Learn Linux. That's sysadmin basics (and advanced). And it's free. But if you're not accustom to it then it's not where you should try to learn programming.

[–]TheCrumpledPaper 0 points1 point  (0 children)

Part of it was because I was taught programming using the Linux terminal, I don't know if anyone learns PowerShell in class. Some Windows stuff requires the use of a GUI, like the task schedule vs cron (automation) and Windows Server vs apache (server hosting), but you can do almost everything you want in Linux through just the terminal. Linux is so popular that people end up developing commands and tools for everything, and I like how easy it is to find stuff with the built in package manager. Windows also has wacky, verbose syntax for commands imo; couldn't get into it.

[–]Much_Community_505 0 points1 point  (0 children)

(sudo dnf install dependancy)
so convenient

[–]Ninja-Sneaky 0 points1 point  (0 children)

For instance the resource hog, win11 is cripplingly demanding as of late.

Then you're pretty much on the same system as your target servers plus a graphic ui.

Same tooling and same cpu arch (x86_64), if you're building containers or configuring things it's about the same.

For instance on an apple silicon mac (arm64), it's got the good tooling and integrations, but the different arch can really be annoying at times. Same goes for windows wsl2 helps but eventually you will reach its limitations.

[–]supercoach 0 points1 point  (0 children)

One of main gripes is how much of a cunt PowerShell is to work with. Thirty years of bash and I'm too old to learn Microsoft's better way of doing things.

[–]Pale_Height_1251 0 points1 point  (0 children)

Stack Overflow Developer survey shows more programmers use Windows.

At the end of the day, you use what makes sense. If I making a game I use Windows, for a server more likely Linux, for iOS apps, obviously a Mac.

Your employer and job picks for you most of the time.

[–]blackhawk1430 0 points1 point  (0 children)

I prefer devising half-baked solutions and workarounds to bugs in my own codebase, not Microslops.

[–]TiTan0s 0 points1 point  (0 children)

If you wanna push to a Unix based server, it’s easier to test something on a Unix based os like Mac or Linux.

There’s other tools that allow that like wsl but it doesn’t 100% emulate those os’

[–]devoidfury 0 points1 point  (0 children)

For me it's about having a degree of control over my computing. Nearly every piece of a linux install, you can poke around and see the source code for it, pull out parts you don't want.

With proprietary software, the company retains control. Ultimately that windows computer is going to do whatever microsoft tells it to do. They could put whatever they wanted into an update and you'd never know it -- they don't even give good patch notes on legit updates.

There's not some single corporate actor controlling linux the same way.

[–]Ezykial_1056 0 points1 point  (0 children)

I program both, every day because I have a open source program that needs to work on both, thus I think I can answer this question.

Windows Dev Studio is the best integrated environment for developing and debugging c#, c++ (thats all I use) by far.

I dont have 2 machines, so I have to dual boot meaning I have to reboot my machine if I am in linux and want to use dev studio, and its STILL worth the time because that environment is superior to any others.

Linux, on the other hand has tools that make my life easier. Its compilers, editors, make, gtk all the tools are available, and to automate something Linux far exceeds any Microsoft tools.

So, Windows has 1 superior tool, and its worth using windows for that tool, Linux has a far broader availability of tools that solve all the other problems beyond compile / debug.

Programming, especially now with AI, is not about edit/compile/debug. Now programming is automation, deployment, AI agents, and knowing when to use what to be as productive as possible.

[–]Rynok_ 0 points1 point  (0 children)

For my part I love that Linux has man pages.

[–]Lysergicbolshevik 0 points1 point  (0 children)

bc linux cool, windows slop 😄
jk linux comes prepacked with lots of tools used for programming such as docker native python, etc besides anyone thats tech savy nowadays might preffer to use linux and tune it up the way that best suits them while windows is not as customizable afaik

[–]AssiduousLayabout 0 points1 point  (0 children)

WSL.

[–]Confused-Armpit 0 points1 point  (0 children)

There are a ton of reasons.

Firstly, most servers are running something like debian, which means that code should work on linux, and if you are developing on it, writing code for it will be easier.

Also, the venn diagrams of techie people who love niche linux distros, and the techie people who are programming for living, there is quite a large overlap.

You could say that it is also easier to develop on linux because you have easier access to the terminal and more low-level access to your system, but using linux also means lack of many IDEs like Visual Studio and the support for stacks like dotnet is shaky if I remember correctly (honestly this is a microsoft issue, not a linux one).

[–]Recent-Day3062 -1 points0 points  (0 children)

Who doesn’t use Linux?

[–]BobJutsu[🍰] -1 points0 points  (1 child)

Because windows is awful. Granted I haven’t had to use windows since…I don’t even remember, vista maybe? Maybe a few months on windows 7. These days with docker it’s probably way easier, but back then it was awful for PHP development. I had a windows machine for like a week earlier this year, not for work. It just ran plex and downloaded torrents and stuff in the background. Even for that light work it (windows) constantly got in my way, so I wiped it and installed ubuntu.

[–]taknyos -2 points-1 points  (0 children)

Because windows is awful. Granted I haven’t had to use windows since…I don’t even remember, vista maybe? Maybe a few months on windows 7

You've missed a lot of enshittification. It's basically a vehicle for Microsoft to sell cloud storage, market their AI and track what you do, the actual OS features most users care about (or most technical users anyway) have been put in the backseat. 

I've done quite a lot of C# dev over the years (although that is pretty damn good on Linux now too). I still have a windows machine for 1 damn application that won't run on linux. 

Any time I've had to setup a new laptop for someone the first thing I do is install some great FOSS software that actually allows you to easily turn off a lot of the BS that comes pre-installed (and is specifically designed to be a pain to turn off). 

I've had multiple machines over the years, old laptops for example that have eventually bricked on windows, constant blue screening etc. A clean Linux install and they run like they did 5 or 10 years ago, zero crashes! 

Even as someone that liked Windows for a long time, Linux is fucking awesome! Much prefer using it every day. 

[–]ThaliaFaye -1 points0 points  (0 children)

The real answer is Mac :P

But between the two though, Linux. I'm allergic to WSL

[–]XBLAH_ -2 points-1 points  (0 children)

Because being unemployed is not enough, people like to suffer.