Structure and Interpretation of Computer Programs
Design Patterns: Elements of Reusable Object-Oriented Software
Code Complete
Refactoring: Improving the Design of Existing Code
The Pragmatic Programmer
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
But 40-year old books on C, COBOL, and Pascal will be very useful, likewise books on algorithms like (say) Binary Trees, etc.
Applied Cryptography by Schneier
Mythical Man Month by Brooks
Often called PAIP. Uses Common Lisp to build classic symbolic AI programs, but has lots of good general advice on building big programs.
The vocabulary might seem foreign today but the concepts are as crucial as ever in the world of modern microservices.