I’m pretty convinced that the biggest cheat code to life is reading books. When I tell people this I often feel a bit like an old man yelling at kids to get off his lawn, because seriously, who reads books anymore? At least, that’s the reaction I get from people more often than not. I’m not easily dissuaded though, so here we are.
I think there are basically three types of knowledge that software developers need:
- Specific questions about a library, method, error message, etc.
- Learning how to use a new language, platform, library, etc.
- Everything else
Getting the answers needed for #1 is easy these days with everything available on Stack Overflow, or worst case on the first page of Google somewhere.
#2 is also straightforward enough, with a few roughly equivalent options that will do the trick: video courses, tutorial sites, and books.
It’s the third kind of knowledge that I’m more interested in here, and I guess I should try defining what that is exactly. First, I think junior developers will find their hands full with the first two types of knowledge, for the most part. So the stuff under “everything else” is generally a bit more advanced. A few examples of the types of things I’m thinking of:
- Higher level concepts: scaling up, systems design, anything management related, soft/people skills etc.
- Wisdom: the things you can only learn from experience and making mistakes
- Best Practices: what are industry standards and accepted ways of solving common problems? I’m thinking of continuous integration, unit/integration testing,
So the third kind of knowledge (“everything else”) is really critical for software developers, especially once you get out of the junior years. The key thing about this type of knowledge is that books are the best way to gain that knowledge, and they blow all the other options out of the water.
- Conference talks can be great, but good luck remembering everything important, and you know you’re never going to re-watch the recording of it.
- Blogs can have a lot of the same information, but they’re always super scattered, less comprehensive, and often of lower quality
- Some of this info can be gained from friends who are developers at other companies, or local developer groups, but you can never be sure of the quality of info you’re getting, and again it’s just in bits and pieces
Books, on the other hand, are nearly perfect for this type of knowledge:
- They’re comprehensive looks at a topic
- They’re super organized, and easy to skim to read specific sections
- They’re generally of really high quality because of how much time goes into them
- For this type of knowledge, they don’t even have the downside of going out of date fast (like a book on the latest JS framework would) - this type of knowledge doesn’t change nearly as fast
Anyway, the reason that I’ve been thinking about this is that I read a few good software books lately, and I’m planning to post reviews in the near future. So after all that effort expended on convincing you to read software books, I’m just gonna tell you all the best parts, so you don’t have to bother reading them yourself.