In the previous post, I discussed a few ways in which I have found coding bootcamps to be inadequate. In this post, I will present a list of resources I have found very useful as a software engineer. Many are free, and most others can be found in used bookstores (or Amazon) for moderate prices. I'd love to hear other people's favorite resources, so please add yours in the comments or on Twitter.
General Computer Science and ProgrammingDisclaimer: I didn't study CS formally, so this list is short and almost certainly out of date. Please send me your suggestions!
- Aho, Lam, Sethi - Compilers: Principles, Techniques and Tools
- Gamma, Helm, Johnson, Vlissides - Design Patterns (the "Gang of Four" book)
- Knuth - The Art of Computer Programming
- MIT Open Courseware, EE and CS
Official Tutorials / Documentation
- The Java Tutorial - https://docs.oracle.com/javase/tutorial/
- PHP Manual - http://php.net/manual/en/index.php
- Python doc - https://docs.python.org/3/
- Ruby doc - http://ruby-doc.org/
Note: I strongly do not recommend a very popular Ruby introduction, Why's (Poignant) Guide to Ruby. A lot of people seem to love it. I found it way too cute, unclear, trying too hard, and just bad.
- Kernighan, Richie - The C Programming Language
- Liberty, Halpern - The C++ Standard Library From Scratch
- Lippman - Essential C++
Note: even if you don't program in C or C++, Kernighan & Richie is a great introduction to computer programming at a low level. The Lippman and Liberty, Halpern books go very well together, and are project-oriented walkthroughs of essential features. All three of these books are very short, but they pack a punch.
- Evans, Flanagan - Java In A Nutshell
- Flanagan - Java Examples In A Nutshell
- Me - Programming Basics with Java
Note: get both Nutshell books, and read them in parallel. Mine is a free work-in-progress, aimed at people who have never programmed but want/need to learn Java.
- Martelli - Python in a Nutshell
- Thomas, Fowler, Hunt - Programming Ruby
- Flanagan, Matsumoto - The Ruby Programming Language
Note: anything by Flanagan, Fowler, Beck, Crockford or Martelli is worth reading.
After You've Coded For A While
Note: I listed Stroustrup here because it's a pretty dense, dry read (do not read it as your first programming book) that requires a good idea of how things work under the hood. It's also not a practical introduction to C++ programming; it's a guide to the C++ language, and from that perspective it's full of vital insights about choices made when C++ was designed, which in turn makes you think about what computer languages can do, and the various ways they do it.