One of my friends recently started taking a course in full-stack web development, and was asking for my advice since I similarly took the “self-taught” route to becoming a full-time programmer. After chatting about things I’m glad I had done and things I wish I had done differently, I sent him this email detailing a list of resources I had found useful over the course of my self-education these past few years.
Having benefited from this subreddit in the past (nearly 4 years ago), I thought it might be interesting to share that list here as well :). A lot of it is pretty standard, well-known material, but hopefully someone else may find it to be useful as well.
So here’s the list of a bunch of my favorite learning resources. I put one asterisk (*) next to the material I’ve gone through pretty thoroughly and found to be quite useful, and two asterisks (**) next to the items I think should be required reading.
Fundamentals of programming:
Clean Code** (just focus on the chapters that are relevant to you)
Refactoring: Improving the Design of Existing Code** (just focus on the chapters that are relevant to you)
Crash Course Computer Science (these videos are kinda corny but there’s a lot of great info for those of us who didn’t study CS in college… no need to go through every video)
MIT Intro To Algorithms/Data Structures (my friends that went to MIT say this is one of the most useful classes they took)
I don’t know many of these off the top of my head but you should try to find some if you expect to be using these a lot! Here a couple resources I found:
Python Books for Beginners (you’ll have to do more research into which of these are the best)
MIT: Intro to CS and Programming in Python (this could also fall under the “Fundamentals” section)
(BTW – you may not find these resources useful or even interesting while you’re still getting started with the fundamentals, but I personally found that experimenting with functional programming made me much stronger both in how I think about and how I write code)
Learn You A Haskell* (just the first few chapter are probably good enough, it starts getting pretty hard/confusing toward the end if you have no background in functional programming)
Brave Clojure (I personally like the Haskell book better, but some of my friends really like Clojure so I think it’s worth checking out)
Cracking the Coding Interview* (as much as it pains me to suggest this, it’s great for tips and as a guide for data structures and common algorithms… also if you go through this book thoroughly, you’ll be super prepared for most interviews, though it’ll be a bit of a slog to get through)
Awesome Interview Questions (just focus on the languages/frameworks you use)
Triplebyte Blog (I’ve only skimmed through this, but I hear this company has a lot of good material around interview prep)
Front-end Interview Questions* (I originally pulled these from here but it looks like these might’ve changed a bit since I last looked at them… anyway, the material is incomplete and not super well organized but it might still might be useful as a template for note-taking)
Leetcode* (I’ve heard paying for premium for a month or two is a great way to get a sense of what kinda questions companies are actually asking)
HackerRank (similar to Leetcode, includes a wide variety of interview questions to practice)
“Fun” Project Ideas:
A Twitter bot (for example, I made one that just scraped goodreads.com and would tweet out random quotes from my favorite authors)
A reddit bot (for example, I made one that pulled scoring data from NBA.com and would reply to people with the score of a game if they asked for it… it didn’t take long for it to get banned haha)
A webscraper (for example, when I was looking for apartments I wrote a script that scraped Craigslist and then automatically sent out a canned email to any listings that fit my criteria) A blog build in React (and then maybe adding Redux later to learn the benefits of a “state container”, and maybe experimenting with a server in Python/Flask or Ruby/Sinatra instead of Node/Express)
An app that integrates multiple APIs (for example, I made one that pulled data from Foursquare and Yelp to show which venues had the most activity on Google maps)
I know such a long list can be a bit overwhelming so if I were you, I’d start with “Clean Code”, “You Don’t Know JS” (or a similar book for Python or Ruby), and “Cracking the Coding Interview”. The goal is to have good overall coding fundamentals (“Clean Code”), to know one language particularly well (“You Don’t Know JS”), and to have a decent background in data structures/algorithms (“Cracking the Coding Interview”). It’s also best to have some practical experience from personal side-projects or open source contributions, but it sounds like you’re getting plenty of that from your course :).
Also, I definitely wouldn’t make it a goal to get through all of this material… just find what’s most useful to you. It took me over a year to get through most of this, and I’ve only just started “seriously” going through “Cracking the Coding Interview”, since in the past I’d only skim it when I was prepping for interviews.
One thing I’ve been doing to make “Cracking the Coding Interview” more digestible is keeping a repo of the questions and answers in JS/ES6 which forces me to think through the problems and actually write out solutions. Maybe a similar approach can work for you? Also, if I were you I’d try to tackle those problems in Python or Ruby instead of JS, unless you plan on specializing in front-end programming.
I hope this is helpful, and let me know if you have any questions!
Explore additional resources here
Must Share Article