How to get into programming

Like many others in my generation, I attended college for an embarrassingly long span of time, and emerged — or was rather spat out — from it without many “solid skills” or an idea of what I was supposed to do with my life. I assumed that the thing to do is just keep at what I’d done before, eg. watch a lot of YouTube, eat meals which barely register as base nutrition, and more or less carve out a living by delivering sandwiches and making rounds to the pawn shop when that wasn’t enough to make rent.

At a certain point, a happy accident of chance and latent interest colluded to put me into a small circle of people interested in programming, along with a chance to earn some money while learning the craft. I want to emphasize that the details of this were not circumstantially ideal. I worked weird hours, I did not receive a lot of guidance, I often wasn’t treated with much respect or concern for my well-being. That was the arduous first year — the low period.

Luckily, my life has since improved dramatically. In that year I was exposed to the magic of code: typing some characters into a word document and seeing some result — either a behavior happen on the screen, or sometimes many screens at once — all from the same at first esoteric language of machines. I was exposed to the monumental pillar of human effort that has brought our relationship to technology to a point where it’s at once all-pervasive and implicit.

Alas, apologies for the digression. I mentioned earlier all those years at the University… oh the credit hours spent in a Creative Writing workshop, woe the semesters of blissful ignorance and disregard for future car payments.

Anyway, a friend of mine sent me this text today:

Yo! Do you still code? I’m just now seriously considering it. What should I do to get involved?

I didn’t know how to answer this in a brief response. There are of course great websites that try to bundle all of that required knowledge into a single resource, but for me at least, it’s a huge conglomerate of reference materials, podcasts, video channels, message boards, books, blog posts, issues, subscription services, meet-up groups, peer-programming sessions and conversations.

However, a few tracks can help someone get their foot in the door — or their brain in a terminal — and I wanted to collect them and hopefully answer that original question. Getting into technology is daunting, and the horizons stretch out into the mists of quantum states and category theory. I’d like to advise a more specific audience, who maybe isn’t totally satisfied with their current job or career options, just like I wasn’t satisfied washing dishes and delivering sandwiches.

Consider this a Getting Started. I hope to follow this post with some advice on “work-life balance”, working on teams, self-organization, diet and exercise… but honestly I struggle with those things. I’m in the midst of adopting better habits and reading books like Deep Work is really helping. Here we go.


The Tools You Might Want

A GMail account
You probably already have one, but it might be good to create one just for the new programming-specific services that you’re going to sign up for. There will be a lot.

A GitHub account
Probably the most important since this will be your gateway to the world of Open Source. If you come from a background at all sympathetic to little-A anarchy — just you wait, friend.

An Editor
Anything that works for you is fine. Atom is an open-source editor built with web technologies (html, css and JavaScript) — it’s free and has some great plugins. It’s also a clone of Sublime, which some people prefer since its compiled, and can run faster on some machines. There’s also VS Code from MicroSoft, which started as a fork of Atom and has some great language support for things like TypeScript, Go, Erlang, etc.

Note: If you don’t feel like installing an editor, check out Repl.it or Cloud9.

A Twitter account is a great way to follow people in the field you’re interested in, and ask questions directly. It’s also a good idea to write little posts about your progress (which boosts personal accountability). The popular 100 Days Of Code is perfect when you’re starting out.

Curriculum

Internet History, Technology and Security (Coursera)
I find it super helpful to understand the roots of how the web came to be, and this is a great course — and it doesn’t require any programming knowledge.

https://www.FreeCodeCamp.org
Pro: It’s free, it’s thorough, it’s project based… and if you manage to get all the way through the curriculum, they will provide opportunities to work on real-world projects for non-profits.
Con: If you’re just starting out, you might get a little overwhelmed. Go slow, google any questions that you have.

https://InternetingIsHard.com
It’s free, it’s written by a designer who’s done a great job creating illustrations and focusing on the front-end of how websites are rendered.

https://Codecademy.com
A classic. A great place to start learning web development.

https://www.KhanAcademy.org
A phenomenal effort, great for leveling up your math skills and a fun way to learn about computer science.

Reference Materials

CSS-Tricks.com — They’ve been around forever and are simply the best.They constantly update archived posts to make sure the information is accurate.

The Mozilla Developer Network —They are pretty much The Authority on web API documentation. They’re a non-profit company that cares firstly about developers and have some of the best Getting Started guides.

Codrops — Another favorite, check out their CSS Reference with care.

YouTube Channels

ComputerPhile — One of my favorite channels. It’s a sister channel to the also great NumberPhile and features professors explaining single concepts in wonderful detail.

3Blue1Brown — An excellent channel from a former Khan Academy teacher. Features all sorts of fascinating topics focusing on “learning from first principles”. They also have a website.

Coding Train — A great teacher. If you’re at all interested in Processing, this is for you.

Fun Fun Function— Excitable Swiss person enunciates the habits and patterns of modern web developers.

Coding Math — There can be a lot of math involved in coding, this channel gives some nice overviews.

Sixty Symbols— Like Numberphile, but relates all kinds of science-y things.

Podcasts

CodeNewbie— Focused on illuminating subject matter for beginners.

Greater Than Code — Excellent podcast that’s about more than just the coding.

JavaScript Air— No long airing new episodes, but has a great archive.

The Changelog — Loads of podcasts on various subjects.

Mega Resource Appendices

Awesome-Awesome
A so-called “Awesome” list is a README file that contains links to a bunch of resources on a particular topic. An “Awesome-Awesome” list contains lists of Awesome lists. There are of course also repositories for this type as well.

The Jargon File
If you come across a term you haven’t, for instance grep, this can sometimes yield a funny definition.