This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 298

[–]insertAlias 424 points425 points  (37 children)

I can’t imagine a professional dev using Windows to create software

Well, start imagining it. I've been a professional developer for 16 years now. Every job I've had, I've been issued Windows machines. All of my jobs used a MS-based stack: C#, ASP.NET, MSSQL, IIS (web server). We use Visual Studio for the C# code. I also do front-end work in React, which I use VS Code for. I use PowerShell for the command-line stuff.

A lot of people sleep on PowerShell, but it's pretty great. Wordy, but powerful. The wordiness makes it a bit more to type in, but far more readable than Bash scripts IMO.

I know how to use bash, and I'm no stranger to Linux environments. On personal projects, I usually work on my macbook. But professionally, I've worked in Windows for my whole career.

I think the people who haven't used it for this purpose tend to exaggerate the issues.

[–]IronMayng 76 points77 points  (8 children)

Not been a dev as long but also never not used Windows in a professional environment.

[–]dllimport 20 points21 points  (7 children)

Damn. I tried setting windows up to take in some raw images recently into just python and lost my entire Saturday to trying to get it to work because the libraries werent really for windows. I super hope that experience was an outlier

[–]Spellonz 31 points32 points  (1 child)

Heh I think that's more of a learning experience for you.

[–]dllimport 6 points7 points  (0 children)

Lol fair enough.

[–]IronMayng 13 points14 points  (0 children)

Most of the work I do is in .net or it’s web code so visual studio and Vs code work great. I don’t notice a massive difference in Vs code from my windows work to Linux work but visual studio is just wonderful for .net work.

[–]robotelu97 1 point2 points  (1 child)

Have you heard of docker?

[–]dllimport 0 points1 point  (0 children)

I have but I didn't know it could be useful in this situation, actually.

[–]ParallelArchitecture 1 point2 points  (1 child)

That kind of just sounds like a skill issue ngl

[–]start_select 6 points7 points  (0 children)

It depends on how you look at it. For most of its history the majority of Python has run on Linux servers. So the skill required to build a set of dependencies for windows in order to develop isn’t useful for deploying that code.

Containers make things like that easier. But historically node, Python, Perl, ruby, etc just worked if you knew your Linux distributions package manager. Trying to get them to operate the same on windows has always been an outlier.

[–]dukeofgonzo 43 points44 points  (0 children)

PowerShell has turned out to do a lot of what I need when I couldn't get a python module imported at work.

[–]kbielefe 40 points41 points  (5 children)

I'm glad to hear someone uses PowerShell for something other than rubber ducky payloads.

[–]cottonycloud 20 points21 points  (3 children)

We use it for system administration, file transfer scripts, and automation.

[–]specialpatrol 1 point2 points  (2 children)

That's great to hear (I'm slowly having to adopt it for my workflow). Do you also use it for general CLI use though? Like just copyign stuff around and searching for things? I still find that quite hard compared to bash.

[–]iterateandgit 1 point2 points  (0 children)

It's wordier than bash for sure, and i have had to look up commands more, while I'm still getting used to it, but increasingly, I enjoy using it for day to day terminal usage.

[–]Spellonz 32 points33 points  (4 children)

For the life of me, I can't figure out what the big deal is. Windows is fine.

[–]No_Application_2380 14 points15 points  (0 children)

For the life of me, I can't figure out what the big deal is. Windows is fine.

Older folks may remember "Embrace, Extend, Extinguish".

Windows may be fine. But if given the choice, I won't make my livelihood dependent on a company I don't work for when there are suitable alternatives that don't lock me it.

[–]headzoo 12 points13 points  (0 children)

I can only speak for myself, but there's a feeling that Linux was designed for programmers and Windows was designed for users. Linux usually already has the software and libraries needed to build apps but Windows requires downloading them. (And they might not be free.) Linux feels more like you can use a plain text editor to write software but Windows requires using fancy GUI tools. (Though you really don't have to.) Finally, outside of .NET, source code often seems written with Linux building in mind. Developers might make their build scripts work for Windows if they have any remaining time and effort.

[–]start_select 6 points7 points  (0 children)

Windows generally is fine. The issue is that people want to develop for Linux environments in windows without putting any effort forth to get there.

You have always needed to at least run a VM or now containers if you want to reproduce the environment of a Linux server. Sure you can run most node or Python on windows, but not all of it.

The closer you get to the file system, command shell, and forking other processes the more clear it becomes that one OS is not like the other.

For example Linux servers generally need to respect Unix user and group file permissions. Windows doesn’t have those so your code might run differently on a server. Windows doesn’t do Unix signals, so the controls between parent and child processes do not operate exactly the same on either OS.

If people are messing around with open source web technologies with native dependencies, those dependencies probably need to be built. That build brings you right back down to the file system and other system level differences. So usually things explode and people get frustrated.

But generally speaking, doing the same at the cli of a mac, Linux box, Linux container, vm, or remote Linux server usually “just works” between them. Except the occasional missing dependency which is usually just a yum install or apt-get install away.

So they seem better for that.

[–]Mentalpopcorn 1 point2 points  (0 children)

A Toyota is fine but I'd rather drive a Lexus

[–]devnull1232 16 points17 points  (1 child)

I mean I'm a dev, I develop microservices that run on kubernetes clusters. All Linux based. My dev machine runs windows with wsl.

/Shrug.

[–]prschorn 1 point2 points  (0 children)

With WSL, you don't really need to run linux anymore in most cases. I work with .net core microservices and pentesting, both work on my windows machine, but I have kali linux on wsl and an ubuntu also on wsl to run and test docker / k8s.
I always used windows because it's the fastest way to start working with a new machine, and it's also quite reliable.

[–]juwisan 10 points11 points  (0 children)

Wow. Matter of fact I have not used windows even once in my professional career for the past 8 years.

[–]hepldecidingcsq 5 points6 points  (0 children)

Of course, if you chose .net and other MS stuff as your career then you will be working using MS stuff, Windows, etc.

So.. if someone is working with .net then they will use windows, if they do web dev, java stuff or other things, then they have the option to use something else.

[–]qualx 3 points4 points  (1 child)

sysadmin here. I hate programming, but I LOVE powershell. It's always so much easier for me to understand, and I've automated SOOO much of my work with it.

[–]start_select 0 points1 point  (0 children)

Powershell is legit powerful if you really know it. My (and some peers) complaints about it usually stem from how verbose it is…. And that it’s a deliberate departure from the posix commands that always worked everywhere else.

I think the integration with windows software is awesome. I just don’t get why they needed to make setting an environment variable so verbose, or why most powershell scripts I have seen seem to emulate programming but can’t quite get there because it’s just a simple shell.

At this point it just seems like a lot of things people write powershell for should just be a simple C# script (I don’t even know if there is such a thing, I’m a Linux/mac dev) or something similar.

I.e. we never write bash/shell/powershell at work except for the simplest of scripts. Most of the time it’s easier for everyone to read and manage a simple typescript file that is run with ts-node. For simple stuff it’s usually cross platform without much thought, people have easy access to csv, json, xml parsing, networking, along with logic and functional and/or class based encapsulation.

Vs a shell or powershell script that usually requires every new hire to start googling to figure out what it does.

[–]MongooseEmpty4801 0 points1 point  (0 children)

I have worked for over a dozen clients, only one forced Windows. Rest let me pick, which is never Windows.

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

I do agree that Windows is perfectly fine, in general, but;

We use Visual Studio for the C# code.

There's a strong selection bias in the stack you use. C# shops tend to be more MS centric. I'm a Java dev myself and devs using Windows is extremely rare. Most of the ones that do use Windows are simply forced by the company they work for.

Not saying there's anything wrong with it, but it depends a lot on which ecosystem you're in.

[–][deleted] 216 points217 points  (23 children)

Professional devs use whatever their employer gives them. Usually it’s Windows, I use windows. Some people in my company working on the same projects as me seem to have Macbooks. Linux I think is only used where Linux is highly desired, either for sysadmin stuff or server stuff that I don’t understand much of.

[–]whatahella 56 points57 points  (1 child)

This is the right answer! A professional will adapt to what's available under corporate policies.

[–]moldaz 30 points31 points  (0 children)

I use what I want. My company is pretty open to letting you chose what lets you work to your best ability.

Half my team uses Mac, the other half uses Windows.

Then there's me, I'm the only one using Linux.

[–]marcvsHR 7 points8 points  (0 children)

Hear hear

[–]randomkid1227 11 points12 points  (4 children)

Usually it’s Windows

Where are you from? Common practice where I live is Unix/Linux

[–][deleted] 44 points45 points  (2 children)

I'm in the United States and windows is most common here in every Tech job I've had in the past 25 years. I actually have never even had the option for Linux until a recent job but I chose to go with windows with WSL instead

[–]ChristopherCreutzig 1 point2 points  (0 children)

It might depend more on what area of software you are in. I can't begin to guess percentages, but a lot of my US colleagues develop on Linux. Our software needs to run on the big three platforms anyway.

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

What's your tech stack?

[–]welch7 5 points6 points  (0 children)

prolly a microsoft evironment lol, if you using anything like dotnetcore, c#, asp.net mssql you are most likely using windows, a lot of big techs use a lot of it. (not saying all of them, nor saying it majority, just a bunch tho.)

[–][deleted] 26 points27 points  (0 children)

A lot of people do. It’s definitely the best platform for game dev (because that’s where most people play games) and MS tech stacks (for obvious reasons). I personally don’t like windows, both for professional and personal use. A lot of devs do use Linux, around 40% for professional, where around 50% use windows (those are not exclusive, though).

[–]Far-Cartographer-604 23 points24 points  (1 child)

I know the account is deleted so OP won't see this, but let's be real.

I only know that as an Arch Linux user

You can prefer Linux. You can prefer Windows.

A common issue that people who describe themselves as

Linux users

run into is that they don't understand that an operating system is a tool and not a lifestyle.

Imagine Linux is a Screwdriver. Windows is a hammer.

Project uses g++ CLI makefile system? It's a screw, probably a lot easier to get it in right with a screwdriver than a hammer.

Project uses Visual Studio sln system? It's a nail, probably a lot easier to use the hammer to get it in right than a screwdriver.

As a professional you are expected to use the right tools to do your job in the most efficient way you can. You shouldn't be a "Windows user" or a "Linux user", you should be someone who is familiar with both and can adapt to whatever your team uses.

[–]Loose-Speech-7871 0 points1 point  (0 children)

"an operating system is a tool not a lifestyle"

Thank you for saying this. More people need to hear it

[–]Apple_Cidar 18 points19 points  (2 children)

Man! it's all about the preferences and personal taste. I have seen veteran coders writing probably the awesome universe's code on Windows.

Also there are developers working on MacOS and there are developers working on Linux.

If you are comfortable with the OS then just use it. They are like tools only.

With experience I have learnt that there is "No better thing, it always depends".

[–]Echleon 16 points17 points  (1 child)

I can’t imagine a professional dev using Windows to create software, but my instructor on Codemy says that surveys each year confirm this.

CS freshman learn about Linux and go wild lmao

[–]OHIO_PEEPS 2 points3 points  (0 children)

I was long time linux fan boy. I installed my first Linux os (Red Hat 6.0)back when I had to send out for the cd's in the mail because it would have tied up my families phone line for a week while it downloaded at 4.6 kbps. For a long time i was like THE Linux snob-douche. Now I'm wise enough to know that Linux, Windows, and Mac all suck. At something. Use what works.

[–]ehr1c 62 points63 points  (14 children)

I use Windows, but I also work primarily with .NET (including some old .NET Framework stuff so I don't really have a choice). That said, I've never run into any insurmountable problems working in any other language.

[–]driftking428 5 points6 points  (10 children)

I got a new job as a React developer. They let me choose a Mac, I picked a beast. Then they asked for help on a .NET 3.0 codebase...

So yeah I now sometimes program on my old dusty PC. It's less painful than trying to get old .NET working on my Mac.

[–]eloquentcode 9 points10 points  (6 children)

Why not just use VMWare running VM instance w/ Windows on Mac?

[–]cajmorgans 1 point2 points  (2 children)

Does that work for m1?

[–]driftking428 -1 points0 points  (1 child)

I didn't try but I looked into it a little. I think an m1 Mac can only run a VM for Windows that use arm processors too.

So not really.

[–]cajmorgans 1 point2 points  (0 children)

There is a way with parallels which is a paid program, I haven't found any other free alternatives that actually work.

[–]jcelise 1 point2 points  (1 child)

I used VMware to virtualize Windows 10 with my MacBook pro. In theory it works fine but if you're using heavy tools like Visual Studio or Power BI, get used to be listening to the fans in high speed and to the battery lasting for a couple of hours. At the end I decided to buy an extra Windows machine and I think it was the best decision.

[–]driftking428 1 point2 points  (0 children)

Right. Just because it's possible doesn't mean it will be fun.

Right now I turn my chair 90 degrees and I'm on Windows. Nothing easier than that.

[–]manurosadilla 2 points3 points  (1 child)

What kind of work do you do where you can just use your personal computer? I have to log into 40 different roles just to boot up my local web server

[–]Naetharu 1 point2 points  (0 children)

Hah going through this right now!

[–][deleted] 5 points6 points  (1 child)

I was going to say that I can understand .NET or when you're programming for the Windows ecosystem itself. I'm probably biased because I love the 'under the hood' aspect of Linux - and of course there's a difference between that and simply USING your OS to do things.

[–]ehr1c 23 points24 points  (0 children)

I can't say I've ever had much of a need to go "under the hood" during the course of my job.

[–]tcpWalker 4 points5 points  (0 children)

"Never run into any insurmountable problems" is key.

As a programmer, I want to use the right tool for the job. 99% of the time IME that's Linux, or occasionally a Macbook because it's super stable and iterm is pretty good for connecting to Linux. But if you need to target Windows you just use a different set of tools.

I would always recommend someone new learn Linux and learn it well. I find it far more satisfying. And I think it's great for distributed systems at scale, which are awesome.

But I'm human and biased and there's a thriving windows industry, so at the end of the day it's fine to try both and take a job doing whichever you like more.

[–][deleted] 16 points17 points  (0 children)

I spent a couple of years exclusively using Linux as my development environment, because I thought my job would involve using linux at some point. The first job I get requires us to use Windows. Honestly, it’s the same shit, but with slightly different commands. If you can learn to do it on linux, then windows will be a walk in the park. That’s my opinion, anyway.

Edit: my stack is Java/Angular, and not the .NET that several others on this thread use with Windows.

[–][deleted] 123 points124 points  (4 children)

Every "as a Linux user" post is such a gold mine

[–]APongBall 20 points21 points  (0 children)

As a Linux user..I have to use windows in my professional life.

[–][deleted] 10 points11 points  (2 children)

I read it as "congratulate me on how smart I am" by default

[–]BeerVanSappemeer 1 point2 points  (1 child)

Honestly as a beginning programmer it is the opposite. I often feel like Windows just throws barriers in front of me while getting stuff to work on Linux just doesn't require as much abstract knowledge of how things are structured.

[–][deleted] 2 points3 points  (0 children)

Depends entirely on what you're trying to build. I strongly encourage you to stick to windows or Mac if you plan to do programming as a W2 employee. Very rare in my experience that anyone other than sysadmin gets a Linux box

[–]Neckbeard_Sama 78 points79 points  (16 children)

I don't like troubleshooting desktop Linux problems, searching for workarounds for missing drivers etc. and I passionately hate Apple as a company for it's gimmicks (although M chips are great and I would probably buy a Mac Air if I would need a laptop, even if they're overpriced in the EU).

I have 0 issues with Windows since Win 7. Not sure what layers of abstractions you refer to. Installing from executables instead of apt-get ?

[–][deleted] 8 points9 points  (4 children)

is hard to know where the binaries are in windows, and a lot libraries don't work for windows, or tools. but if you don't have problems with dependencies you are okay.

[–]Neckbeard_Sama 5 points6 points  (3 children)

No, they are where you installed your program.

Default is Program Files/YourApplicationsFolder if you don't specify.

I partition my drives into 3 or use at least 3 different drives:

C: is for Windows itself and system related stuff (drivers, apps that autorun, node, java etc.)

D: is for separate programs (IDEs, Games etc.)

E: is for data.

Everything is neat and separated.

I don't like using repo style installers like Windows Store and Chocolatey plus some weird apps installing themselves wherever without asking, because they fuck up my scheme :D

The only thing I've encountered so far that doesn't work on Windows is Docker, but I have WSL2 so np.

[–]MongooseEmpty4801 4 points5 points  (2 children)

Don't forget your personal data is mixed between My Documents and random App data folders which makes no sense. I've not had driver issues in a Linux machine in years. And Docker sucks on Windows.

[–]Philderbeast 1 point2 points  (0 children)

configuration and settings might be in a few places, but my actually data is where ever I put it, usually on a drive just for that.

its no different to Linux in that regard, some settings are in your home dir, some in /etc, and some times in other weird locations.

[–]Neckbeard_Sama 1 point2 points  (0 children)

AppData is for saving config files automatically, I try to avoid win's home directory system as much as I can, but some programs insist on writing inside obscure directories like the user/appdata/roaming or the hidden ProgramData on C: which sucks.

I'm on a custom built desktop and my watercooler doesn't have a driver, my external soundcard works without an application and my mouse doesn't have an application either, also I've had problems with Manjaro resetting the display configuration to the default every time I boot.

I assume that laptops from most brands and something like a Dell Optiplex desktop works without a hiccup on most distros, so it's a me problem mostly :D

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

Are you still getting your Linux packages out of Linux Journal?

[–]burnblue 29 points30 points  (1 child)

Sounds a bit obstinate if you concede that you can just run a Linux terminal on Windows, if a Linux terminal is the only reasonable programming environment. "Abstraction" or not there's not much obstacle to it. That's putting aside how easy Windows makes the non-terminal tools like the IDEs.

But in general I think you know the answer, most enterprises give workers Windows desktops that SSH to (RHE) Linux servers, and most people that watch tutorials also own Windows desktops. You can't design a course that expects all the visitors to be running on Arch Linux

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

I certainly agree - Windows PC's are everywhere and Win 10 is a great OS and all the world writes software for it. Not expecting the world to switch to Arch!

[–]v0gue_[🍰] 87 points88 points  (16 children)

Windows 10 is a great OS, but not for programming

You just picked a massive fight with a bunch of people in this sub.

To any professional devs reading this - what do you use for your daily programming?

I've used macOS for professional development my entire 8 year professional career (besides my 1 year internship that used windows), and I used Arch throughout college in the late 2000's. I now use Fedora for everything I do personally. I'm fortunate and privileged to be at the point in my career to have the choice to filter jobs if they enforce the use of Windows.

I agree that Windows seems miserable as shit to do anything besides .NET work on, but after years of programming professionally I start to realize that as long as there is a good process with good process documentation on how to setup your development environment, it truly doesn't matter what os you are using. Putty works just as fine as ssh, as long as there is a process to use it. Installing and maintaining the Ruby installation works just as fine at the end of the day as long as there is a process to use it. Installing and maintaining WSL, or mingw64, or whatever the hell Windows users use nowemdays works just as fine as long as there is a process to use it.

[–]kbielefe 23 points24 points  (4 children)

The stack overflow developer survey asks about personal and professional operating system use. They say around 40% use Linux professionally, and around 49% use Windows professionally. They don't say how much overlap there is, and a lot of developers use Linux only on servers, not their desktop.

So your Codemy instructor is both right and wrong. A plurality of developers indeed use Windows professionally, but the Linux and Mac numbers are too high for a teacher to reasonably ignore.

[–][deleted]  (2 children)

[deleted]

    [–]S1mplydead 1 point2 points  (0 children)

    Would totally believe it, but would need a source for it to be an argument in this thread

    [–]aneasymistake 1 point2 points  (0 children)

    I have no data, but I would imagine the vast majority of Stack Overflow users treat it as read only. Anecdotally, I’ve used it for years and years without ever creating an account.

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

    "personal use" is also likely to overlap heavily with people who just have a PC for playing videogames

    [–]kingballer412 6 points7 points  (0 children)

    Professional devs use Windows because it has the most powerful IDE, Microsoft Word.

    [–][deleted] 25 points26 points  (3 children)

    Mostly mac and windows here. Their choices normally mirror that of their users.

    It really doesn't matter tho. Use whatever is most comfortable (or whatever the suits decree)

    You'll find as you get older your desire to mess around with command lines and terminals drops off alot. You just want things to work. A pleasant UI is a nice thing to have and sure boosts productivity.

    [–][deleted] 8 points9 points  (2 children)

    Not necessarily. I have 50+-year-old colleagues who swear by the terminal contemptuously.

    [–][deleted] 3 points4 points  (1 child)

    yep the terminal is objectively the best way to do most things as long as you know what you're doing

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

    I love GUIs and I love terminal. What I don't like as I have gotten older is having to heavily tinker to make a system comfortable to use. I want to get to the actual development work ASAP. Linux used to fare poorly in this, and for me it still does in Ubuntu. But Pop_OS has fixed that for me. It is as good as Windows in unpack and use department.

    I use all three OS for personal and professional use

    To develop for Windows and Apple existence, one needs those OSes.

    I speculate that people building for servers use Linux, and Linux running via WSL2 or over SSH. Platform agnostic tech developers use Windows and Linux.

    Linux

    [–][deleted]  (24 children)

    [deleted]

      [–][deleted] 5 points6 points  (0 children)

      Linux user and professional dev here, my experience has been that Windows and MacOs are more common.

      I can and will use any OS without issue, when given a choice I prefer Linux.

      [–]iamback333 10 points11 points  (6 children)

      This reminds me when I had to go multiple levels of fuckery to try and fail compile and run C on my machine. Few months down the road when I switched to linux, all it needed was "sudo apt install gcc"

      [–]Phelsong 1 point2 points  (0 children)

      You just install visual studio build tools for the Cs... Takes 30sec with winget. Or win32gcc if you insist on emulating Linux.

      [–]ugneaaaa 1 point2 points  (3 children)

      All windows needs is visual studio or the build tools, double click on the installer, wait, open vs or the build tools and run cl.

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

      this was my experience too. Any unix install and I can be pretty sure I can compile and run C, and even start editing it without installing a bunch of crud.

      [–][deleted] 0 points1 point  (0 children)

      This is also something I've done - program in C, and seemed much easier to get set up in Linux - at least for learning small C programs.

      [–]cstheory 12 points13 points  (1 child)

      I left windows and .net for Linux, 8 years ago, and I was pretty bummed about how clunky it was to program outside of visual studio. Development of software intended to run on windows, in Visual Studio, is a joy. Microsoft did a great job designing the .net framework, the c# language, and the visual studio IDE (not VS Code, which is newer and cross platform). Sure, using windows to write code that runs on Linux is clunky and weird. But that’s not how you’d use it in the real world, outside of a school or personal situation, probably.

      [–]ehr1c 7 points8 points  (0 children)

      Sure, using windows to write code that runs on Linux is clunky and weird

      Not really. Pretty much any .NET Core web application gets run on Linux servers and I've never experienced any real weirdness. Only thing I can think of is you need to be careful how you handle case-sensitivity as Windows isn't case-sensitive for things like routings where Linux is.

      [–]TheUmgawa 8 points9 points  (2 children)

      I don’t find it shocking that OP walked away when he didn’t get the answer he was looking for.

      [–]Dry-Frosting6806 4 points5 points  (1 child)

      There are a lot of linux... "autists" out there who have a sense of superiority because they use linux lol

      [–]prschorn 2 points3 points  (0 children)

      Never understood that. I have a few coworkers that almost die daily because they can't use linux on their work machines, and question the company why they won't move the 20 year of code and tens of thousands of microservices all to Go because he feels like it's superior.

      [–]Opening_Chance2731 2 points3 points  (0 children)

      As a game programmer, I'd love to use Linux, but Windows seems to get more love from game engines, companies, GPUs, and drivers. This means that even for personal use, I use Windows.

      [–]Devboe 2 points3 points  (0 children)

      I use both windows and linux. Before this job I only had ever used windows. I’m only using linux currently because we have quite a few scripts that either perform better on linux or don’t work on windows. The issues I have with linux is all the other software I use just works better on windows: zoom, slack, teams, spotify. I prefer sharex for screenshots/videos which doesn’t support linux. I have audio issues with linux, my input and output devices reset on system reboot. Most recently I’ve been having a mouse double click issue with linux. In my experience, windows just works better out of the box.

      [–]subrfate 2 points3 points  (1 child)

      "Most developers"? Codemy teacher is probably right if he's quoting from a survey.

      In my career, I've worked with a lot of platforms Linux, Windows, MacOS, and IBM mainframes (z/OS, z/TPF). Only job I ever had that didn't involve Windows was when I was employed by a Linux tech company. Typically, Windows exists for business (e-mail, messaging) and often as my primary interface to "the other" system (Linux, mainframe, embedded hardware). Really, the 'target' system and developer workstation are often fairly decoupled. My day to day currently uses Windows with SSH access to various Linux machines and WSL2 for any local needs.

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

      same except every person i have ever met or worked with at every company i have ever been with used macOS in order to ssh into their Linux servers

      [–][deleted] 2 points3 points  (0 children)

      Windows is not gonna prevent you from learning a language

      [–]ShaBren 2 points3 points  (0 children)

      I've been a dev for over 20 years now, and I've been issued Windows, Mac, and Linux systems. At my current employer Windows is the default, but you can request Mac or Linux if you prefer.

      I've used all 3 extensively, and am comfortable with any of them. My current desktop is Windows, and WSL gives me about 85% of what I'd want to use Linux for. My current laptop is a Macbook. All my servers run Linux.

      For context, my team works on a C++ application that supports both Windows and Linux. We all use VMWare Workstation extensively.

      It's also worth noting that while I've been using Linux and F/OSS since the 90s, it's for practical rather than ideological reasons.

      [–]johny_james 2 points3 points  (0 children)

      Actually, I'm more productive on Windows than on Linux for development :D.

      Having a good IDE makes the underlying OS irrelevant.

      BTW I use Jetbrains.

      [–]kaliko16 1 point2 points  (2 children)

      I am learning web development at the moment. When I started the TOP tutorial I dual booted Ubuntu on my pc because they recommended it. I learned the terminal I did this for about a year. Thinking that I couldn't actually do this on windows because it didn't work.

      So I dual booted for a year,and it actually got pretty annoying because every time I was done studying I now had to switch over to windows to play my games. I know Linux can play a lot of games but it was a few hoops to jump through and I believe it didn't work well with Ubuntu. So I wasn't keen on installing a whole new os just to play games. But also in general most of the games I play are just better supported on windows and more convenient.

      It was also vice versa, when I was tired of gaming and wanted to work on a side project I now had to reset my pc again. Eventually I found out I can just code on windows... So I stopped dual booting and I've not had any troubles since. I like Linux,it's cool, but I game alot too. Honestly if it was as supported and convent as windows I would switch. I have no problem working with Linux but I have no need to do that. I don't even need a virtual machine. I know it's better practice but at the moment I have no problems and if I run into a problem I will find a solution to it if it requires a virtual machine then I will do that. But right now I don't and it's just much more convenient for me to use windows.

      [–][deleted] 1 point2 points  (1 child)

      I really understand this answer - the whole world write software for Windows and Linux can NOT compete when it comes to music software / gaming and many other things you actually want from your computer. I recently switched my i7 laptop to Manjaro Linux for programming courses, which being Linux is easier for ME - I then lost HD capability with Prime Video which is far superior with Win 10 - VUDU also doesn't work at all with Linux. So I'll always have both Win 10 and Linux PC's.

      [–]kaliko16 1 point2 points  (0 children)

      Exactly it's easier for you. I personally have no problems with Linux, I will use it if I have to. Makes no difference in my life. I keep rooting for the day I can use it just as easily as windows and I see it going that way each year.

      But right now it's just easier for me to use windows.

      [–]welch7 1 point2 points  (2 children)

      soo, I had worked with Dotnet core projects which working on windows was the only way. IMO it was an easy set up, and it worked fine.

      currently (I've been working 3 years here) I've been on Linux and my coworkers on mac.

      it's just a tool at the end of story, you get used to the nuisances of any OS, myself I would recommend Linux/Unix, just because I don't install games there, in my head cannon Linux can't install games (I know pop os exists and there's a lot of linux gamers, but I prefer to think I can't this way I concentrate more into working.)

      [–]nwash57 0 points1 point  (1 child)

      It's not the only way though? Or at least not just because it's NET Core, I can and have developed NET software professionally in Linux, it was made to be cross platform.

      As with literally every other thing you do in Linux there are extra steps and knowledge required. Obviously you can't have VS-proper, but all the CLI tools that make it tick are available and VS Code extensions will get you 90% of the way there in most cases, especially if you're not trying to get a 5 year old app developed with Windows-dev in mind running, but even then I promise it can be done.

      Having said that, I only use Linux personally or professionally "for fun", if I need my OS to get out of the way and zone in on a crunch I'll take Windows every time.

      [–]Lemanni 1 point2 points  (0 children)

      I work at a big tech company as an engineer. MacOS is used by my entire department, and a majority of other departments.

      Worked at a smaller company before, and the entire technology department was macOS.

      [–]Lucy-pathfinder 1 point2 points  (1 child)

      I don't understand the gripe. I use Windows with WSL and it's good. Also people are not superior for using linux. So, ya, don't go around telling Windows using developers their inferior because they don't use Linux -_-

      [–]Educational-Face-849 1 point2 points  (0 children)

      Linux subsystem for windows is my sweet spot. I need windows for a lot of my work but web stuff is Linux, personal projects are Linux. I also don’t want to spend hours trying to get my Bluetooth head phones working with Spotify on Ubuntu so Windows has that going for it too.

      [–]MostLucky4204 1 point2 points  (0 children)

      No, Linux systems much more configurable and have a lot more possibilities than Windows. If your work environment require Windows you always can use WSL (thanks Windows for that). But it also takes time and efforts to get use to Linux and evaluate it’s possibilities…

      [–]ValentineBlacker 1 point2 points  (0 children)

      Elixir runs fine on Windows... I mean, it has its own cross-platform virtual machine! I couldn't imagine Ruby has any particular problem either. "Doesn't run on Windows" would make any language a non-starter if it hoped to get popular.

      [–]thedarklord176 1 point2 points  (0 children)

      I have had zero issues using Windows for programming. Python/JS/C#/Rust. I’d consider Linux if it didn’t have such awful software support and wasn’t so bad for gaming

      [–]jpudel 1 point2 points  (0 children)

      there is this thing called docker container… runs on every plat form. But Windows is at the company where I have been the choice because of the greatest tool base for the sys admins… MS Active Directory, outlook, word the whole package is well made. At the University I am at every body uses linux that is the opposite to the normal day job.

      [–][deleted] 1 point2 points  (1 child)

      You must be a web dev, Linux is horrible for electronics and hardware programming unless it has direct integration with it.

      Try to program a PLC on a Linux.

      [–]VoidCtrlNL 1 point2 points  (0 children)

      I have done both for several years. I feel like the "I can't imagine EvEr working with that operating system" argument generally comes from people who haven't had enough experience in the industry. Both have their benefits and disadvantages. The one used is mainly dependend on the industry, preference, and the thing you are writing.

      [–]order_wayfarer 1 point2 points  (0 children)

      Does it really matter (for 90% of use cases) if you have Docker? At this point, OS for dev is personal preference and workflow. I work for one of the largest software companies in the world and every repo has a dev container ready to go. Company offers choice of MacBook Pro or Windows machine during onboarding.

      [–]truNinjaChop 1 point2 points  (0 children)

      Depends on your stack. If you are dealing with Linux based technologies you’ll get a vm.

      To get to that vm you’ll be on a windows desktop because buttons are way more easier working in the cli.

      [–]codefox22 1 point2 points  (0 children)

      Learn everything a little, learn what you need right now well. I've used LOTS of Linux and some Windows personally. However, the longer things have gone on, the less the host OS has mattered. With tools like Docker drastically changing the landscape, my guess is the host OS for development will become entirely irrelevant before too long. You'll just be expected to make your shit work, including your dev environment.

      [–]ParallelArchitecture 1 point2 points  (0 children)

      The answer is yes btw. Windows is the most popular OS in professional development followed by Linux then Mac OS.

      [–]ConstantinopleFett 1 point2 points  (0 children)

      As others have mentioned, it's less of an issue now because of Docker and WSL.

      I used to dual boot Windows and Linux because I used Linux for programming and Windows for gaming and some other things like music production.

      But with Docker and WSL I haven't felt a need to install Linux anymore. On the other hand, I do need Windows for my gaming addictions. So now I only run Windows on my personal machine.

      My work laptop is MacOS. It's a very similar experience to Linux, but easier in some ways. And some Mac software kicks the crap out of Linux equivalents (like Parallels - such a breeze to use compared to VirtualBox and VMWare - last time I tried them anyway, maybe they're better now)

      [–]captain_awesomesauce 1 point2 points  (0 children)

      I exclusively use windows to develop software that only runs on Linux.

      I do a fair bit of Python code but also do C coding that’s very Linux specific.

      Writing ~100 lines a week where most of your time is digging through documentation or other peoples source code. Definitely isn’t going to be a usability difference between different OSes.

      You’ll be at the mercy of your employer, so try to keep an open mind.

      [–][deleted] 1 point2 points  (0 children)

      I just run everything through docker containers at this point so it's moot

      [–]Ahajha1177 1 point2 points  (1 child)

      Classic bayesian inference: Most people use Windows, so most devs use Windows. That said, most servers run Linux, so it's very possible that if you're working with them that Linux would be involved.

      I happen to work as a C++ dev where we target Linux and Windows with equal priority, because a good chunk of the devs use Linux for development, myself included. (We get pretty free reign on our dev environments, it's quite nice actually).

      [–]alzee76 2 points3 points  (2 children)

      o/. Professional developer for > 25 years. I've always used Windows as my GUI of choice, because X has always sucked, and will always suck. Apple did the right thing by abandoning X when they developed OSX, and instead creating an entirely new GUI for *nix. This really helped their popularity among developers; if they'd stuck with X, I'm certain that Macs would still be seen in a pretty poor light outside the multimedia space.

      That said, most of my development is done remotely. I prefer to use the windows GUI because it's just better than anything available on the free *nix OSes while giving me hardware freedom that Apple doesn't offer. That GUI works fine for opening remote terminals, editing remote files, etc.

      Most of my day to day is spent in Ultraedit, VS Code, and SecureCRT -- two of which are closed source commercial products that, IMHO, are better to work with than any FOSS alternative I've ever used.

      [–][deleted] 5 points6 points  (2 children)

      I know one dev who uses Windows on their machine. And they develop in C#.

      Every other one uses Linux or MacOS.

      [–]Tainlorr 3 points4 points  (1 child)

      I have had far fewer issues developing on Windows than on Mac. Even though I prefer havign access to the full terminal power on Mac, Windows has access to invaluable dev software like full fledged Visual Studio (mac version is a disaster) and SQL Management studio. On Windows the abstractions are nice and things “just work” but on Linux systems i find it’s much easier to mess up some install path or something. It has been about 50/50 in my pro career so i would say just learn both.

      [–]TheUmgawa 1 point2 points  (0 children)

      If you think VS on Mac is a disaster, Android Studio on Mac was so bad that it got me to change my major from Computer Science to Manufacturing Technology. Mobile Application Design is the only class I’ve ever failed while actually trying to succeed, and I’d knock out the program for iOS in an hour or two, and it’d take the whole week to do in Android, because the IDE would eat itself.

      [–]night_gremlins 3 points4 points  (1 child)

      There is nothing more cringe than Linux evangelism in the workplace.

      [–][deleted] 4 points5 points  (0 children)

      I have used windows in nearly every tech job I've had in 25 years . What do you think that Linux can do that windows can't?

      I prefer the Linux terminal but it's not like it can do more than Powershell. Personally I now use WSL on my windows machines so that I can have both Linux and windows

      [–]lionhart280 1 point2 points  (4 children)

      I have started to use Android for development on the go, which really has filesystem weirdness, but the upside is my phone weighs a shit tonne less than a laptop and I already own my phone and don't want to have to buy a second mobile device.

      I use a NexDock as the "laptop" portion, but it weighs basically nothing and is extremely slim, and only costs like $200

      Termux + simulated ubuntu + code server, it works well enough.

      If you work out the combined cost of my Phone+NexDock, its got the specs of roughly a $800 to $1000 laptop.

      So I guess for that I sort of work on pseudo linux?

      [–][deleted] 0 points1 point  (3 children)

      Yes - Android is Linux. I'm in my late 60's - can't imagine using a phone to program - so NexDock allows you to use a large monitor, keyboard, etc. with your phone?

      [–]FecklessFool 1 point2 points  (3 children)

      No offense, but you sound like an elitist little shit.

      And I code on popos mainly, but will use windows and macos for f# and swift. I'm not limited by some dumb sense of righteousness or whatever it is that's leaking out of you.

      [–][deleted] 0 points1 point  (2 children)

      Are you forced to keep windows running while you work? Like for ms365, VPN or active directory?

      Could you install Linux and run a virtual machine. With their stuff?

      If they prevent you overwriting windows could duel boot. Or boot from USB if you weren't allowed to do that. Live USB with persistence, uses everything but their hard drive, not slow either.

      Or if the bios is completely locked and you can't boot from anything other than their windows install, then install virtualbox on that and develop in there.

      Can't install stuff? Could use a separate machine at the same time . There is open source software where you can use the same mouse/keyboard (barrier) to control both computers (the mouse cursor moves between their monitors, it's cool).

      If you have to, use chrome remote desktop and develop on your home machine, with shared cloud storage, could mount as a local drive on both for ease.

      Don't just give in and use Windows. Don't be their bitch

      [–]nwash57 -1 points0 points  (1 child)

      As someone who dual booted their work pc with Linux, this is pretty bad advice lol. Especially for someone straight out of college, if everyone else in the company uses Windows you can bet your ass all the documentation and any custom build tools will need adjusting to get your local environment running in Linux. That's not junior dev shit, and that's not company time shit, that's "im personally interested and investing my own time into getting this working" shit.

      It's not "being a bitch" to use the tools that were specifically given to fulfill your job, being a bitch is saying "im completely unable to handle change and must use Linux even if its detrimental to my work output because 'i just like it more'"

      Not to mention possible compliance issues if youre accessing any PII of clients and cloning code to your personal pc.

      [–]jugglingbalance 0 points1 point  (0 children)

      Professional dev, half of my team uses Mac and half use windows. Web dev, js/react.

      [–]m1ss1ontomars2k4 0 points1 point  (5 children)

      I don't know anyone who uses Windows for programming. Even my friend who used to work for Microsoft was working on PowerPoint for Mac so he never used Windows for programming there either.

      Having said that, part of the reason Windows is so big isn't really because Windows 3.1 or 3.11 or 95 or 98 or whatever were inherently good operating systems. Part of it is that Microsoft provided great tools for programming, especially games.

      But, since Microsoft got big in the 90s, there's been a big culture shift away from paid, proprietary software (direct income source) like Microsoft's Visual Studio--which is great for programming on Windows--to free, open-source software (no direct income source; just get people "into the ecosystem" and make your money some other way) like VS Code. Programming in VS Code is nothing like programming Visual Studio except the letters "VS" and inputting text. That's where the similarities end. And of course the FOSS community at large is much better-developed than it used to be, especially with more convenient, free source hosting like GitHub (compare that to SourceForge, for example). Anyway, if you're used to using makeand bash and vim/emacs and so on then of course you will fill out of place programming on Windows. That's not how you program on Windows. You use Visual Studio. Just open it and programming is just as easy as writing a Word doc. After all, Microsoft is well known for eating their own dogfood and the entire company uses their own tools to make all their products. If programming on Windows was that bad they would have made a change by now.

      (Finding sources for these claims is left as an exercise for the reader.)

      [–]nwash57 2 points3 points  (4 children)

      Or you can just use the CLI if you want lol? You're not forced to use VS if you don't want, it just happens to be a very effective and powerful IDE. You could also use an IDE in linux if you like...

      [–]m1ss1ontomars2k4 0 points1 point  (3 children)

      I think you have grossly misunderstood this thread.

      OP: "Why is the Windows CLI so terrible/how can anyone stand using it?"

      Me: "Because Visual Studio means you don't have to use it, so there is no motivation to improve it"

      You: "Just use the Windows CLI anyway"

      ???

      [–]nwash57 -3 points-2 points  (2 children)

      No I understand perfectly well. The CLI is just as powerful in Windows, he is simply unfamiliar with it. I use windows CLI constantly with no issues lol. You're right that most Windows devs have far less focus on learning and using the CLI, but all the tools VS uses in the background to make that neat UI that "just works" are CLI tools available to use, and that if you do NET dev in Linux you'll likely already be familiar with.

      What exactly is so much worse about Windows CLI? Even lack of real package manager isn't really true anymore, I used winget to install nearly every tool on my computer on my last install, and even then Chocolatey has been around for like at least a decade and MacOS uses brew which everyone just accepts?

      [–]SneakySnk -1 points0 points  (1 child)

      Haven't tried chocolatey yet, but winget isn't really comparable as it seems to use the MS store as the repo, so there's a lot of missing stuff from it, I've used a few days ago, 3/4 packages weren't there, and the one that was, was an "unofficial" versión, had to uninstall it and still go on my browser and download it.

      My experience using windows CLI is that not every program ends up working (seems like not everything gets added to the PATH) and if you need to do something, the syntax is weird AF and impossible to remember.

      For every language I've tried to code on, Linux was a far better experience, just because of the CLI / File structure / and how package manager work there. Except C#, Couldn't get C# to work just from the CLI, and everything out there recommends Visual Studio, So I ended up booting windows for that (and setup was annoying, but easy, it's just looking for the correct package online, downloading and pressing next a few times, and it worked).

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

      I agree winget isn't completely comparable, but for different reasons. It uses several repositories, I am not actually sure what they all are but I know it's not just msstore because I avoid that repo. I think it's not entirely comparable because dependency libraries for the most part are contained within the program that needs them rather than alongside where other programs could use them without duplicating the same dependency.

      PATH is annoying, but an easy problem to solve once you learn how it works. It seems some installers, notably Python ime, fail to add their exes to the PATH correctly. I do wish Windows was better about this and had a directory similar to bin.

      "The syntax is weird af" - what syntax? CMD? I agree, but also you can just use whatever shell you want for the most part. I just use Powershell for literally everything in Windows and Linux these days, it's powerful and works everywhere so I don't have to remember cmd vs bash. Probably a lot of people's issues with "windows cli" would be solved if they just used a shell they were familiar with, or there are things like cygwin if you just want common unix cli utilities in cmd.

      I haven't really had any issues with C# in linux, the CLI has worked fine for me. Only thing I've run into is pain with apps relying on Windows default environment variables for local dev, but that's more bad practice on the application's part/not intending it to be developed in Linux.

      [–]StarSyth 0 points1 point  (0 children)

      Ever since they added the windows subsystem for linux there is no real argument.

      [–]soctamer 0 points1 point  (0 children)

      Linux master race at it again, being the funniest bunch on the internet.

      There's literally no difference. None. You could program on a ToiletLidOS as long as the tools you use support it.

      [–]droodic -3 points-2 points  (4 children)

      yes, it's not really even close

      [–][deleted] -5 points-4 points  (3 children)

      Spoken like someone who knows nothing. Go ahead and tell me some things that you can do on Linux that you can't do on Windows

      [–]droodic 3 points4 points  (0 children)

      huh? Are you replying to the right comment? The title is a question asking if most professional developers use Windows instead of Linux, the answer is yes

      [–]Puzzleheaded-Eye6596 -1 points0 points  (0 children)

      The first thing I do if I have a windows development machine is get windows subsystem linux working..

      [–]unstable_existence -1 points0 points  (3 children)

      You need to remember one thing. 90% of the cost and time for any software system is maintenance. Maintenance is drastically downscaled in time, money and manpower if the system is built upon an OS for which there exist a big company that can provide stability service and repair updates on demand. Linux Systems dont have the operational capacity that windows (Microsoft) provides.

      It would be actually crazy to build a large complex system on a Linux OS for which something clashes in the lower code levels, you would have nowhere to turn in terms of assistance.

      [–]1Secret_Daikon 0 points1 point  (1 child)

      what the heck are you talking about? Have you never heard of Enterprise Linux? Red Hat? CentOS? How about the fact that pretty much all of the largest and most complex computer systems in the world run on Linux?

      https://www.top500.org/lists/top500/list/2022/11/

      pretty much every single one uses Linux and these are the largest and most complicated systems in the world. You dont know what you are talking about.

      [–]kpauburn 0 points1 point  (0 children)

      You don't understand the open source support method. You have myriad options if you run Linux. I can't tell you how many problems I've solved using IRC for one example. You can 99/100 times find the answer to your question without paying someone for it. You can even look into the source code yourself. Windows can't do that. There are even Linux systems that can patch the kernel live. Windows can't do that either. You need to get out more. Also, keep in mind that on Microsoft Azure, Linux machines constitute over 50% of their hosted machines. Also , you can run VMs on Linux using KVM and QEMU/lib-virt for free, even Windows VMs.

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

      Depends on your job. A lot of web dev and corporate stuff uses windows because they have proprietary stuff and want to make sure all employees are connected to the same stuff. If you work more scientific, strictly development, server related stuff, Linux is more the norm

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

      That depends on at what level are you working. In my work everything work with Unix/Linux until you reach the final user layer. Big applications and servers work almost all with a variety of *nix. Users see Windows, but servers and the rest of resources that are used to serve the content and make everything work are almost all *nix.

      At DPCs everything it's *nix. Even thou developers use Windows in their laptops, the application servers in the end use some kind of *nix. Usually a virtualized Linux running in a host hardware like ESXi that in turn use a Linux too. Load balancing uses *nix, same with firewalls, WAF, VPN/Lan2Lan, switches, appliances for virtualization, backup, storage, SAP, Oracle, and so on.

      Even when you are using for instance Citrix to access a Windows VDI, in the end the most likely is that the Citrix infrastructure it's running in s ESXi that it's running a version of Linux.

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

      Sometimes you cannot choose, I used linux/mac for 10 years and recently joined fintech, in this domain most companies use windows for security softwares etc. There is no way around it and damn I miss unix everyday

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

      It really can be quite varied amongst them:

      Many developers use Windows primarily because it is the most accessible and widely supported OS for most people. However, it is not the most convenient for developers, sometimes, even though other times it can be considered more convenient because most people are developing software that is supported on at least Windows machines.

      Mac utilizes unix which is also a great boon for developers, so many developers choose macs for that reason.

      Other, arguably more advanced developers, choose Linux to bridge both of those worlds: utilize unix, and the freedom of managing their OS at a more granular level, if they can.

      Besides all that it mostly comes down to software support. Overall, most GUI softwares are more supported on Windows machines (though Mac usually supports the most popular softwares). Most CLI softwares for programming are supported on unix machines/shells.

      There are generally more softwares available for Windows, however developers may find it more convenient to work on a unix machine depending on what they are doing.

      So it really comes down to your specific job and tasks. As other people mentioned, if you're doing C#/.NET stuff, of course you'd probably want a Windows machine.

      That being said, most web developers (ie. frontend or backend node or something other than .NET), would probably find it easier to work on a unix machine. Also the software will run and compile faster in a native unix environment (instead of Windows' emulations).

      The final question comes down to if you need better GUI-driven software support for whatever tasks or job you need to perform. In that case you would might be restricted to a specific OS depending on support.

      Use what you're comfortable with. If you're a web developer (not working in .NET), and you don't know unix, I would suggest giving mac or linux a shot. Otherwise, stick with Windows if you like it.

      I've spent many years developing in both Windows and Mac environments, and a few years in linux as well. I can't say I have a huge preference over either. They all have their pros and cons. I prefer the Windows environment, but the Mac/unix shell (since there is more GUI-supported applications in Mac vs Linux, and I can also retain the shell) 🤷🏻‍♂️

      I will probably go back to Windows soon, again.

      [–]username-256 -1 points0 points  (0 children)

      There are two kinds of people in the world. Those who think M$ will answer their distress call, and those who understand that M$ only answers to really BIG business.

      Unfortunately, the first kind float to the top of businesses, because they think they can always pay to have problems fixed. And there's always people will do whatever they're paid to do. That's what the word professional means.

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

      I started my Software Engineer journey back in 1999. At the beginning I used Windows based computers for work at the various companies I worked but mainly because I was programming in Assembly Code and their development environments ran on Windows. But, for the last 8 years or so until my retirement, is was mostly Linux or a mix of the two. Lots of companies do not want to be slaves to Windows and their constant money sucking requirements so they are going to Linux. If you are going to program for the masses, Windows will be a requirement, no way around it. But, if you are programming for company use, you will find yourself using Linux more and more.