Is Linux required to do learning? Advice for a noob.
Posted by DontFlameItsMe@reddit | learnprogramming | View on Reddit | 185 comments
I started learning programming.
An acquaintance of mine who is a software engineer told me to learn python. So I learned the syntax, made a few simple projects which don't contain more than a 100 lines of code - simple games or playlist downloaders using pre-written modules.
Then I realized that "learn python" is a really vague statement. And that it's not possible to learn if you don't even know what it is that you're supposed to be learning.
So I went searching for some guiderails and found the most basic ones - frontend free courses. Did some HTML and CSS stuff. I found the Thor Project and App Academy to be the most efficient ones, unlike, say, the freeCodeCamp.
Well, both of them require you to install Linux or do some inexplicable stuff with virtual machines. And I haven't even reinstalled my Windows in who knows how many years, it's such a bothersome task.
I've seen people say that Linux will be good to learn and install anyway, but I do not seek to be some outstanding dev. I'm just looking for a skill that will pay the bills, and my bills are small.
So I wonder if it is some hard requirement for any programming job to be familiar with the ways of Linux?
pediocore@reddit
Hi, i did The Odin Project. Well you can follow along the syllabus with Windows machine. But you might find hiccup along the way as the course is tailored for linux/mac os environment.
WSL is easy enough to install and, its only terminal and no gui, good for you to learn how to navigate, installing packages and some linux command while doing the course.
Just try it first.
ListerfiendLurks@reddit
The second programming class I took in junior college had us learning c++ in VIM while learning how to use Linux in parallel. It was very helpful.
UpsytoO@reddit
Short answer no, long answer, you are barely scrapping the surface of programming knowledge, what the hell are you doing getting into VMs already, step back and work on fundamentals properly, you will need that knowledge if you are running something of a Linux machine, most of the software is hosted on one, is it hard req for everyone? No. Is there roles that will have it as a req? Yes.
avocadorancher@reddit
Using VMs and containerization isn’t a conflicting or advanced topic for new developers. We set up dev VMs as part of the first lecture of my intro course 10+ years ago.
Doing advanced things like virtual networks or automation is different. Spinning up a dev machine is easy and useful to keep the host clean.
Mistuhlil@reddit
Came here to say this. I hate these types of comments suggesting that using a VM is an advanced topic. It’s practically necessary these days if you’re in any domain of IT.
UpsytoO@reddit
Why would you ever need VM to write code?
avocadorancher@reddit
It isn’t a need but it is helpful to know dependencies are captured properly and to not have to modify your base system constantly while experimenting. Again, a VM isn’t a big or complex thing. At all.
UpsytoO@reddit
I don't see the use from that while you typing out terminal projects while learning fundamentals, again useless distraction. There is plenty of not complex things which are useless distractions when used at the wrong time. Plus don't mix up your course which was probably well structure and long with someone self learning, I'm sure who ever structured that course, did it for a reason and knew how much of it to provide, self learner can be lost in meaningless VM knowledge at his early learning stage fairly easily.
avocadorancher@reddit
What about it is a distraction? It’s transparent to the user.
GlowiesStoleMyRide@reddit
It’s a distraction in the sense that it has little to do with programming. When you start to investigate different architectures, and other aspects of software design it will be relevant. But when you’re still at the stage where you’re finding out about the different kinds of loops, and why and how to use functions, you really don’t have to worry about where exactly the code is actually executing.
UpsytoO@reddit
Well obviously we have perfect example here don't you agree, a guy is wondering and asking around something that is defiantly not needed at his stage of learning and you know why he is asking questions, because he knows nothing about any of it, he doesn't have any level of knowledge of which you can adjust the scope of learning that you can get once you are at fairly advanced levels of learning, so it's just blindly searching information on something he doesn't need and doesn't understand the scope of knowledge that he needs on it and you can go fairly deep in terms of scope regarding Linux and VMs.
avocadorancher@reddit
We also have a perfect example for the other side: using a preconfigured VM means not having to figure anything extra out. Lots of courses including MOOCs provide a VM image for that reason. Downloading VirtualBox once means all that’s needed to get a fully compatible environment is downloading their ISO to install. Students don’t need to worry about getting their own machines set up properly with compilers, runtime environments, languages, extra packages, tooling etc. and can focus completely on the course material.
tutoredstatue95@reddit
An isolated coding environment is pretty standard. Coding fundamentals are important, yes, but to be an effective dev/engineer you need all the infrastructure stuff as well. Learning how to setup a clean environment for each project is about as essential as knowing how to compile. It's not like it's particularly hard to do these days.
DontFlameItsMe@reddit (OP)
That's been my exact impression. The thing is, in those courses they ask you to prepare environment in Linux/VM, which seems to me like telling a bicycle guy to get his hands on a racecar engine. But what do I know.
LyriWinters@reddit
Envs are the same in linux or windows, just download anaconda already.
bsdlv@reddit
if you do harvard's CS50x, they provide a dev environment completely set up that you log into. it uses VSCode and a Linux terminal. kind of the best of both worlds, you'll get experience using Linux (everything you need is explained in the course) and you won't even have to set anything up
Scared-Pay-9055@reddit
Cs50p because he wants to learn python
yoinkmeister420@reddit
Even then i still feel like cs50x is better, cs50x truly teaches you how to learn programming, not just how to program
bsdlv@reddit
good shout, this would be even better
UpsytoO@reddit
In my opinion free courses or cheap udemy course without getting at least bootcamp to hone in on the fundamentals of one language is a waste of time for 90%+ people, you need well structured at least 300-400 hours of learning for that and such resources just don't exist free or cheap.
DontFlameItsMe@reddit (OP)
The appacademy course IS their paid course, to which they give access for free, because I believe they don't think most people will be able to finish it without mentorship. Also good PR, I think.
In any way, I looked into the paid online programs and it seems their curriculum doesn't really offer much information that is not available for free and their mentorship in a lot of cases seem very much limited. Feels like I'd be paying just for the mild convenience. And I would hope one can do without convenience in the learning process.
UpsytoO@reddit
There is no such things as fully structured zero to lets say advanced 300-400 hours course that exist, simple does not, if you think having 0 knowledge you can build yourself a path that is anywhere close to it from bits and pieces, you are delusional. It's fine if you want to go cheap route, just don't think such delusional things that you can in anyway or form recreate bootcamps (not even going to mention college) efficiency, you will get some, but there will be lots of waste and plenty of chances of failing
On top of efficiency self learners tend to lack the depth of the knowledge, as it's impossible to know how deep into subject you need to go without having any knowledge in the first place, that is why it's way more effective.
And as i said it's fine going that route, but keep in mind it's a very inefficiency route, full of issues which 90%+ people fails to even getting into fundamentals, let alone going further.
random_troublemaker@reddit
I think you're falling into VMs because front-ends often go on web servers which are run on Linux.
I do mild Python programming at my work that is outside my job description, and the only thing I did to get started was download WinPy (a packaged version of Python that is made to be portable instead of being installed) and played with the different buttons until I decided which IDE was the most fun to learn in.
My work is an all-Windows environment, and I have had no problems coding in it. (Apart from that time I made a script that took direct control of mouse and keyboard without putting in a way to halt the script when it went haywire, but you live and learn!)
briston574@reddit
Which ide did you decide?
random_troublemaker@reddit
I decided I liked Spyder the best since it was feature rich. A lot of other people like Visual Studio.
KarimMaged@reddit
It is not that hard, I installed linux when I started The Odin Project (its called Odin not Thor ..lol) and followed the curriculum.
Tou can dual boot it with linux, follow the instructions and you should be good and you might as well fall in love with linux.
Synes_Godt_Om@reddit
Linux isn't a must. I have colleagues who've never touched Linux, but they're getting fewer and they have to ask for help with very basic Linux related stuff more and more often.
For new hires, we may not ask directly unless it's specifically needed for that position but it's certainly always a plus if people feel at home with Linux.
Everything we do is tightly coupled with Linux in one way or another so you're expected to become familiar with it.
CodeRadDesign@reddit
there's one very simple and very specific reason that the Odin project asks you to run linux, which i haven't seen mentioned here. you say you haven't upgraded windows in a very long time? yeah that's the reason. linux is free so always up to date. the windows on my computer is win7 because that's what it came with and i'm not going to waste money on win10. the version of chrome on win 7 is not current and is not being updated. the version of chrome i'm typing in on linux right now is 100% current, and always will be.
_nepunepu@reddit
I mean, they pretty much hold your hand for the VM configuration/Linux installation. It's just to get you used to another OS.
Scared-Pay-9055@reddit
I recommend you take cs50p on YouTube. Their web based coding environment cs50.dev is a Linux environment where you can learn the basics of working in the Linux terminal without having to set anything up yourself.
LyriWinters@reddit
Are you telling me the learning arc does not go:
Hello World, Variables, Docker and kubernetes and then continue with functions?
Tomagatchi@reddit
Thor basically takes you there pretty early, I think that's why. A few other intro books nudge you that way.
Mistuhlil@reddit
It’s important to learn the basics of Linux because you’ll likely use it in programming quite a bit. I do, at least.
If you deploy a web app to a hosting service, you likely be using Linux commands if you use the Shell to run commands or manipulate anything.
evdokimovm@reddit
Try WSL2 first, it's a built-in feature in modern Windows 10 and 11. It'll cover all your initial needs, and you'll understand if Linux on metal or VM (WSL2 works in VM AFAIK) is going to be enough.
DontFlameItsMe@reddit (OP)
"But doctor, I am Pagliacci".
I have an old laptop with windows 8.0, I suspect he will not digest windows 10 very well. Worse yet, the needed Node.js is running on windows 8.1 and above. I am trying to figure out if I can install earlier version of Node.JS on my VSCode and whether it would be compatible with the course.
I wish programming would be just writing code, it would be so much easier.
I probably would have to buy new PC for it as well =/.
SquirrelicideScience@reddit
Ironically, putting full Linux on that thing might actually make your laptop feel a whole lot snappier.
I'm not trying to come across as a snark; I literally did that one day with my 7 year old laptop chugging along on Windows 10 like it had a brick tied to both ankles and late stage COPD. If you go with a "Windows-like" Linux distro (aka a "flavor" of Linux) like Linux Mint, the UI is very very similar, with the benefits of Linux under the hood. It seriously only took like an afternoon, following the official guide on the website.
If you dual boot (have Windows and Linux on it side by side), you'll even be able to directly access all of your files on the Windows "side". That might sound scary, but again, if you go with Linux Mint, they hold your hand through the whole thing. You click install and a window pops up asking if you want to install it next to your Windows install, and the rest is handled for you by the installer.
The only thing you'll need is a USB flash drive.
DontFlameItsMe@reddit (OP)
Yeah, I thought of it. I am now clearing my laptop to re-install Windows 8 and put some Linux on dual boot.
It seems that Ubuntu is the go-to standard?
But the latest Ubuntu 24.04 is also very much hardware hungry. I'm gonna try installing Ubuntu 16.04 and see whether VSCode and Node.JS will agree to work and update on it.
SquirrelicideScience@reddit
Ubuntu is widely used, for sure. Now, I'm certainly not an expert, but just reading the odd article here and there, many people are not happy with "modern" Ubuntu. This is where Linux Mint comes in. It is forked from an earlier, more lightweight iteration of Ubuntu, and they package it with a lighter desktop environment (Cinnamon). By all accounts, I'm seeing exactly what you did: Ubuntu today is very chuggy.
Most newcomers are told to go with Linux Mint because it is so lightweight and very economic, hardware-wise, as well as being very very similar to Windows such that the transition isn't so jarring.
DontFlameItsMe@reddit (OP)
Well, I'll sure consider the Mint version, thanks.
SquirrelicideScience@reddit
No problem.
The best thing in my opinion about installing any Linux distro is that, once you get your bearings, everything is customizable. Sure, some things are more tricky than others, but overall, it's baked into the DNA of Linux to be modular. This is why you see so many distros: someone didn't like how something worked on one distro, and decided to tweak it to their liking. We talked about Linux Mint and Ubuntu already, but even Ubuntu had the same history: initially there was Debian, but the devs of Ubuntu wanted to make a version of Debian that was free for anyone to use anywhere, so they forked it and tweaked some things and then ported a bunch of apps that shipped with Debian to work with their new OS, and then released it to the masses at no cost.
Don't like your file manager? Change it. Don't like your window manager? Change it. Don't like your taskbar? Change it. Some piece of hardware not playing nice with your default drivers? Change it.
Modularity is the bread and butter of Linux. It was designed specifically to make it easy to switch things in and out, and as a consequence, many people smarter than us have over time created a bunch of tools that work directly with the kernel and your hardware, and are super simple to use. This is why Linux is so often recommended for developers: many of the pains you'd go through in learning to program are problems that have already been solved by decades of work from talented people.
If you want to compile and run some C++ code, this is what it looks like (using GCC/G++, which most distros have right out of the box, and APT, which is the package manager on Debian/Ubuntu/LM):
And that's it. 3 simple lines to install the toolchain and build and run your code.
kiochikaeke@reddit
Yep, programming is as much about writing code as it is about learning protocols, commands and infrastructure, how things work, how to solve it when things don't work and a constant learning of new stuff, don't worry, the hardest steps are the first ones.
9sim9@reddit
No not really but if you are working on a project that has been built on Linux you can sometimes find issues running it on a Windows PC or a Mac. Up until recently Linux has had very bad multiple monitor support and as I code with 6 monitors I have been using windows when most of my team would be using Linux.
There are tools like Cygwin, WSL and Hyper-V that can help with this but each have their limitations and drawbacks.
mlnm_falcon@reddit
Nah. I use VS Code and have developed on linux, mac, and windows. There are some minor differences but they’re not very important until you start doing advanced stuff. Keep your barrier to entry low and introduce new stuff (like new OSes) gradually as you find a need.
EtanSivad@reddit
So, this is, I think, the heart of your question. HTML and CSS are foundations for generating webpages, which require a web server. That's the real issue here, in order to do any coding of HTML (and the javascript behind the pages) you need a server application to host things. There are lots of solutions out there.
Part of the issue is you know have unlimited options of things to learn, and it's easy to get sidetracked. If you want to be able to write code for webpages, then I'd say get started with setting up a local server of some kind.
If your goal is to make utilities and just program, pick a language that runs locally, Python is good.
If you want to make games, pick something that's close to Unity or Unreal C#/c++
Really, I'd suggest looking at the companies in the area you'd like to work for, and look at their requirements.
Systems integration engineers pay very well and the coding is largely powershell.
DontFlameItsMe@reddit (OP)
You're right, there's too much fields and information, and it's really hard to tell for the outsider if it's something legit and whether there's a demand and jobs for it.
I have to admit, if I do programming, I'd rather do some game engines related stuff, make sure the product is optimized and runs smoothly, if anything. But it sounds like chasing butterflies instead of doing real job, it seems as if FrontEnd or Python would have more demand on the market. I wouldn't know though.
And the only good courses are probably from western world, and my country doesn't even support paypal. Not sure I'd be able to send money to buy them, so it would be a pretty blind learning experience, even more so than now with already mentioned IT directions.
SquirrelicideScience@reddit
For game programming, I really enjoy The Cherno. He is a former EA developer (worked on Frostbite). He has a general C++ tutorial, as well as one-off tutorials on setting up his workspace (and yes, he uses Visual Studio on Windows). Not really a tutorial, but also a fun series he has is Code Reviews, where he takes user-submitted code and roleplays a technical lead/interviewer, and goes through their code and explains his perspective. Pretty informative (but also requires some base understanding of the language to probably be of any use).
JumpyJuu@reddit
There is definitely something to learn from linux/unix. I'll try to pique your interest. Fir example the initial release of Unix (in the 1960’s) had some important design attributes that live on today with linux shell utilities (see section 2.8 Design tropes of unix shell utilities).
SquirrelicideScience@reddit
Hell, Apple realized its utility decades ago, and Mac OS X was based on a Unix system (NeXTSTEP), which is still at the core of their OS to this day.
madwardrobe@reddit
it helps a lot
FlyEaglesFly1996@reddit
I have a degree in computer science and recently became a senior software engineer.
I have never touched Linux.
No-Yogurtcloset-755@reddit
In not saying you are lying but this stretches credulity a bit. I only really use Linux on my laptop but I simply would have failed my degree if I never touched Linux.
FlyEaglesFly1996@reddit
Computer science is independent of any OS. It’s theory, so it doesn’t matter what OS we used. I did have some friends who loved Linux.
No-Yogurtcloset-755@reddit
I am aware.
The classes are typically not all theory though and you don't always get the option to select what programs you get to use or the environment you get to use or but that wasn't all that you said you said you just became a senior developer and you haven't touched Linux before, I find that extremely hard to believe.
Perhaps you didn't need it in school, considering how much we required it I find that odd but sure whatever maybe that is the case but it's really really difficult to see how you could have worked in the software industry or an adjacent field and NEVER ONCE touched Linux. ( I'm talking about something such as Ubuntu or Minit or RedHat as I could be pedantic and say you've clearly used an android phone before in some capacity).
Maybe you did, as I say I am not accusing you of lying it is just difficult to believe.
FlyEaglesFly1996@reddit
I’ve always used iPhones and my PCs have always run Windows.
72% of PCs use windows and there are plenty of .NET software engineer jobs out there, so I don’t see why this would be surprising but okay.
No-Yogurtcloset-755@reddit
I am a .net engineer, I still have to use Linux.
FlyEaglesFly1996@reddit
You have to or you and your team have chosen to?
No-Yogurtcloset-755@reddit
We have to, most of our products have support for it.
Alternative_Mine28@reddit
i have dual-boot both windows and linux, i use linux because it has nothing but vscode and some other stuff. so i won't get distracted by anything while learning. besides, going through the CLI is so convenient for me, it was annoying at first, but that's because I wasn't familiar with it. now i do everything through the CLI.
i would say it's worth to learn. most servers run on linux, so you need to be familiar with it.
kiochikaeke@reddit
No, you have a lot of things to learn and most of them don't involve your OS in any important capacity, I learned most of what I know in windows and still use it today.
Kinda, yes, I wouldn't call it a requirement and there are jobs that won't need you to know how to use it but a great portion of the world out there runs on Linux and once you start learning you'll realize most people assume you use Linux or at least know how to if you're getting into programming, kinda like how most games are made for Windows with Linux and Mac support, most software related to programming is made for Linux with Windows and Mac support.
My advice is to focus on learning how to program first and then learn tools second, learning a new OS is a new thing on itself, you don't want to be fighting both your code and your OS, on thing at a time, but I do recommend to at least checkout the most common and easy Linux distros like Ubuntu once you feel like oyu want to dabble in it.
Available_Pool7620@reddit
Learning Linux isn't really that hard if you can google your way through command line commands. & if you're a decent software dev, "google your way through stuff" is normal. If you want to work as a dev it'll be a real downside if you only know Windows. Mac is similar to Linux, lots of linux cmds work on mac. So while it's no hard requirement, I would guess 80% of the jobs will be unavailable if you can't even install tooling on linux
I would consider buying a $200 laptop 2nd hand and installing Linux to see what it's like. It's really not that hard to learn. I even like it better because you can't google "where is so and so in the GUI" but you can google " CLI command linux" easily
LyriWinters@reddit
Linux has very little to do with learning how to program.
And when you're done learning LLM terminals are going to be out anyways that are going to take away 99% of the hassle with terminal bullshittery.
Same as they just implemented LLMs in MongoDB Compass, bye having to learn all that bullshit.
Solrak97@reddit
Not required at all, you can go years without using linux, specially working on something like web development you can work on windows and let the devops handle the deployments, but development on windows suuuuuucks! That fucking brick is stupidly slow and not having a package manager makes me die a little every time
ha1zum@reddit
No,
but if you're a software developer and you can't navigate around a unix-like shell to do basic file operations, execute command line programs, edit a single line in vim and save it, you will look like a fool.
Funny2U2@reddit
Linux machines are like the tractor trailers of the computer world. Not many people use it, or know how, but the Internet wouldn't work without them.
Ritchie2137@reddit
Quite unexpected that only 92% of the fastest run on Linux
endlessnotebooks@reddit
The rest run on Plan9 obviously
Random_persondude@reddit
im really hoping that they’re running some other unix operating system or something, because god help whoever is running windows on a supercomputer..
alfadhir-heitir@reddit
like RTOS or some other POSIX implementation. Windows simply can't achieve that level of performance. Why? Because of all the bloated shit that comes along with it
james_pic@reddit
A lot of that bloated shit can be disabled if you know what you're doing. And you don't build supercomputers without knowing what you're doing.
aRandomFox-II@reddit
You do realise that clean installs are pretty much standard procedure for any Windows computers not being meant for home use? At least for companies with a competent IT team. And I would have to assume that a company that had developed one of the top 500 fastest supercomputers would be comprised of competent IT staff.
DOUBLEBARRELASSFUCK@reddit
When you're comparing "fastest super computers", the OS doesn't really matter. They are measured based on how many floating point operations they are capable of — wasted ones don't count against them in the ranking.
Alarming_Ad_9931@reddit
Maybe they are FPGA super computers lol.
alfadhir-heitir@reddit
You know all computers in existence boil down to a CPU running instructions from memory, right? If all you're doing is processing data and handling requests, an RTOS implementing will likely be what you want performance wise :)
Alarming_Ad_9931@reddit
Yes, I do realize that. Which is why i said maybe the super computers are FPGA.
alfadhir-heitir@reddit
My bad man. Thought you were being snarky
Alarming_Ad_9931@reddit
No, I just thought the idea of an FPGA system that large and complex was a funny idea. Not that it's a bad idea at all, a specialized set of problems would do very well with it. Especially with something like RTOS.
alfadhir-heitir@reddit
They're going that route in Edge AI as far as I know
Alarming_Ad_9931@reddit
That would make sense. Especially for things like traffic optimization.
alfadhir-heitir@reddit
I'll be working on that for my masters dissertation. From what I get they're embedding certain logic structures into the hardware to get that pesky firmware speedup
Alarming_Ad_9931@reddit
Nvidia already has a product like this out there. It's some type of accelerator. I think it was like 20k and attached to your TOR if i remember right.
Illustrio7077@reddit
🤣😂
Chrissy_Grays@reddit
Googled cause this comment was meme worthy... Found out that at some point, 2 of the Top 500 supercomputers in the world ran Windows lmao
b3rkolas@reddit
TempleOS?
randomprofanity@reddit
The 8% that aren't running Linux are still running a modified Linux kernel.
DOUBLEBARRELASSFUCK@reddit
That would still be Linux. They are probably running some other Unix-like in most cases.
alfadhir-heitir@reddit
the remaining 8% probably runs some custom RTOS or other Unix-based specialized variant
I guarantee none of them runs windows. Why? Because windows is a messy ball of underperforming sludge, and will always be
port443@reddit
I was curious and checked the source, but didn't see an obvious way to sort by OS.
What was kinda interesting is that Microsoft is currently sitting at #3 with a Ubuntu 22 machine: https://www.top500.org/system/180236/
I'm not sure if its an RTOS, but my money would be the non-linux are actually running Cray OS
Wonderful_Device312@reddit
The rest are probably running BSD
jwinf843@reddit
I think this is a bit misleading. I've worked in cloud infrastructure quite a bit and while we primarily use linux to interact with cloud servers, in my experience they largely aren't provisioned with linux.
You absolutely could do my work with Windows, but almost all of our tools and documentation were made for linux.
Funny2U2@reddit
Yeah but all you're really saying is you prefer Windows to a dumb terminal .. from what you described, it sounds like the Windows box is just being used as an interface to the cloud servers ..
jwinf843@reddit
I use Linux for work in case that wasn't clear. You can use windows and something like putty but it's more complicated in my opinion.
I prefer Windows for when I'm not at work but I'm just commenting that cloud infrastructure doesn't actually run on Linux (nor does it run on Windows). Typically the Linux that you interact with to deploy web stuff is a VM running on the cloud and not the infrastructure directly.
Funny2U2@reddit
AWS's nitro is built over Linux/KVM, .. and the only people still using VMware/ESXi are companies that are locked in and can't get out. Everyone is using KVM now.
seedlinux@reddit
Amen
GloriousShroom@reddit
47% of professional developers prefer Linux - Source: statistica
So the majority don't prefer Linux....
jiltanen@reddit
I would imagine Mac's have quite big share too.
GloriousShroom@reddit
🤔 . I think I always lump macs with Linux in my head when talking about software development
Isote@reddit
Yeah basically if you have a decent terminal ecosystem you're are set. These days we are lucky, the OS barely matters. Linux/MacOS/Windows (cough with WSL2). I prefer windows/MacOS for the UI niceties I'm used to. Actual dev work can be done on anything these days (Except iOS stuff.... where you have to pay apple tax)
UndevelopedMoose222@reddit
Prolly 33% Mac and 20% windows. Source: voices in my head
syneofeternity@reddit
Fyi, I believe you, but saying source statistics kinda kills your point a little.
Funny2U2@reddit
statistica
https://www.statista.com/
SeaOfScorpionz@reddit
Only 47%? Jeez, those other 53% are probably “HTML programmers”
Over_Package9639@reddit
When I was using Windows, everything was a pain to install. When I tried Linux, all I needed was a simple command in the terminal. Linux is not necessarily better for programming, its just WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY easier.
BingBonger99@reddit
as an operating system to use not really but most servers are linux.
kyoto_i_go@reddit
Buy another SSD if you want and learn how to dual boot linux. It's not a shit ton of effort and once it's done its done.
It's optional though I know full SEngs who never used Linux at all
UNaytoss@reddit
No, god no. But some of the linux crowd will make you feel like you absolutely must. It's just passive-aggressive elitism and gatekeeping.
kozynthetaquito@reddit
really depends on what you want to do. make desktop apps (or games) usable by most consumers? use Windows. want to make interview for a web app? use linux
Illustrious_Wall_449@reddit
I'm not going to lie to you, your prospects are not good. The people you're competing with are in it to win it.
DontFlameItsMe@reddit (OP)
Do you imply that programming is a field where only the top 10% succeed, and people with no ambition will be left jobless? Am not insinuating, as a noob I am genuinely curios.
Even the junior salary is considered well enough in the place I live, and I do not really have a passion for programming, only a knack for math and coding. In my current life circumstances it seemed like a viable option to pursue things I do have ambitions about while having a backup plan to not end up a cashier in a mall.
Illustrious_Wall_449@reddit
The people you're up against do this for fun. It's the Malcolm Gladwell 10,000 hours thing -- the competition is working every day on their skills and learning new things. There's really no substitute for motivation.
Linux in particular is a prerequisite for a lot of very useful skills: it's a requirement for anything that involves containerization, for example, which in 2024 is a whole lot of stuff. It is just going to keep coming up, over and over again.
On Windows, you can mostly learn what you need using WSL -- you don't have to actually install native desktop Linux to learn Linux, since the command line is what is actually useful.
The good news is that formal computer science is a lot of math and coding. If you're serious, you're going to want to learn data stuctures and algorithms at a high level and get adept at solving leetcode-style problems.
Yes, this is a common idea right now, which has saturated the employment market hugely and turned it into a variant of the Hunger Games. It might be more accessible where you're at, though.
GloriousShroom@reddit
I worked for major corps where I never had to use Linux. Powershell gang
Funny2U2@reddit
This had to be financial services, or a huge law office.
GloriousShroom@reddit
Construction and agricultural software and hardware.
Responsible_Golf_235@reddit
Linux is way easier to work with then windows. I can’t stand developing in windows. I immediately install wsl
Mr_Tiltz@reddit
I'm more surprised the mods didn't ban this post and redirect you to the FAQ's.
RicketyRekt69@reddit
“I do not seek to be some outstanding dev” 🤦♂️ no one is saying you need to be omniscient with programming knowledge, but you DO need to be driven and motivated to learn. Coming right out and saying “yea I only want to do the minimum so I can pay bills” paints a really bad picture. No one wants to work with people like that.
DontFlameItsMe@reddit (OP)
Do you need to be driven and motivated to do your job well? I have not seen driven and motivated people past their 20's, when they get their guts kicked out by life.
But may be it's just me, and there are people in the world who love their job and life.
RicketyRekt69@reddit
For software development? Yes, you do. I’m not saying you need to be putting in 60+ hours a week, making projects on weekends, etc. but you do need to have at least some level of interest. It just seems like you have no interest at all and only see dollar signs.
It’s going to be very tough finding a first job w/ no degree or coding boot camp. Even harder with no projects to show off your skills. If you have no interest then you probably won’t even have the patience to finish any personal projects of significant scope.
Before you invest more time, just consider what you’re actually interested in. Doesn’t need to be complicated, could just be basic frontend dev stuff. But getting into software development is not a way to get rich quick. It takes a lot of time and effort.
DontFlameItsMe@reddit (OP)
I care too little about money, to my own detriment, and I'm trying to change it, but in my area there are no good jobs, so online seems a logical choice.
I am much more proficient and experienced in the art skills, but my own health and AI takeover cast a deep shadow on that prospect.
I actually have an IT degree which my family forced on me earlier, but university didn't teach that much.
I am not looking to get rich quick or without effort, but one gotta start somewhere. Surely personal portfolio projects would be a testament to my patience and effort, can't imagine real learning without them. Besides, may be putting food on your table can be a sufficient surrogate for an interest.
GloriousShroom@reddit
That's like the vast majority of workers in fortune 500 companies. Not everyone wants to dedicate their life to mastering programming. Some want work life balance.
RicketyRekt69@reddit
I work in a fortune 500 company, that's not at all true. In fact, I'd say it's even *less* the case since it's much more competitive for these roles. Having a good work life balance and being motivated to learn and master your craft are not mutually exclusive.
foxer_arnt_trees@reddit
No it's definitely not necessary. Knowing linux is great because it is a free operating system that is also very obedient to its user (unlike Windows wich thinks it knows better then you). So if you ever go to production it's a good idea to have your code run on Linux.
But that's not important. You can have a successful career without ever touching it.
pigeon768@reddit
Wait. Back up. Just start making stuff in python. Imagine you want a simple program that does a simple thing. Make that program. Do it in python; do it in c++; do it in c#; do it in whatever it doesn't matter. The best way to learn is by doing stuff without actually knowing that you're learning. Just start making programs that does stuff that you want to do. Admittedly, you'll have to start with simple programs. But then move on to more complicated programs.
Literally the best way to get better at programming is to try to do stuff that you don't know how to do but fuckin' do it anyway. Read the docs and figure it out. It really is the best way.
No. It is not a hard requirement.
That being said, it will make a lot of things easier. In general, if you want to set up a new programming environment, it is super duper easy in Linux and kind of a giant dick pain in Windows. On my distro, I already have python and GCC (which does C and C++) and cmake and autoconf (two major build systems) already installed on a default installation. I have to do literally nothing in order to make new python or C or C++ programs. You have to like...do things to get this on Windows.
DontFlameItsMe@reddit (OP)
Well, I did stuff in python as I've mentioned in the post, but it was simple stuff. And I couldn't move onto harder stuff because there's so much of it, and I couldn't understand what a half of it even does or means. Unless you're in love with programming, you'd need some guiderails. At least I do, I think.
OckerMan91@reddit
Linux is good to learn but you can learn the fundamentals of programming (and much more) in any OS.
Mehrainz@reddit
u/DontFlameItsMe Give EndeavourOS a try its an amazing prebuilt distro that runs steam out of the box :)
I have been using it for months and never looked back.
AdowTatep@reddit
Not at all, i used windows and git bash for years before venturing into linux, only because windows was getting too slow.
You can still develop on windows and host on linux with no problem.
The biggest difference are the terminal commands for copying, moving and creating ssh keys. In this case hence why I use and prefer git bash because it has a lot of the same commands, even on windows.
zenos1337@reddit
Yeah… but windows doesn’t have sudo…. Why should I have to right click an application to run as administrator :P
Pacyfist01@reddit
You sir are mistaken
https://learn.microsoft.com/en-us/windows/sudo/
NostalgiaNinja@reddit
*To be fair* Sudo was only given to Windows recently.
Pacyfist01@reddit
To be fair I would still state that it wasn't added to actual windows yet.
valiumonaplane@reddit
Once I went Linux I never went back, not just for coding, for everything
how to learn python? Read a book, python crash course was my first, automated the boring stuff was my 2nd.
But I always expanded the projects from the books. if a project was to say... rename all the files in a folder that is png, jpg, jpeg etc, I always built further on the projects. sorting them into a new folder, sorting each filetype into their own folders, before I knew it I was deep into sockets and made a timed transfer over LAN to a server and so on.
Read, build, then build what you WANT to build
loblawslawcah@reddit
It makes life much easier in the long run. Vm's are annoying to deal with imo. Just get a external SSD and run it off that then dual boot.
ubercorey@reddit
Let's just say learning a Unix based command line is required. So basically yes.
bevelledo@reddit
Check out codewars start with 8kyu’s and move to lower ones in whatever language you want to try. If you get stuck, try hard but dont let it stop you. Look up the answer and try to understand what the answer is doing and how (if all else fails YouTube the “kata” (kata is the term codewars uses for problems). Then try to redo the problem with that new knowledge.
Review some of the questions you’ve solved later in the week and try to solve them again. They will start to stick, they’ll start to become easier to understand what’s being asked.
This isn’t going to make you 100% understand everything but it’s a good start to learning to “think like a programmer”
It’s a skill set and your brain is a muscle. Practice, repeat and put in the reps, it’ll come.
WazzleGuy@reddit
You don't need to dual boot to do Thor (Odin) you can use wsl2. The course provides you with instructions on how to use the terminal for each opportunity and it will be beneficial for you to learn the basics so you can use the wsl2 terminal rather than the vscode terminal to interact with GitHub and modules.
I also thought it was a bit crazy that you need to learn virtual boxes but my IT guy is a Linux guru and pointed me in the right direction so don't feel too bad.
WazzleGuy@reddit
PS that's for windows. If you are on Mac the IT guy also mentioned some garbled nonsense about Mac already having Linux blah blah blah I wasn't listening. Who listens to IT right?
bluro00@reddit
I recently decided to switch careers and that I want to be a programmer now. One of the first things I did was install linux and ditch Windows because for some reason I thought that you have to code on linux. It really brings back fun to computing but can be pretty frustrating when you don't know how to do some simple stuff. Then after some learning time, I got my first job and I'm the only one using linux there. So it's not really a requirement but it's hella fun, just not at the very beginning and especially if you don't have time to fix stuff that you broke.
Jim-Jones@reddit
I'm a Unix guy myself.
Business-Decision719@reddit
Linux is just an OS, a program that lets you run other programs on your hardware. Technically it's not even a whole OS, but a kernel (a core part of an OS). Like on a Microsoft system, Windows would be the OS, and NT would be the kernel. On a machine that's mainly running open source software, the kernel could be Linux, and the OS might be Debian, or Ubuntu, or Mint, or Puppy, or one of the many other "Linux distros." But people would probably just say it was running "Linux."
The point is know, you don't need Linux specifically to learn programming. You just need an OS, in general, to do almost anything. For programming you need an implementation of some programming language (Python, C, Java, Go, Haskell, etc.) The implementation is a program that understands a specific programming language on the computer's behalf. It's going be called a "compiler" or an "interpreter." If you're interested in learning Python then just Google "Python interpreter" and you'll eventually find what to download. You will need to know what OS you're running (Windows? Mac? Maybe a Linux distro?) because you will have to download a version of the interpreter for that OS.
JustinTheCheetah@reddit
There is absolutely no downside what so ever to learning Linux for any IT related field.
You will only be a better, more employable person if you learn how to use the OS. Not even programming. You could say Help Desk or Cyber security. Yes it's always a good idea to learn how to use Linux.
sbreadm@reddit
Not required, but it is concentrated as an experience in of itself. If unfamiliar, it's essentially:
Operating System, prepare to die edition.
Alternative-Mix-1443@reddit
No. I never touched linux and I work as a full stack dev, Laravel and Vue3. The servers I deploy on are in Azure with Microsoft Server. I can't stand linux. I believe linux is for poor people who can't afford a Windows license.
Funny2U2@reddit
Lol .. uhh. no.
jeffrey_f@reddit
Learn it. You will have another item to add to our resume
Individual-Cap3439@reddit
I'm learning python myself on Cs50P ( week 3) and downloaded the oracle vm with the ISO thinking I had to download it to learn the environment. Mind you I know nothing about programming so chat gpt help me set it up. It was still a bitch because I had to toggle with my visualization settings and it still took me 2 days but I figured it out. Short story I found out you don't have to but it'd be nice from what I hear .
Slimxshadyx@reddit
Honestly I would say to stick to your OS while you learn how to code. Actual programming skills transfer between operating systems and that is what you are focusing on.
If you have an interest in it than you can but you can also pick it up after you start getting better at programming
lKrauzer@reddit
You don't need to install a distro, or even dual boot, if you don't want to commit to Linux so badly than just use WSL, I actually personally really recommend doing this since you can sandbox development environments, with different libs and such, using containers, which is a great way of starting to learn this since this is a Linux only thing, containers are amazing
sjsalekin@reddit
It's not required at your current level, but in the long run learning Linux will absolutely be beneficial.
Anyway, right now if you don't want to bother going through reinstalling os, why not give WSL (windows subsystem for Linux) a try. You'll get a dedicated Ubuntu instance running straight from your windows.
Mysterious_Bother271@reddit
To get started, don't over complicate it.
Windows and Linux are more or less the same for what you need to know. "install node.js".. it's a command on Linux, or you go to the website and install it on windows. For you it will be somewhat rare or awhile before you can't find a windows binary for a piece of software you need.
Virtual machines and Linux are things you can learn, but you can skip that step entirely if you have a local development environment that you know how to use.
With that, there are entire guides for setting up development environments for different languages. While you're learning don't be afraid to pause something to go down a rabbit hole researching if you start getting confused or the instructions are unclear.
The commands between Linux and Windows will more or less be the same too.
And beyond it all, there's plenty of room in the world for Windows developers too if you choose. Visual Studio has a free version and some of the best code completion ever, C# is beautiful and easy to learn and can fill most use cases.. people like to pile on in favor of Linux, but it's just a preference.
CyberKiller40@reddit
Well it's like this... The job market is saturated with people who just did a couple of courses and learned to code in some language. They can program, probaby better than me, and I'm in this industry for well over 10 years. However, programming is jut a tiny thing which makes a software engineer. There's more, loads more. GNU/Linux is one thing, another is project management, another is code versioning tools, another is network, another is...
What I mean is that learning python is a step, in a bigger process to be an engineer. Python on it's own is not really going to get you anywhere, but it's a nice first tool to put in your toolbox.
ejpusa@reddit
You can learn all you need know it weekend to get started. It's not complicated.
barni9789@reddit
Short: No, but at least use wsl.
Long No but i would recommend learning linux. Anyway its just do much better to program in linux, i cant even imagine not using it, (windows with wsl is fine too). Terminal is fantastic. You can install basically everything with a few command. You could create sone setup scripts too, upload it to somewhere, and turn any new pc, fresh install to your whole dev environment.
I only recommend windows if you 1. Use the pc a lot for gaming or media creation and dont want to dual boot
I recommend Mac if 1. You want to develop swift
barkingcat@reddit
for learning, Windows 11 + WSL2 (windows subsystem for linux) is an unbeatable combination.
It basically puts linux into windows without you having to do anything aside from check a few options
https://learn.microsoft.com/en-us/windows/wsl/install
GloriousShroom@reddit
You can just run bash on windows instead of installing full Linux.
It will be enough for a long time with your learning. That's what I use professionally. You don't need to learn a ton to get going on other stuff.
-mickomoo-@reddit
Linux will be useful for deploying applications. You could also learn Docker or some other containerization software. It’s just fun too knowing a bit you can start adding apps to your home network. I know very little Linux and Python but have gotten far in adding apps that have helped me in my daily life.
IshouldDoMyHomework@reddit
Also, docker works out of the box on Linux. No wsl fuckery required.
mithoron@reddit
It's mind boggling how bad windows missed the boat on containers... Like worse than the windows 8 everyone is going to have flippy touchscreen laptop/tablets next year bad.
AshuraBaron@reddit
Typically not. If the job is programming Linux kernel modules then obviously you need to know Linux, but in general no. Some people like Linux more than Windows or Mac, but you can get by on any OS.
mithoron@reddit
Yep, none of the devs where I work use linux, they're 100% on windows. Have been for as long as I'm aware of the history (decades) and there's not a peep about changing that any time soon either. Only people using linux on the regular is me and the DBA, with a couple more occasionally touching it briefly.
guilhermej14@reddit
Not required op, but it IS a very interesting and useful rabbit hole to get into
Error403_FORBlDDEN@reddit
You mean the Odin project? Lol
Short Answer: If you’re doing IT, then Linux is a must - by IT I mean everything from basic networking to web/server deployment etc. If you’re programming, any potato will do just fine.
I knew some programmers that didn’t even know what an IP or Subnet is.
turtleProphet@reddit
If you're on Windows and want to learn how to get around in a Linux terminal, WSL is nice and relatively painless. Should work out of the box with vscode.
Not required at this stage. If you decide you want to host your own websites or do systems programming, you can learn then if that's easier.
And remember you're never deficient for not knowing something, or choosing to focus on one thing at a time. You just haven't learned it yet, and when you need it, you will.
zenos1337@reddit
Just install Ubuntu as your main OS. It’s one of the best ways to learn Linux. I did it about 8 years ago and I’d never switch back. Way better than MacOS and especially Windows in my opinion.
stiky21@reddit
Linux is a skill. A skill worth having.
no_brains101@reddit
no but it helps. If nothing else youll end up messing with some system level thing somewhere and that will get you inspired
devgabcom@reddit
Almost all web servers are divided into two types: Linux-based and Windows-based. With Linux-based the most common (for historical reasons, due to UNIX).
So if you’re going to be doing any backend or full-stack web development then you pretty much need to know the basics of Linux commands unless you restrict yourself to the windows world.
At the terminal level, macOS is effectively identical to Linux too, which is one reason why MacBooks are so popular with web developers.
Xemptuous@reddit
It's not required, but it'll make your life way easier. Installing python, node, postgres, go, etc. is very involved and time consuming on windows, very fast on linux. You will ultimately be better off if you learn your way around unix systems in terms of file structure and commands, because you will have to use it one way or another at some point.
Kitchen_Koala_4878@reddit
I'd mac is slighty better
ToThePillory@reddit
Windows, Mac, Linux makes no real difference.
More programming is done on Windows than Linux according the Stack Overflow Developer Survey.
Bright-Historian-216@reddit
If you have Windows, you can install WSL
SawSharpCloudWindows@reddit
No. Period.
Matte221@reddit
Stick to windows and learn how to program. Don’t try to learn Linux + programming. But personally I only use Linux for work related stuff.
downwithlordofcinder@reddit
As someone learning themselves, step back and breathe. Baby steps. Check out CS50 from Harvard. They provide free online courses and projects you can work on as you go, and also help you establish a GitHub repository for them. Not the simplest to follow for a total noob, but from what it sounds like you already have the experience needed to easily follow along with it.
sk3z0@reddit
Absolutely yes. If you skip learning the basiscs of linux, later on you will fail to understand very fountamental concepts like file systems, sockets, interprocess communication, etcetera. Not understanding how a unix system operates will lead to many wrong assumptions on what’s behind the hood. Of course you can skip and be the one that just learns to code inside a specific ide, but any real job on the market needs some level of knowing your way around a terminal.
DesignatedDecoy@reddit
I feel like you'd be hard pressed to work in the industry for any amount of time and not have linux exposure. You don't need to run a linux GUI but it would be very beneficial to understand how the file system is laid out, basic commands, users/groups/permissions, package managers, etc. Something like https://linuxjourney.com/ will help.
The easiest way to run linux would be by installing WSL2. It takes a single button click to activate WSL and then one more click to install the distro of your choice. Now you can run linux alongside your windows machine but still have access to your windows tooling. It gives you a good environment to practice in without having to make significant system changes.
Personally I prefer a full linux environment for my dev work but running WSL2 is my second choice. Try running all of your dev related things in your WSL2 instance and who knows, maybe you'll find out why many people prefer it to other environments.
HumorHoot@reddit
Linux can be helpful to learn, because the terminal and how some programs run, like.. setting up git on linux is super easy. Doing it on windows is much more complicated by comparison, and thats just one example.
The Odin project i assume you mean, when you say Thor Project... suggests running linux inside of a VM.
It's actually super easy to setup and you can then do all your linux-things within that VM without "hurting" your windows installation. You just run the VM software and launch that specific Linux machine within it - and when/if you learn GIT, you can easily throw your code up into a place like github, and grab it on another computer, or from within windows.
at my job we code in Windows. But using powershell we do loginto a linux server sometimes, and then i need to know some of those terminal commands - copying files etc
Careful_Aspect4628@reddit
Get virtual box and install Linux vms to learn. Linux isn't a hard system to learn and since you're learning to code it'll be easier as Linux is command line more than gui whilst windows is mostly gui based. Start with Ubuntu as tons of support for it and it's very stable and free which is why many use Linux over windows.
Python isn't os specific so you can run your programs in windows or Linux but windows will cost you a license.
GalacticBuccaneer@reddit
You can get things done with Windows, but learning Linux makes you understand OSes much better. One downside is that it will take quite some time. (The more passion and the more raw talent you have, the faster it will go, though talent without passion will get you nowhere).
So no, you don't need Linux but Linux makes you a better tech, if and only if you are able to muster some passion around it.
AlSweigart@reddit
Yes, just as a general developer skill, you should be familiar with Linux. My advice is to download VirtualBox and an Ubuntu install image .iso file, and then you can run it (albeit slowly) in a VM. This is all free.
Alternatively, on Windows you can install WSL2 which gives you a Linux terminal.
Next you'll want to learn the Linux command line, including common commands.
This is all stuff that you should eventually learn, but you don't necessarily have to learn it right now.
Aggressive_Ad_5454@reddit
Yes, it is worth your trouble to learn Linux, and to get familiar with wrangling virtual machines.
jaypeejay@reddit
No, linux isn't required, however most jobs and most devs prefer linux like operating systems. I think python works well in Windows though.
ProfessionalShop9137@reddit
Linux is tough. I’m a senior CS student who’s been programming for years and I have had an interest in operating systems since I was a kid. Linux is a huge pain in the ass and I’m usually pulling my hair out whenever I use it, despite having a decent background to prep me for it. Use it if you want to, but forcing yourself to use Linux at the beginning is like deadlifting a truck on your first day at the gym.
MrMagoo22@reddit
If you ever need to work on a codebase for a client with a server backend, you will need to work with whatever setup they have set up. Some of those clients will have their systems hosted in linux. If you want to work with those clients you will need to know how to use linux.
Waingro24@reddit
Not at all, especially if you are working with high-level languages like python.
SpiritRaccoon1993@reddit
It is not requires, but it helps to understand how different OS works