Recommended Reading List for Programmers
There’s an endless ocean of articles, blog posts, books, and videos offering advice about how to program and do software development well. I’ve collected a handful of my favorite resources here, which range from invaluable advice for program design to discussions about niche design decisions to post-mortems and technical overviews to random facts and statistics that I think are important to keep in mind. There are other huge repositories like Hacker Laws that are worth reading through carefully, but I wanted a smaller, more focused list rather than an exhaustive repository of everything that could possibly be useful to anybody.
Also, careful reading of some of the advice here will reveal that there are many caveats and a lot of conflict on the finer details. Unfortunately, there is no free lunch when it comes to software development. The purpose here, as with everything in life, is to get a broad sampling of all the arguments and information and learn to draw your own conclusions. The only universal rule is that there are no universal rules: think critically, don’t be dogmatic, and always keep learning. You can’t just play sheet; you need to be able to hear the music.
Anyways, in rough order of importance, here are my picks:
Programming Well
- Effective Java by Joshua Bloch
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (AKA “The Gang of Four”)
- Game Programming Patterns (important for more than just game design!)
- Things You Should Never Do, Part I (There does not appear to be a part II.)
- Reading Code Is a Skill
- Write code that’s easy to delete, and easy to debug too
- Making Wrong Code Look Wrong
- The Law of Leaky Abstractions
- The Joel Test: 12 Steps to Better Code
- It’s probably time to stop recommending Clean Code
- New grad vs senior dev
- The Perils of Java Schools
Opinionated
- Linus Torvalds on C++
- “No way to prevent this” say users of only language where this regularly happens
- Cleaner, more elegant, and harder to recognize
Facts and Statistics
- 70% of bugs in Google Chrome are memory safety issues
- 70% of all security bugs in Microsoft products are memory safety issues
Programming Right
- The code I’m still ashamed of by Bill Sourour