I'm looking for book recommendations that remain useful for software engineers and programmers today. I'm interested in both practical advice for working as a professional developer and deeper topics such as algorithms, programming languages, software design, operating systems, and computer systems. Which books have held up well over time, and are there any older classics I should approach with caution or read alongside newer material?
4 Answers
The best choice depends on what you want to learn. SICP is especially good for programming languages, interpreters, and functional programming. Operating Systems: Three Easy Pieces is a solid introduction to operating systems and their subsystems. For graphics, the OpenGL Red Book is historically valuable, although someone starting today may also want to investigate more current Vulkan resources. For language-specific subjects, choose the newest reputable edition available because APIs and recommended practices change over time.
The classics still hold up surprisingly well. Clean Code can be useful as an introduction to readability and code organization, but it shouldn’t be treated as absolute law; some recommendations are overly rigid or have aged poorly. Use it as a starting point, then develop your own judgment based on the language, team, and project. For software design, A Philosophy of Software Design is another excellent choice.
For algorithms and core computer science, Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein is the standard comprehensive reference. Computer Systems: A Programmer’s Perspective is also a favorite for understanding what happens beneath application code. The Practice of Programming and The UNIX Programming Environment are useful classics for developing practical programming habits and learning how systems-oriented programmers approach their work.
A strong starting point is The Pragmatic Programmer by Andrew Hunt and David Thomas. It focuses on the realities of professional development, not just syntax or algorithms. Think Like a Programmer, Code: The Hidden Language of Computer Hardware and Software, Grokking Algorithms, The Mythical Man-Month, and Structure and Interpretation of Computer Programs are also worthwhile, depending on your experience and interests. The Head First series, especially Head First Design Patterns, is approachable for beginners and lower-intermediate readers.

I’d begin with The Pragmatic Programmer too. It gives useful advice about how to think and work as a developer before you get too focused on specific tools or languages.