How to Code: Linux is Your Friend

By dustin, 3 August, 2018

In the last article, I gave you an overview of my history as an art student with absolutely zero coding experience and how it was much easier than I imagined to switch gears and start over in the tech industry.

We talked about how I used some free online tools to learn to code in Ruby and break down the mental barrier that was holding me back from seeking a career in coding.

Today I want to cover another crucial discovery on my road to code:

The Linux operating system

Way back in my younger days, I didn’t know I’d be taking the plunge into web development. I was a lifelong Windows user, not by choice, but simply by default. My family entered the ‘digital age’ on A Gateway 2000, running Windows 3.1, we suffered Windows Millenium Edition (I still have nightmares), and by my early 20’s the only machine I could afford was a poor little e-machines tower that ran Windows Vista.

I cursed Vista at the time, it was the slowest operating system I had ever used, launching Firefox at the time could often take well over a minute.

My First Design Gig

I have a technical certificate in Graphic Arts and a Bachelor’s degree in Art, but for the first decade or so of my career, I worked entry level customer service jobs that had nothing to do with my schooling. That changed when a family member gave me my first design gig.

I was super happy someone trusted me enough to do the work with no experience, even though it was a family member, I set out right away to fire up Photoshop on my trusty emachines and get to work.

Only, I couldn’t

Vista ran so slow on the machine it was nearly impossible to get anything done. I was desperate, and also a little insane. With what money I had, I headed on down to Best Buy, forked over some cash and came home with an extra hard drive, with the sole purpose of installing Linux.

I had experienced running GIMP on a Windows box and couldn’t believe such a useful program was 100% free and open source. After tinkering with Kubuntu on an old semi-broken laptop and seeing how much faster it was than Windows at the time, I decided to make the switch to Linux, just so I could finish the project before the client retired and stopped inviting me to dinner.

I installed Kubuntu on the machine and started looking for how to install Gimp. After researching it a bit on the ol' Google, I discovered it was as simple as clicking the little terminal icon in the menu and typing this:

$ sudo apt-get install gimp

Really? Are you serious? I don’t have to go to some website? I don’t have double-click until I get carpal tunnel? I don’t have to extract the zip file, run the installer, agree to 20 years of manual labor and wait for a loader bar to get to work while I go get lunch?

The software was downloaded, extracted, and installed with one command, in WAYYY less time than it took to install anything useful on my Windows machine, I was hooked.

The next part was even crazier, Gimp wasn’t all that was available. There was Inkscape, Blender, Scribus, Ardour, LibreOffice, and on and on. There was an open source, completely free, and blazing fast version of almost everything I used and couldn’t afford to buy. What delightful madness.

Why is this important?

Switching to Linux years ago was instrumental in breaking down the barriers to a software development career for me for a few reasons:

I Learned of the Immense Value of Open Source Software

Nearly every single piece of software I have used for the past 5 years as a Web Developer has been open source. The Ruby language, the Rails framework, the PHP language, WordPress, Drupal, Laravel, Symfony, MySQL, PostgreSQL, Redis, Memcached, Varnish, Nginx, Apache, etc…

All of them are open source software, and switching to Linux taught me to not overlook software because it is free. I made my first dollar as an designer using open source software that cost me nothing.

I Learned to Appreciate the Command Line

Back when I started using Linux, things were still in the ‘you have to tweak every install for your hardware’ days. I am pretty lucky as I started when things were transitioning, in the Ubuntu 10.04 release cycle. Things were pretty stable, but to get a lot of things done, you had to be comfortable on the command line.

Now believe me, my first computer booted to DOS, and I could type a mean win or doom back then to launch my favorite programs, and if you read the previous post on learning to code, you know I was no stranger to trying to hack compiled code using the text editor my mom used for college, but I had long since stopped making daily use of it when our newer computers began booting straight into a GUI.

Getting comfortable with the command line is essential to becoming a productive web developer. Drupal wouldn’t be the same without Drush and Rails would never have been as approachable without rails new appname or rails generate scaffold Post

I Learned That Software Was Just a Thing Regular People Make

This is probably the most abstract lesson I learned from becoming a Linux user, but it’s no less important. The software I was using to make art, play games, and tinker with web development was all made by real-life people, many of whom were not genius engineering teams of thousands, and they were making useful stuff, in their bedrooms, dorm rooms, and basements.

This changed perception of software development, from the realm of titans to the realm of the mundane, helped give me the confidence that I could throw my hat into the ring.

Install Your Freedom

I encourage you to give Linux a try if you haven’t already. If you run a Windows machine, this one decision will make your future learning much less painful, as an overwhelming majority of the web development world runs on Linux oriented systems and most of the developer tooling is Unix based. Windows has come a long way over the years, and its possible to stay on Windows and be fairly productive now, but you’ll still need to learn Linux to handle servers for the most part.

If you are a Mac user, you can mostly stay put as OSX is a Unix-like operating system, and the tooling for Mac users is actually the easiest and most widely used for most web dev work. I’d still encourage you to spin up a Linux VM using Virtualbox as a sandbox to play in.

Which Distro?

One of the most confusing things about Linux is that there isn’t just one Linux. There are a myriad of distributions to try, but my money is on Ubuntu and it’s derivatives for new Linux users. My current favorite is ElementaryOS but if you are looking to grab something with a lot of art software pre-installed, try Ubuntu Studio. If you want just the easiest ride into things with the most popular distro with the least issues and most Googlable answers, stick with the tried and true mainline Ubuntu.