← Back

So you want to learn to code...

I feel somewhat unqualified to address this topic, and yet for whatever reason I've had more than a handful of people ask me how they can become a programmer.

The truth is I don't know the BEST way for you to learn to code. I only can tell you what I've learned and what's worked for me and then extrapolate from those experiences far more than I should and post them on the internet...

Also I should probably mention there are many programming paths. There are programmers for the web, for phones, for your refrigerator, for rockets to Mars, and everything in between. Some of these paths might require advanced degrees or certifications--many of them don't! I'm a web developer. I spend most of my time thinking about front-end stuff (...think buttons, text, colors, layout, that sort of thing) and TBH that's really the only trajectory I can speak to.

So with those caveats, here are some of my answers to some frequently asked questions I get from people who are interested in coding:

"Am I too old?"

No. If you're under 30 I think it's sort of ridiculous to even ask this. But I'm going to address it anyway.

Many people spend their 20s bartending, traveling, and following other passions. It's extremely common to switch careers (or pursue one for the first time). Many people do not go to college immediately after high school. Maybe they were working, or in the military, or a professional baseball player, or a stay at home parent, or {insert reason here}... but for whatever reason, they did not follow a traditional high school -> college -> career -> retired path.

Perhaps it is obvious to you that under 30s still have TONS of time to pursue programming. But it is not obvious to everyone. Yes believe or not when I was 20 years old, I was convinced I was too old to pursue anything computer related.

Facepalm

At the time it seemed as though everyone in my intro to comp sci course was some kind of child prodigy who magically learned visual basic at the age of 11, javascript at 16, and java and c++ at 18, and were off to work at Facebook in a few years. Whereas me... well I was just figuring out what a for loop was all about. Rather than focus on my own studies, I focused on others and decided it was "too late". Oh if I could turn back time...

And for those over 30, no, I don't think it's too late. Yes, it is harder to start a career the older you get. Mostly I'd wager because of increasing responsibilities (kids, car payments, house payments), decreasing safety nets (it's hard or maybe impossible to move back in with mom and dad at the age of 40), and age discrimination. But from a "how many years of study will it take before I get a ROI" point of view I think it is very possible for most people at almost any age.

I was able to go from knowing almost nothing about programming to making a (good) living programming in less than 2 years. To be fair I don't have kids, had a supportive partner who paid the bills when I quit my job, and am the beneficiary of an unfair amount of privilege due to youthful appearance, skin color, and a variety of other factors. Your milage may vary. Money, responsibilities, and discrimination are very real factors. But often those factors exist regardless of one's career path so IMHO if those are the only obstacles ahead, I say go for it.

"Is it hard? Do I need to know a lot of math? Am I smart enough..."

Let's start with the math thing. Some computer programmers spend lots of time thinking about mathy things. Again if you're programming rocket trajectories, you probably have to know something about physics and I guess geometry. If you're a programmer at Facebook analyzing all of the data it absorbs about its users, you probably have to know about statistics. If you're a front end developer like me, you spend a lot of time thinking about logic (if this and that are true make the button blue, if that is false and it's a Wednesday make it red...etc). There's a lot of interesting math that underlies my work, but on a day to day level there are so many layers of abstraction that I can mostly successfully avoid math. I've yet to need anything past high school level math (FUN-FACT: a couple of months ago I had to look up how to determine the circumference of a circle). Most days I get by with 4th grade or lower. Math-y topics have come up in interviews, but honestly not as much as I worried about. Also, side note, math is secretly cool and not to be avoided.

To the is it hard question, it's obviously all relative. In my opinion, no, it's not that hard. Lots of things are hard. Life is hard. Many professions are hard. Programming doesn't seem particularly hard in the scheme of things. Certainly not as hard as I thought it might be. In watching people learn programming, I find there's a fairly large amount of variance in people's experiences of programming's "hardness" that do not always align with ability.

There were and are hard moments in the learning process for me. I find some moments are definitely frustrating. But the trick has been to realize that how hard/frustrating something is has a lot more to do with my own reactions/attitudes than the thing itself.

Learning to code is in my opinion akin to first learning about addition, subtraction, multiplication, and division. The concepts are not that challenging, in fact it's somewhat obvious even to babies. But the language around it is not always so intuitive and can be triggering for some. If a teacher asks a 4th grader (or even some adults) what 5 factorial is, there's a decent chance some will feel nervous, anxious, overwhelmed even and declare math to be "too hard". But in reality I think most 4th graders are fully capable of determining what 5 times 4 times 3 times 2 times 1 is. But if you can not remember what the word factorial means, and you don't know how to find out, it does feel impossible, doesn't it? Not to mention there's so much pressure to know the right answer. If you get it wrong you might fail. If you fail people will make value judgements on you as a person. You might have less positive outcomes later in life. All because you don't happen to know offhand some obscure word that you never use on a regular basis and probably never will. No wonder we get kinda angsty about math.

Fortunately programming is not like math class. If you don't know the answer you can test out your best guess. If it doesn't work you can try your second best guess. If that doesn't work there's google. If that doesn't work there's always your friends. If that doesn't work there's your frenemies. Also books.

In addition to excellent google skills and some basic logic fundamentals, programming requires a positive attitude, an eagerness to walk through the unknown and to be confronted with foreign ideas/words. To not let the traumas of our terrible 4th grade math class interfere too much in our ability to find the right answer. Learning to deal with these emotions and developing these coping skills culminates into one awesome super power: it allows one to imagine a world in which much more is possible, and almost nothing is "too hard". I think it's why so many computer programmers are interested in space travel and sci fi, and can imagine worlds without car ownership, without scarcity, without aging and death.

Such attitudes may also lead to some of the bigger egos, libertarianism, and bro-y culture.

¯\_(ツ)_/¯

TLDR. It is hard but not because of the mathz. Yes, you are smart enough. Also math is cool.

"How can I get started?"

I'd start with free resources first. There are many. I don't think it matters too much which you choose so long as you choose something that feels fun/interesting and you can stick with it. Here are three possibilities:
https://www.codecademy.com/
https://www.khanacademy.org/computing/computer-programming
https://www.freecodecamp.com/

"What language should I learn?"

Honestly I'm not sure it matters. I tend to believe in the T-shaped developer: someone who knows a lot about one thing, and a little about everything else. For now, focus on that one thing. That said, I've heard other very smart people give completely contradictory advice on this front. I'm not sure if there's evidence one way or another. Lots of people start with either Javascript or Ruby. HTML/CSS/Javascript is fun to start with because you can rebuild all those geocities from your youth.

"So I did some free stuff. I know I'm interested...now what?"

If you're going to go to college anyway, go to college. If you don't have a degree and have always wanted one, go for it. Study Computer Science, try to get internships (ideally paid).

If you already have a degree though, or can't afford it, never fear:

From here I'd recommend a low cost class. Ideally something where you create a project or two from scratch. I took a front end web dev class with Thinkful which wasn't too bad. There are lots of such sites/clases. If the reviews seem good and it doesn't cost too much (under a couple hundred) then it's probably fine. This is also a good time to check out some meetups in your area. Talk to people, tell them what you're doing. They might have recommendations, or internship opportunities, or might be in the same boat and you guys can study together.

The big thing here is to try to create projects from scratch. Tutorials are great. But you need to do stuff yourself. It's ok if you look up stuff, you don't need to memorize much of anything. But there's something very fulfilling about building something you envisioned, and you'll learn a lot more. People often at this stage build simple to-do list apps, or little games like tic tac toe, or apps that use an external api like instagram or twitter or something similar.

After you've made a project or two from scratch (doesn't have to be big, or well written or impressive) I think now is a good time to look into a bootcamp if that is a possibility for you. Be picky. Talk to alumni. Visit the campus if possible. Ask about employment rates. These can cost you in the 10s of thousands of dollars. There are some programs that are free, or have scholarships, or have payment deferred options, but all will require weeks/months of your valuable time. You should only invest this kind of money and time if you feel strongly that you will get a job as a programmer afterwards. Try to pick out the scams from the real deal. Work your butt off once you get in. I loved Fullstack Academy, though I'm sure there are other great programs out there. Recurse Center and Grace Hopper are pretty awesomesauce for example.

Another alternative to a bootcamp could be some kind of internship, apprenticeship, mentorship, intense self study or some combination.

If you don't like classes and are great at self study, I'd recommend reading as many books as you can, building as many projects from scratch as you can, and going to tech talks and meet ups. I think self study is totally 100% possible, but requires a level of discipline and direction that most people don't seem have. Check out Code Newbie and FreeCodeCamp.

Internships/Apprenticeships sound like an awesome way to go if you can find one, and if you can find a place that will actually train you rather than just make you get them coffee.

From there hopefully you're employable! Yay! Don't stop learning though. You have not learned enough. In fact, you will never have learned enough. You'll always be in a kind of perpetual world of wonder/amazement/confusion/frustration. Welcome to the club!


← Back home