Want to learn to code, but don’t know where to start? Getting a degree in computer science is a great option (not just because money talks), but may be unavailable or unappealing to people. Luckily code is something that can be learned outside the classroom.

There are a huge amount of resources (this is comforting), but learning to code is very difficult (this is not so comforting). I have spent too much time on beautiful websites, thinking to myself “how can I make something like this” to give up that easily. And so I’ve done the digging for you. Here is my list of coding resources along with advice I’ve picked up along the way. And don’t worry–this is as close to a listicle I’ll ever get.

Figuring out the Stack

Before learning any languages, basic literacy is a must. There are a ton of articles that give adequate summaries, but this one seems to deliver the most information in the least amount of words. This article is a little longer, but–like the rest of the blog–maintains an upbeat and optimistic tone. At this point, optimism seems like a good idea.

What Do you Want to Make?

Before you start, it’s important to figure out what you want to make. As useful as tutorials and dashboards are, no such tutorial will be supporting you in the real world. Creating your own project is the best way to motivate yourself to actually internalize the information you learn. Make sure it’s something you actually want to build–that will keep you motivated. (A great example of this–the company gyrosco.pe grew out of a personal website).

This approach is useful in that it also solves the project of what language do I learn first? Lifehacker does a good job of summarizing what languages to learn first in terms of what they offer and what they’ll teach. This nifty infographic gives an in depth dive into the history and utility of programming languages.

Switchup does a great job of guiding you to the right programming languages based off of your expressed interests. It then gives you a list of code resources along with reviews. If you’d like to read on, I’ll be listing many of these options and resources individually.

One more thing before diving into individual learning resources–how do you solve the problem of not even knowing what you don’t know?

My suggestion is Bento. You can follow a track or go to the “grid”. Their resources are sorted by specific language or software a category (for example, fundamental, front end, back end). In an Internet environment throwing you constant resources, it’s extremely useful to see everything sorted. It also shows you the categories of knowledge you need to pursue.

Resources

Free

Online
Good ‘ol Codecademy— if you haven’t heard of this, you’ve been living under a rock. For the rest of you Patrick Stars, Khan Academy also has a computer science page. Free Code Camp has a slightly different mission–the program touts helping nonprofits—but you have to put in around 1,600 hours of work to get there. General Assembly’s Dash is newer but no less dazzling.

If you have no aversion to crass language, consider this website’s advice. There is a nifty list of free programming books in pdf form. Their manifesto is pretty funny.

Looking for something specific? Use Redhoop’s class search engine.

If you’re looking to have the “college experience” of learning good code practice and how to think like a programmer, rather than just knowledge of syntax and specific languages, aGupieWare has created a well-thought out compilation of free online computer science courses from top universities (think MIT). They’re organized in a structure that mirrors that of a bachelor’s degree–introductory courses, intermediate courses, and electives. There is a basic set, and a more extensive range of courses.

Want to watch Youtube videos? Look no further than The New Boston’s channel. Bucky helped me through CS 112. I would especially recommend his Java video on classes and subclasses. All of his examples are food.

Last, but not least, a few specific resources I stumbled upon: “Learn Python the Hard Way”, Google Python Class, Django, HTML & CSS, Github.

Games!
Gamification of coding makes learning more fun. Codecombat and Codingame are two well-received examples. You can also learn to build simple games of your own on Crunchzilla. You should have at least a little of your own coding knowledge before you try your hand at this one, though.

Afraid of actual syntax and just want a good grasp of structure? Unashamed to play a kid’s game?–don’t be ashamed, it was developed by MIT. Scratch is wonderful (and free). Code.org also offers a ton of games to teach code to people of all ages. The nonprofit aims to inspire students and improve diversity in the tech workplace.

On Campus Class
Ada’s Developer Academy seems to be the only free bootcamp I’ve found. Unlike other programs that are 10-20 weeks long, this one spans an entire year, and features a built in internship program. It is located in Seattle, and while the program is free, students must figure out room, board, and insurance on their own. This may be difficult given the program is full time and does not allow enough free time for a job.

Mostly Free

Udacity has a ton of free coding videos. There are options to take a “full course”–these require payment. EdX also offers courses in computer science; most can be audited for free, but to receive a “verified certificate” you need to pay.

Paid

Apps
Want to learn how to make an app? There’s an app for that.

Books
I’ve already mentioned a ton of books that you can get for free. I’d like to additionally mention Jon Duckett’s books. They’re wonderful resources, because they’re incredibly well designed and full of beautiful and easy to understand examples. You can buy them on Amazon. Be forewarned–apparently the binding is a little weak. They’re beautiful enough that I had no qualms about taking the risk on them.

Online Bootcamps
Rather than compare online bootcamps myself, this comprehensive guide seems to be a better choice. This article gives analysis of a little more depth to a few on the list. Keep in mind that some online programs charge by course, while others charge by month–figure out what works better for your schedule and what languages you wish to learn before making the commitment. Not included on either of the above articles are Code School and Treehouse–each of these charge per month.

On Campus Bootcamps
If you’re looking to really have the immersive experience of an on campus education, and you aren’t afraid to pay for it, SkilledUp offers a very comprehensive list of coding bootcamps.

What Now?

If you get stuck at any point in coding, Stack Overflow is a great resource for getting answers to your questions. Another great way to learn code is to simply fiddle around with code from other websites. Remove lines and see what happens.

If you really can’t think of any personal project that pushes you forward, there is a great subreddit called “daily programmer” that lists daily programming challenges. Just a little something to help you get away from the handholding that dashboards and tutorials give you.

It is important to remember that computer science is a way of thinking even more than just the learning of languages. Math is extremely important. For a long list of problems that demand computational thinking, look no further than Project Euler. According to Wikipedia “each problem is solvable in less than a minute using an efficient algorithm on a modestly powered computer”. Apparently someone solved 78 problems in 24 hours. And yes, it’s on video.

I noticed that there’s a ton of resources on learning a language, but not that many about how to actually put that thing on the internet. I got your back, friend. Here’s that article.

And so begins the insanity that is teaching myself to code. Wish me luck. Updates to come.