This page will be ever changing and hopefully growing.
Please let me know if you disagree with my opinions or have a good suggestion for an add!
Google has put together this excellent guide with tips and resources on developing as an engineer.
Think Python: How to Think Like a Computer Scientist As a lifelong editor and writer, I swoon for clear, concise, thoughtful, simple language. Therefore, I swoon for this book. It’s available for purchase as an O’Reilly book, but you can also get it for free in PDF or HTML format. There’s also an interactive version here, which is fun and good, but the book goes into much better, necessary detail in my opinion.
Things like Codeacademy and Learn Python the Hard Way are good for playing around to see if you’re actually interested in pursuing things further, but I can’t recommend them as solid foundations.
Problem Solving with Data Structures and Algorithms Using Python Mother of pearl this is a great book. Like Think Python, it makes me swoon. And like Think Python, there’s an interactive version here. I’m not sure but I think the interactive version is essentially the same as the book (I’m using the book). Note that there is another book with an extremely similar title, but it’s not nearly as clear and seems to be meant more for Java programmers learning the Python way of data structures and algorithms.
Cracking the Coding Interview I’ve learned more about dynamic programming, bit manipulation, scalability, and probability from this book than from anywhere else. Gayle Laakmann McDowell is succinct, which is why this book has been invaluable to me — despite the fact that code examples are all in Java, and I don’t yet know Java.
Interview Cake is an excellent foundation that covers the core types of questions you might expect. If you can make it through all or most of the questions (all of which have answers explained in detail, in case you get stuck), you are pretty solid. Follow it up with leetcode for tricky permutations of the Interview Cake questions.
Favorite online explanations of certain concepts
Python Decorators in 12 Easy Steps It could use a copyedit (commas are important clarifiers!), and it’s longish (albeit necessarily so), but Simeon Franklin breaks it down in a way that’s relatively easy to absorb, and he gives a good explanation of closures too. Afterward, I enjoyed reading this blogpost by another programmer, which gives some nice clarifications and distinctions.
How the Internet Works This is lecture 0 of Harvard’s CS75 web development course. Lecture David Malan does it right–he’s engaging, clear, and methodical. The entirety of the class’s lectures are up on YouTube and are well worth the time (each lecture is two hours long).
Hash Tables When stackoverflow gets it right, it really gets it right. You’ll love hash tables and want to talk about them to everyone you know after reading this great, highly rated post.
Dynamic Programming (a.k.a recursion on acid) Here’s the clearest explanation I’ve found thus far.
d3 Tutorials Data visualization, made relatively simple and fun. Scott Murray is super clear and has a sense of humor. Highly recommended.
Redux and React One of the clearest, most thorough tutorials I’ve ever had the pleasure of doing.
Resources for kids
Big shout out to Amelia in Salt Lake City, Utah for suggesting this Coding Glossary for Kids. It explains many abstract concepts in a concise and clear manner, so it’s good for beginners of all ages.