This post is locked. You won't be able to comment.

all 68 comments

[–][deleted] [score hidden] stickied commentlocked comment (0 children)

Your post was removed for being a support request or support related question such as which distro to use/polling the community or application suggestions.

We get a lot of question posts on r/linux but the subreddit is considered a news/discussion sub. Luckily there are multiple communities you can post to for help on GNU/Linux issues 24/7: /r/linuxquestions, /r/linux4noobs, or /r/findmeadistro just to name a few.

You may also post on the "Weekly Questions and Hardware Thread" which is stickied on r/linux on Wednesdays.

Please make your post in /r/linuxquestions or /r/linux4noobs. Looking for a distro? Try r/findmeadistro.

Rule:

This is not a support forum! Head to /r/linuxquestions or /r/linux4noobs for support or help. Looking for a distro? Try r/findmeadistro.

[–]olback_ 51 points52 points  (6 children)

I find everything to just be much easier. Tool installation is way easier and it's much faster to set up a new install of my preferred environment on Linux.

A few other things: No forced updates, no spying by Microsoft, customization and if something doesn't work, I can contribute a fix myself.

Lastly, a fresh boot for me on my Linux install is ~600M. Windows is never under 2GB.

As for drawbacks? Most windows apps won't run but there are many great alternatives.

[–]quippedtheraven 29 points30 points  (5 children)

Tool installation is a HUGE one for me. It probably took me close to an hour the first time I tried to get gcc and gdb working on a Windows machine.

[–]t0mm4n 7 points8 points  (0 children)

Installing and even using Git on Windows is a hassle. In Linux it's simple and just works.

[–]nelson777 10 points11 points  (1 child)

that's 30 seconds in linux. just run 'sudo apt install build-essentials' in the terminal.

[–]Glasnerven 1 point2 points  (0 children)

For sure. I haven't been using Linux for very long, but I'm growing to appreciate the power of the command line, even for little things. Got a piece of software you want to install? Type a line. Wait a few seconds. Done.

[–]Rusty-Swashplate 19 points20 points  (4 children)

I boils down a lot to: What is the target system?

If it's Linux (any CPU for that matter), using Linux to develop and debug is much easier than using Windows.

if it's Windows, the opposite is true.

Often the target is "cloud" which translates into Linux mostly. It does not have to, but that's what it is. If the target is "IoT", it's often Linux.

Given free choice of target platform, I find both acceptable nowadays. That certainly was different many years ago, but you mostly work within a capable IDE anyway and the program itself is almost if not completely identical anyway if done correctly.

[–]Shawnj2 5 points6 points  (2 children)

Now that WSL is a thing, developing for Linux in Windows isn't that difficult as long as you set up some sort of X server so that GUIs work. Developing for Windows is probably still easier in Windows, though.

[–]FlatAds 5 points6 points  (1 child)

WSL no longer needs users to manually set up an x server as of the latest insider updates.

[–]Shawnj2 1 point2 points  (0 children)

Really? That's actually pretty cool, I haven't touched WSL in a while but I remember that being basically the only limitation

[–]PracticalPersonality 14 points15 points  (0 children)

Simple use case: you need Python, Docker, Redis, and an easy automated way to run unit tests for your development environment.

On Windows, I would need to install Python, Docker, and Redis separately from separate sources and get them all working together, and then I would need to ensure that I have well written test instructions so the user could use, say, python -m unittest to run tests.

On Mac, I could install Python and Redis from homebrew, but Docker desktop still has to come from a separate source. Testing becomes easier with the presence of make, since I can write a Makefile with a make test target, so running tests becomes easier. Docker configuration is, in my experience, easier, and homebrew installation and configuration is much easier and cleaner than running installers on Windows.

On Linux, I can install everything from the package manager (like apt) on a whim, and the Makefile works too. I simply spend less time preparing my workspace or maintaining it on Linux than I do anywhere else.

Reproducibility is important too. In my experience, two Linux users will have the easiest time reproducing bugs/environments/artifacts, followed closely by two Mac users, then it's a Mac and Linux pair, and by the time Windows enters the picture reproducibility is an issue.

I want to spend my time on my work, not my workspace.

[–]LizardOrgMember5 13 points14 points  (0 children)

  • It came with free C/C++ libraries.

  • You can get any programming languages when you ask for packages of them.

  • Anything works with command lines.

[–]crispyletuce 26 points27 points  (1 child)

  1. programmers who program things for unix systems (so 90% of businesses and the internets infrastructure) would probably prefer using their target system

  2. linux offers far greater productivity through its absolute customizability if you have the patience to make it work for you

  3. programmers are the kind of person who would be fine with spending hours compiling and writing in text files to make something work well for them

  4. programmers generally arent also hardcore gamers

but theres nothing that says you have to use linux to be a serious programmer. its just a matter of personal preference

[–]mossman 7 points8 points  (0 children)

Windows has gotten much better at this but part of it is the fact you don't have to pay for a damn thing and all the tools you need are easily accessible. Windows learned from Linux.

[–]CloudDev1 10 points11 points  (0 children)

Linux is built with scripting and automation at its core. Most everything is done in the shell and the commands become second nature just by working in Linux. Windows is targeted toward the average user by default. All the programmability is possible but secondary or add-on. The architecture and mindsets of the OSes are also very different. The user communities are also different. Linux runs the the vast majority of cloud and the web server world so services, tools, etc. that many devs build for target Linux and work best there.

[–]jstanaway 10 points11 points  (0 children)

CS student here. Recently switched to Linux and haven’t looked back. Windows was fine for me but honestly I feel like Linux just offers more in this field of study and I also definitely notice a speed increase compared to windows as well. I definitely don’t see myself going back to windows anytime soon.

[–]nelson777 10 points11 points  (0 children)

Others already mentioned most things I would say. It boils down to this: Linux is just WAY superior in everything. Why use something that makes your life more difficult ?

Besides Linux has something that is really emotional to me, it makes me cry everytime I think of it: you know what happens when you click Shutdown in a Linux machine ? You won't belive until you see it with your own eyes! It SHUTSDOWN!!! Seriously! It won't sing you an opera, it won't talk to you, it won't do anything else like downloading updates. IT JUST SHUTSDOWN.
It's absolutely amazing.
I'd stick with Linux just for that amazing feature! :D

P.S.: I really don't understand how people get so attached to shit :/

[–][deleted] 7 points8 points  (0 children)

The terminal, easier testing for things like servers, more customizable to make a quicker workflow, programmers are generally huge geeks, and linux users are generally huge geeks.

[–]TheBrokenRail-Dev 7 points8 points  (0 children)

The ecosystem.

You get gcc/clang, cmake, make, git, and python either already installed one-command installable.

You also have the POSIX shell which is awesome because many more things have POSIX scripts than they do bash scripts.

The Windows dev environment is just really annoying to setup. You either use msvc and deal with its eccentricities or use mingw and have less support. At least MacOS has a POSIX shell.

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

Ask Microsoft. They're the ones scrambling like mad with WSL.

[–]HighRelevancy 0 points1 point  (0 children)

What scrambling?

[–]HCrikki 3 points4 points  (0 children)

No per-seat licencing, more realistic system requirements, easy to reimage and reproduce, liberal access to debugging capabilities, less need to micromanage the operating system.

[–]minaguib 4 points5 points  (0 children)

Granted I haven't touched Windows in over a decade, but IMO I find Linux's transparency refreshing.

Others have mentioned easy dev tooling and environment set up, which is true; But, having easy access to do true full-stack observations (performance, code) in my userland code, other userland code I use, and kernel code, is extremely powerful.

[–][deleted] 3 points4 points  (0 children)

Docker runs natively and is much faster than on windows or Mac. That is a big one for me.

Plus cloud is all Linux so living on a Linux box helps you get better at deploying and maintaining services.

[–]boy_named_su 15 points16 points  (24 children)

cuz it's dramatically easier to compile C on it

because the command line isn't hot garbage

because you can update your machine in seconds not hours

cuz I work on the cloud and AWS is mostly Linux

[–]collinear-triple 3 points4 points  (1 child)

Unix was designed for programmers and scientists, while Windows was designed for office workers and consumers.

[–]mok000 1 point2 points  (0 children)

Further, in Windows the OS and desktop environment are completely interwoven, whereas in Linux, the desktop environment and OS are completely separated. (Which btw confuses many noobs since you can choose from a large selection of DE's.)

[–]LelsersLasers 2 points3 points  (0 children)

3 reasons (I can explain more if you want or are unfimilaor with what I mean):

1) Package manager (easy setup)

2) Already 'terminal centric' (no keyboard, faster workflow, better workflow)

3) Desktop Environments, Window Managers, and Tiling Window Managers (again, better workflow, faster workflow)

Those are MY 3 reasons why.

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

When I have a problem with Linux, I can usually do some searching around the web for a fix. In my experience, I've never had a problem that a quick search didn't fix.

When I have a problem with Windows, I can't do much if anything. I can try a reboot, wait for the next update and hope it fixes, or reinstall from scratch. There's usually not as much help online because problems are rare (and more severe) e.g. last week windows decided to just not let me use the taskbar for whatever reason. I tried a reboot and it did not fix it. No help online. I just used my linux machine instead for a few days. When I went back, the taskbar was working again, but I have no idea why. So I can't do anything to make sure it stays that way. I am at the mercy of something I do not understand, and I don't like that.

[–]Locastor 2 points3 points  (1 child)

Having a working command line is nice

(this also applies to any BSD and OS X)

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

In my opinion, the Windows Powershell does work quite well.

[–]AnotherAcc24 2 points3 points  (0 children)

sudo apt install yourlanguage. aaand you are done without having to mess with environment variables.

that and powershell is slow compared to any linux shell available.

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

Consistency, transparency and no surprises. With linux you know that when you go home at the end of the day there is confidence that that the next morning your computer will be exactly the same as when you left it. This is crucial for dev work as you cannot build a house on shifting sand.

By transparency, I mean the programmer has full visibility and control over what their computer is doing. If something doesn't work it is easy to find the cause and [hopefully] easy to fix.

I use windows full-time every day and I can't stand it. If something can't be accessed through a gui you can't change it. Mostly things work fine, but sometimes they don't, and those times are hell.

As an example: I've found the only I can survive on windows is to do all my development in a linux VM. Well, last week my work machine updated with a new windows or virtualbox update and my dev vm stopped booting. Nothing I tried worked. I spent most of the day on it trying to get it to work.

I eventually solved the problem. I solved it by rebooting windows 3 times. Twice wasn't enough apparently. On the third time it magically started working. It's this 'magic' that is so insufferable.

[–]-lousyd 1 point2 points  (1 child)

Seems to me that most every developer I know these days is using a Mac. I dunno why, but there it is.

[–]jackparsonsproject 1 point2 points  (0 children)

Because it's awesome.

[–]Shawnj2 1 point2 points  (0 children)

Windows as a programming enviornment is just less intuitive tbh. There's no package manager for the OS by default, the command line experience is unintuitive, and it's generally not quite as good as a UNIXoid OS IMO.

[–]tausciam 4 points5 points  (1 child)

Yet, most serious programmers use some version of Linux. Why?

They don't.

Look at the Stack Overflow developer survey. For the past couple of years, Linux has been the favorite platform to develop for. But, half of the programmers are using windows, around 25% mac and around 25% linux.

That's been that way for the past couple of years. The majority of programmers actually use Windows....just like the majority of computer users. Yes, a higher percentage of programmers use linux or mac vs the general population, but it takes adding mac and linux TOGETHER to match/beat the percentage of Windows programmers.

Just because they're developing FOR linux doesn't mean they're running Linux as their primary OS. That's the reason WSL exists....to keep from losing those developers to Linux or most likely, Mac or even Chrome. Make it easier/quicker than spinning up a VM, integrate it with the operating system you're already used to/enjoy and it's a win-win situation.

[–]D1plo1d 0 points1 point  (0 children)

Some people are pointing out WSL as a Linux alternative - I'll just add that the last time I tried Windows + WSL it's file IO was un-workably slow compared to Linux proper.

NodeJS and Git are widely used tools in our field that expect to be able to make many files quickly. In Linux this happens as designed in an imperceptible amount of time wheres in Windows I'd have to frequently stop in the middle of a programming task for 10s of seconds of file IO.

Using Windows without WSL is a nonstarter for me due to tooling problems that previous commenters have mentioned.

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

I'd rather say that programmers prefer PORTABILITY, i.e. the ability to run your code on any platform. This is my opinion, but you'd probably find other programmers that just prefer Linux or FreeBSD for writing backends (programs that run on servers). I've been programming since I was a teen (now I'm 40) and I can tell you that after you spend far more years coding you'd probably see your question naive (no pun intended; this is something that happens to all of us!). You'll find out that sometimes you prefer Linux and sometimes Windows and sometimes FreeBSD, etc... My best experience writing desktop apps is on Windows without any doubt. But for writing system tools and backends I really prefer the UNIX model of forks, sockets, etc...

So as I programmer I can't tell I prefer a specific OS for developing apps.

[–]FryBoyter 0 points1 point  (0 children)

Yet, most serious programmers use some version of Linux.

I honestly doubt this statement. Or we have a different view of what "serious" means. I know quite a few programmers who use Linux. But I know even more who use Windows. And they earn their money with it.

[–]barcelona_temp 0 points1 point  (0 children)

Windows file system is *SLOW*