In no particular order:<p>Structure and Interpretation of Computer Programs<p>Design Patterns: Elements of Reusable Object-Oriented Software<p>Code Complete<p>Refactoring: Improving the Design of Existing Code<p>The Pragmatic Programmer
Most of 'em.<p>The main exceptions will be programming books which focus on versions of programming languages which have gone though extreme changes between released versions. Like (say) GTK+, Visual Studio, etc<p>But 40-year old books on C, COBOL, and Pascal will be very useful, likewise books on algorithms like (say) Binary Trees, etc.
Question for the masses - is “Clean Code” still something worth reading nowadays? I have so far only heard good things about it (but that might also just be survivorship bias, I would assume books that aren’t good wouldn’t really be talked about as much), but have yet to grab a copy
Lots of good answers here. To chime in a few:<p>- Beej's Guide to Network Programming (1994 originally I believe). Fantastic intro to networking programming via the Unix interfaces.<p>- The C Programming Language (1988 for 2nd edition). There has been change, but not a crazy amount.<p>- Mastering Regular Expressions (2006). Never look at a regular expression with fear again!<p>- Patterns of Enterprise Application Architecture (2002). Some of the patterns are antiquated but a lot of them are fantastic for modern development. Some of them are core to a lot of development now but we just don't think of them.
Paradigms of Artificial Intelligence Programming by Peter Norvig.<p>Often called PAIP. Uses Common Lisp to build classic symbolic AI programs, but has lots of good general advice on building big programs.
Eric Evans: Domain Driven Design<p>The vocabulary might seem foreign today but the concepts are as crucial as ever in the world of modern microservices.