DEV Community

Cover image for Intro to Linux for New Developers
AmberJ
AmberJ

Posted on • Edited on

Intro to Linux for New Developers

Programming is a magical art. Like any artist, reliable tools are important to your ability to become the best you can at your craft. Luckily for you, this one won't cost much.

Your operating system is a tool and you should give it some thought. You have more choices here than you might realize!

Windows, OS X, and iOS are well known but there are hundreds more operating systems out there in large part thanks to Linux.

I'll explain what that is and why, as a developer, using Linux will be beneficial for you.

What is Linux

Linux is a kernel.

A kernel is program at the core of a computer's operating system and is one of the first programs loaded on start up. It controls almost everything else in the system - how files are stored, how memory is managed, and even interactions with peripherals like USBs and printers.

The Linux kernel is freely available (check it out on github), and as such many operating systems have grown from it, piling on other programs to make up a fully functional OS.

These OSs are called Linux distributions or flavors.

Due to its modulearity and accessibility, Linux is super popular among DIY-ers who like to customize their setup, and people will happily share their "Linux builds".

So when someone says "I use Linux", they probably mean that they use some distribution of Linux.

Benefits of Linux OS

There are 3 main benefits:

Top three Reasons

You don't have to empty your pockets by choosing a open source Linux distribution. Many were spawned from the same ideology that humanity improves when technology is accessible. Ubuntu for example.

Like the buffet your grandparents brought you to as a child, you are free to gleefully try all the different distros out!

Don't worry about bloat, because Linux was originally created for programming, so most flavors are light and agile. In addition, the majority of programming languages (if they aren’t limited to a particular OS) work on Linux. Have you tried working in WSL (Windows Subsystem for Linux)? Its awful slow and the set up can be very confusing.

With Linux, you're in control of customization - no unnecessary software or bloatware if you don't want it. Desktop environments are abundant.

Large and small companies all over use Linux so its highly likely you'll eventually come into contact with a distribution (if you haven't unknowingly already!). It is used in many if not most IOT (internet of things) devices and enterprise servers.

  1. Amazon uses Ubuntu servers as well as their own distribution, Amazon Linux.
  2. Linux usage surpasses Windows in Microsoft's Azure cloud.
  3. Google even has two proprietary desktop distros (so you wont find them online) called Goobuntu and gLinux. 🤔

Get familiar now to sharpen up those chops and add experience in your next resume!

Which one is for me?

There are A LOT of distributions.

Because the Linux kernel is open source and anyone and use it build their own custom operation system, its impossible to say exactly how many, but the Linux wiki mentions over 400.

There are however about a dozen that are popular in general use.

These include Arch, Mint, Ubuntu, Debian, and enterprise grade CentOS - all well established and supported distributions.
Linux Logos

If working with a new operating systems sounds intimidating, Linux Mint is a solid start.

Mint includes software like LibreOffice and outright support for multimedia formats, making a transition from Mac or Windows more comfortable. Its powerful and easy to use while sill maintaining that sweet customization Linux is known for.

Each of the popular distributions have their strengths, so check out a few and search around Dev.to to see what other developers are using. ;)

Good luck explorer!

Top comments (33)

Collapse
 
awwsmm profile image
Andrew (he/him)

Great intro, Amber! For anyone interested, Ubuntu is also a really popular choice for a first distro.

One of my favorite pieces of trivia about Linux is that all 500 of the world's top supercomputers run Linux! All of them!

Collapse
 
tuchi profile image
Marvelous

Amazing stat you've mentioned there. I made a clean install of Ubuntu in March of 2018, and have never regretted it ever since.

Collapse
 
amberjones profile image
AmberJ

WHooo! Thanks for linking!

Collapse
 
zyzmoz profile image
Daniel Cunha (he/him)

Is Linux worth it nowadays?

I mean, we have a lot of advantages using Windows/Mac OS lately that, in my opinion, overcome most Linux features... So, it seems that there are many cool Linux distros, but when it comes to productivity and toolset I can't point out any advantages;

Collapse
 
gaveen profile image
Gaveen Prabhasara

To answer premise of your question in short, yes. Linux us worth every bit learning.

Please note what you've said is just your opinion, therefore not fact. Simply because there are millions of people productively/happily using Linux on the desktop. As for developers, Stack Overflow annual surveys usually indicate Windows:Linux:macOS ratio among participants is ~ 2:1:1.

Since your reply below also sounds anecdotal or perhaps hearsay, I'm not going to try to respond. However, I'd like you to invite you to give things a try and see if it works for you. There's no point of trying to make a case of "superiority" as you put it. One persons user experience and requirements can be far different from another.

I can't speak for all Linux user, but for me and every time someone makes a diminutive claim about Linux, in 2019/20 no less, it's so tired it's almost funny. Please just remember that you being unable to find a reason to use Linux is your opinion/choice, and respect others choice and curiosity.

Collapse
 
zyzmoz profile image
Daniel Cunha (he/him)

I think I wasn't that clear...

I'm not stating that Linux is bad at all, I'm just saying that as a Professional developer I can't point out an advantage that would make me switch to Linux nowadays. The market focus on productivity and most of the tools are exclusively or better on Mac OS/ Linux, and it is a FACT. Also, it's important to bring the facts, as I said previously, that graphics are better on Mac and, that both Win/Mac are easier to set up.

I do believe Linux is a great OS, I used to be a Linux user a long time ago and, I switched to Windows and Mac just because at the time it doesn't worth it. At the first moment, my question was if Linux worth it... and until now no one was able to answer it properly.

As a conclusion, I do think that Linux is OK when you work as a hardcore developer.

Thread Thread
 
ghost profile image
Ghost

Well I guess I was vague :) is all about what are you doing, to me MacOS design tools are useless, because is no my jam, to me Gimp and Inkscape are far better because are free and more than powerful enough (I've seen professional work with both and are amazin on higher levels too), tools like Blender where made for Linux and later made available to other OS so for Blender should be better in Linux too. In the server side everything is Linux so the fact that you are working on the same system you will deploy is also great, I don't need to SSH to a Docker machine, emulate or imagine how will behave, the same Docker enviroment I have in my system is what I'm gonna use, and tools like terminals, ssh clientes and servers are not an afterthought, I can install Postgres just like in a server because we don't have that difference of server/desktop, home/profesional even the noob/pro is just a label. You daily USE an actual server machine. You use the same cron, same init, same ntp client, etc.

I'm not sure what your dev specialty is so maybe in your area MacOS or Windows are "better", but to me is unthinkable to move to something else (except BSD, I really liked OpenBSD).

After all, as I said "better" or a blank "more productive" is a fallacy, specially for "dev", systems dev?, web dev?, mobile dev?.

And in the daily workflow, if my OS keep me from working because is updating, eats my resources with antivirus SW, I need to upgrade my system programs one by one, I have to dig for drivers on the web, I have to reinstall my entire system once a year because it get slow in time, after every reinstall I have to reconfigure everything program by program, every system preference by hand everytime. For me, that is unacceptable, that criple my productivity. I reinstall every 5+ years and just because of boredom, I've had installs for 10+ years, and rebooted only to update the kernel once a month. An boots in < 10seg, it updates in the background only when I tell it to and does it with ALL my installed SW not just the OS, I install an entire environment or program with just 1 command. Want Python? already there, want a C/C++ compiler? already there; Rust, Java, Postgres, Docker, Kubernetes, all at 1 simple command. And not some emulated or modified version, just the same that you would install on a server, production ready in you desktop.

And everyone say but what about Photoshop or YYY, well I say where is my native and lightweight neovim, where is XFCE4-terminal, i3 or mpv, where is zsh, zfs, rofi and htop?, from your point of view Linux has no programs, from mine is Windows who doesn't, MacOS is closer, but require an Apple taxed HW, has far less flexibility and I like my laptop without dongles and ample avail of ports and under 1500USD. And I don't buy that premise of Windows was more malware because has more users, to me that's bullwaste. I've traveled ungodly websites (just research...) (... for a friend) (not even a close one...) and in almos 15 years, never a virus, not once, that peace of mind also affects productivity.

Thread Thread
 
ghost profile image
Ghost

look what you made me do!, another 1000 lines of "verbal diarrhoea", is your fault tho, all your fault. ^ he made me do it!

Thread Thread
 
zyzmoz profile image
Daniel Cunha (he/him)

I got your point. However, Is Linux worth it? Why?
I'm not trying to make you write a 1k lines answers or that stating Linux is the worst! Keep it simple...

Thread Thread
 
ghost profile image
Ghost

Yes, complete freedom and access to everything, the same everything Google and all supercomputers have in the background. The same you can install into almost any device. Some SW doesn't run on it, some HW is not well supported. There you go, your choice.

Yey, I did't, short post at last :D

Collapse
 
sawtoothmassacre profile image
sawtoothmassacre

What features? What toolset? What advantages?

Collapse
 
zyzmoz profile image
Daniel Cunha (he/him)

For example, Mac OS has a better performance when it comes to graphics. Moreover, most of the best graphics softwares aren't available on Linux.

It is also important to say that Linux, in general, isn't as easy to set up as Mac/ Windows, hence it means that it costs time to get ready to code. However, it depends on which stack you're working with. Most javascript stacks are pretty much ok on Linux.

(I do think Linux is great, but I've never seen a real use-case where its superiority was proven).

Thread Thread
 
ghost profile image
Ghost

It all depends on what you expect of your OS, I don't buy that "best OS" oversimplification, I used MS OS from DOS 6.0 to Win XP exclusively and on and off Win7 after that. I was kinda happy with Win3.1, 95, 98 and XP but when I started using Linux my whole world opened for me, I started seeing and getting interested in thing I didn't even knew I could do or know; I got interested in programming, my rig turn from an appliance to my system. If a computer is just a device that runs X program for you, then just use the OS that better support said program. To me, if you want to learn, really learn about computers, if you really want to make your system yours, not talking about changing fonts or GUI colors, but really have complete control over your entire system, there is no other choice but Linux (or some BSD for that matter), because of the simple fact that the other OS are built from the ground up to hide things from you, to "translate" standard technical lingo to make it "user friendly" for most people and most people doesn't care about learning that stuff.

My workflow is not possible in other OS, not even close, to me working in Windows is really painful and I don't see anything helpful to me in MacOS. My system is perfectly fit for my needs and I can have my perfect setup in about 60min and that installation will stay as perfect as today for years, I reboot my machine once a month and works flawlessly being a 7+ years old HW when I see other OS lag in much modern machines doing much less.

Productivity wise, to me is being able to handle my 3/5 active projects without closing anything, Firefox with almost 100 tabs open, 15+ terminals, 8 text editors open; a couple of videos on queue while working on and off with Inkscape (nothing too fancy), Gimp and Kicad; working on Rust: testing, compiling; running Python tests and that's the base line. On top of all that short complilations of C for microcontrollers, some music on the background, installing SW, reading a couple of PDFs, spreadsheets work, etc. And all that ofte at the same time, in a 7+ years i5 laptop with 8GB in RAM spread in 3 displays with 20 workspaces. And that laptop cost me about 150USD about 3 years ago. I can't do even half of that in other OS. And as a Cherry on top I use i3, find something like that on Windows or MacOS, good luck.

Thread Thread
 
zyzmoz profile image
Daniel Cunha (he/him)

I see... In your case, I think it is reasonable using Linux. Also, it is a matter of figure out your necessities as you said. Although, in most cases, I think people choose Linux by choice and not by productivity. For example, Photoshop is way more productive than Gimp, but when it comes to code it is pretty much the same depending on the language.

Collapse
 
ghost profile image
Ghost

If I may complement a bit what a distro is, because this seems to be a big issue to new people. There are many and I mean MANY programs that run in Linux as Amber mentioned, in many fields even more than in other OS, you may add the programs you like one by one and configure the whole system from scratch (look for "LFS Linux") but as is a big pain in the lower back, some people/companies/communities grab their prefered SW and configurations, add an installer (except a few lovely distros :) ) and make a "bundle" that also allows you to madify anything you want from it (I just realize that I misspelled "modify" but somewow madify seems right) so a distro is a starting point, a base, a default to be easily "distributed", ergo distro. So your first distro is important because it gives you a starting point, there are distros targeted to advances users with a very small "starting point" and a very vanilla config because they know the advanced user will change everything anyway, so if somehow important what your first distro is, said that, is not THAT important, you could start with an "advanced" distro and you just will start in the deep end and you'll force yourself to learn quickly if you want a functional system (as I did many moons ago). I hope this helps complement this nice article. And new user, you have no idea how much you can learn and how deep you can go with Linux, at first may seems scary but trust me (you shouldn't) but trust me tho, is good scary :)

Collapse
 
amberjones profile image
AmberJ • Edited

Appreciate the additional comment on distributions along with your insight! it definitely seemed scary at first, but then you realize it's a cornucopia of dreams!!

Collapse
 
artyomgazizyanov profile image
Artemiy Gazizyanov

I used Linux for a long time. I tried some of the distributives, and I had chosen Arch. Because of its work speed and minimal size.

As for me, I like to experiment with different UIs, so using Linux as my OS, I can change how it looks like at any time I want. And it wouldn't cost much for me.

In the end, I chose Arch + Deepin because I liked Deepin's interface looked.

Collapse
 
amberjones profile image
AmberJ

Thanks for sharing! A solid combo 👌

Collapse
 
mccurcio profile image
Matt Curcio

Great Article Amber!
LOVE Linux, I have been a convert for 7 yrs now. I used to love hacking my systems but now I just go for Linux Mint. Mint is just ready to go and has all of the extras I regularly use like build-essentials, etc. Mint just works and lets you start 'Roid-away'(he says in mock English accent). lol

Collapse
 
amberjones profile image
AmberJ

Agreed! Thanks for sharing Matt! 🤗

Collapse
 
aortizoj15 profile image
Alexis Ortiz Ojeda • Edited

Hello! Would anyone point me in the direction of how I could use an external hard drive to boot into Linux while still being able to boot into Windows as normal if I wanted to? Thank you!

Collapse
 
bradtaniguchi profile image
Brad • Edited

I'm not sure if I ever ran into anyone doing this, so I have no idea if its possible.

You don't need 2 hard-disks to duel dual boot with Windows and Linux, having 1 larger hard drive should be fine. Windows usually creates some annoying problems with handling the boot up steps, so most of the time it takes some tweaking to get to the Linux installation. I recommend looking into duel booting with your specific distro, most popular distros have tons of documentation and helpers to install the distro along-side windows. 😄

Collapse
 
aortizoj15 profile image
Alexis Ortiz Ojeda

Cool thank you will check it out!

Collapse
 
ghost profile image
Ghost

it's dual booting not duel, no need to get combative :)

Collapse
 
amberjones profile image
AmberJ

Agreed! Thanks for the helpful comment!

Collapse
 
ghost profile image
Ghost

Yes, it's in fact the easier and safest way to make your first install

1) you'll need a "install device" (Install DVD or USB stick with the installer), you get it on the website of the distro of choice, follow their instructions on how to make it bootable.

2) Boot your installer system, you have to turn on your PC with the "install device", if it just boot your regular OS you have to change the boot order of your BIOS, pay attention to the POST messages at boot and your motherboard should offer you a key to display a temporary boot drive, if not you can configure the boot order in your BIOS (is always good to let it check USB before your HD/SSD)

3) After that, your system should boot from your "install device", having pluged-in your target external device you can install the system there following the installer, just as any regular hard drive. Make sure you choose the right HD or you will overwrite your Windows install. Just at the end of the installation you'll have to install the bootloader, that's the little program that manages the boot of your available OSs. Make sure you install it (Grub is probably the default one) IN THE EXTERNAL DEVICE, that is kinda important, as you installed Linux in the external device, the installer should asume that drive as target for the bootloader, but check anyway, if it installs it in your internal device instead of booting Windows by default (without the external HD pluged), a boot menu would appear, you can still choose Windows in that list (Linux installer can see your existing Windows and automagically add the entry for you) but that is annoying, make sure you install the bootloader on your external drive and you will not even touch your internal drive.

4) If everything went well, you're ready, just reboot with your external HD pluged and it shoud boot (if it doesn't, remmember step 2). Linux doesn't really care if the drive is internal or external, SATA, USB, etc.

  • depending on the distro you chose that HD should work on other PCs too, as you may have realized, in the installation process you didn't have to dealt with drivers, the installer took care of that based on what it saw pluged, each distro have their own criteria on how much "extra" kernel modules ("drivers") includes (for example digital cameras, you may not had your camera pluged when you installed Linux but it probably install the kernel modules anyway just in case), some distros install the bare minimum to make a more streamlined system, others may ask you and the easiest like Ubuntu, Mint, PopOS! and the like, just install everything you can think of so you don't need to deal with that, and for a modern(ish) system the overhead in not relevant. Because of that if some of your HW is not recognized at first you can try another distro that may have more kernel modules ready. Later on you will learn more details, your first install is just to get you ready :) and you'll probably try many distros after that (distrohop is the technical term) and then you'll fall inlove with one and forget all others, but once in a while you'll get curious, what would it be with that other sexy new distro?, what what I really want is some BSD? what about somethink a little kinky like OpenBSD AND your main distro? on the same drive?, of course do it carefully, use protection and always check twice the drive you are installing on or thing will get messy.
Collapse
 
moopet profile image
Ben Sinclair

Linux was never intended to be released for public use

Why do you say that?

Collapse
 
amberjones profile image
AmberJ • Edited

Oh yes! I could have definitely been more clear here. I had a bit on history I took out. But basically, Linus Torvalds the creator of Linux, created it as his thesis project in college and did so because he wanted customization and to not pay for UNIX. So it wasn't created with the general population in mind. But of course many Linux distributions since have and do! :) Hope that clears up some confusion.

Collapse
 
ankit199 profile image
Ankit kumar shukla

Is mint support android studio ?

Collapse
 
amberjones profile image
AmberJ • Edited

Interesting question! From what I see online, I do believe so! Here is an article I found on how to install it

Collapse
 
ankit199 profile image
Ankit kumar shukla

thank you . will try one more time using shared link

Thread Thread
 
amberjones profile image
AmberJ

Hey Ankit!

Wanted to update that while running Mint with XFCE, I installed Android Studio from the official website no problem!

Once you download and extract, there are installer instructions with a few terminal commands to start.

Here are the system requirements I found for the Android Studio Website:
Linux
GNOME or KDE desktop
Tested on Ubuntu® 14.04 LTS, Trusty Tahr (64-bit distribution capable of running 32-bit applications)

64-bit distribution capable of running 32-bit applications
GNU C Library (glibc) 2.19 or later
4 GB RAM minimum, 8 GB RAM recommended
2 GB of available disk space minimum,
4 GB Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system image)
1280 x 800 minimum screen resolution

Collapse
 
enginsabanci profile image
Engin Sabanci

It is the first time I understand the first paragraph reading at once.