For those who don't know, there was a 20th Anniversary edition of The Pragmatic Programmer released a few years ago - It's still full of a lot of the same great advice, but they've brought the context and examples up to date.
Agreed. I was pleasantly surprised by how general and practical it was. I assume it was an over hyped shallow book but I was the one being shallow... Definitely worth a read.
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.
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
Some parts are okay. It's one of the books that hasn't aged very well though, similar to JavaScript: The Good Parts.
A lot of it tackles flaws in Java itself, and assumes that OO in geeral has the same problems. For example passing an object instead of multiple parameters into a function. It's one of the suggestions that our team just agreed to reject for Kotlin/Dart because we could set default values.
Uncle Bob is generally one of the best in explaining why problems happen, though you have to step aside and think whether the solution he proposes is the best.
I wasn't a huge fan when I read it a year or two ago. It's fine, but I think that there are a lot of things that just aren't that clean (which is a subjective take). Uncle Bob in general though is a favorite of mine. Highly recommend Clean Architecture, Clean Agile, and The Clean Coder.
It's very heavily Object Oriented influenced, but it's still worth reading. Just make sure that you (and any team you work with) form your own opinions on what Clean Code is for you.
- Beej's Guide to Network Programming (1994 originally I believe). Fantastic intro to networking programming via the Unix interfaces.
- The C Programming Language (1988 for 2nd edition). There has been change, but not a crazy amount.
- Mastering Regular Expressions (2006). Never look at a regular expression with fear again!
- 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.
Reading GEB is sort of like getting a comp sci degree- You learn what can and cannot be done with computers. There are a lot of folks who learned coding by doing, but there is deeper knowledge. It's the the difference between going to coding bootcamp and really being able to explain, for instance, The Halting Problem, or why P != NP. So GEB probably won't make you a better programmer but it will give you deeper insight into the fundamentals of computation.
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