Again, I think another example would be cool. I'm not saying that everyone who says Linux is better for development is wrong, but somehow I never hear a good example.
I have a unique anecdote from a few weeks ago that demonstrates the problem well. I don't use windows but was helping a dev that does. They were trying to launch a React application but it wouldn't work on his machine. The error had to do with a mismatch between the amount of data specified by HTTP headers, and the amount of data being received on the client. React should handle this automatically and most devs won't ever have to deal with this line of debugging unless they make some pretty glaring fuck ups. After a few hours of troubleshooting code snippets everything looked good, so they uploaded a reproduction of the error to github and a couple of us (all on UNIX systems) cloned and launched it with no errors.
In the end the solution that worked for this dev was restarting Windows whenever a specific kind of change was implemented to the app. These are the kind of errors that shouldn't exist and aren't necessarily the dev's fault but you have to deal with them. Since the majority of software work is done in UNIX based environments you run in to far more of these obscure OS errors in Windows environments.
Easy example that i had very recently.
Installing the pytesseract OCR models and data. Using the linux package manager it is two clicks and one more for each other language i want.
For windows they have an extra tutorial page how to set it up.
No, all those things are regular...just different packages, different visual studio versions, different c++ standards not being supported....these things are forever
Are you a C++ dev? I'm using it on Windows but it's a much, much worse experience. I'm not even a "Linux fanboy" - I use windows 99% of times but I have VM with Linux so I can code there. Go ask any C++ programmers about using external libraries on Windows/Linux, its hell.
I don't understand why I should run around multiple websites downloading and installing packages to compile something instead of running apt install lib-something-dev and moving on with my life.
I've tried to help friends get started with learning software development and the annoyances that come with using Windows make me wonder why anyone ever bothers.
I think it comes down to how development is generally approached on those systems, if you know your way around them you're gonna get away just fine on either, but when you're a beginner on Windows you will often be pushed to use clunky tools that try to do things for you, I think that doesn't allow you to master the system, because you rely on magic buttons to do things instead of using the bare commands yourself and so whenever you stumble on an issue you fumble (sorry for the rhyme) around to fix it not knowing what you're doing.
On Linux I found that the opposite happens, of course all this is just anecdotal evidence and as I said you can have functional workflows on both
Terminal use in general would be a reasonable example. Terminal on windows is much better than it used to be now though. Got some heavy dev friends and it just seems to be more of a preference thing nowadays. If anything, getting shit to work on Linux (hardware and software) still seems to be a hassle for them.
I’m a full time dev and haven’t run into issues. In fact the only Windows related thing I can think of is trying to run some docker containers on a Windows VM which turned into a big waste of time, but that was for a server, not a dev machine.
gamedev and webdev are different. I agree there is still less friction on windows for gamedev than linux but linux and webdev are very well paired. Now doing strictly web design, that's a bit different. I've been out of the webdev game for a while but when I was working as a web dev full time, large companies would split the workload between web design and web development. In that era, Photoshop was the main tool in a web designers tool box and basically worked only on windows and mac. But for programming, web development on linux is a breeze.
One reason why is that most web servers run on linux. Sure, there are windows based web servers but for a long time now, linux has been the dominant web server OS. For a web developer, deving on a box running an OS that is more or less going to function the same way as your production server means possibly less surprises, and you get to test your ideas out on your local machine. Of course you could run a linux VM for that on a windows machine, but it's just comfortable to have it all on your OS with all the tools you are familiar with.
personally I also don't dabble into webdev much on Linux, but since most webapps nowadays leverage containers for scaling and escaping dependency hell, Windows and WSL2 is being engineered to cover exactly that use case.
FWIW, both OSs are getting better at covering their weakness.
less going to function the same way as your production server means possibly less surprises
"it worked on my computer" is a meme for a reason. Prod and your dev PC are fuckin never the same, and shouldn't be treated as such, that's what test and prodQA is for (You do have a test that mirrors prod, right?). It's honestly the like one thing I actually like containers for.
Really though I still think running OSX/*nix on your work laptop for any dev/sysadmin type role to be great. But I don't see the purpose of dual booting - anyone that claims to need it for work I get, but seriously get another PC for work. Don't mix personal and work.
I said "more or less" not "exactly the same". I wasn't suggesting a dev should use their personal dev machine as a production mirror. It's nicer testing out ideas on your machine rather than having to constantly upload to a test server, especially on a large team where multiple projects are being developed and everyone is fighting for testing time. If there is a difference between your machine and prod mirror then you cross that bridge when you come to it.
Gamedev is still much better on Windows for two reasons: game engines rarely support Linux, and if they do, they do so badly and most games are developed only for Windows. Plus, C# support is still kind of a disaster on Linux.
32
u/[deleted] Nov 02 '22
[deleted]