I find myself in a situation where I need to recommend some good books on software engineering to some developers who are just entering the workforce after finishing their education. When I was young, there were some books that generally everybody agreed were "must reads". They included:<p>Refactoring by Martin Fowler,
Design Patterns by the Gang of Four,
Test Driven Development by Example by Kent Beck,
Clean Code by Uncle Bob.<p>There's others like Pragmatic Programmer but I want to keep this list short to simplify the discussion.<p>My question is, are these books still relevant? Should any of them be replaced by more relevant books for 2022?<p>Refactoring is still one of my favorite tech books of all time, and I see it has recently been revised in 2018 to include javascript examples. I think this remains a solid recommendation.<p>Test Driven Development by Example is probably timeless as a historical record, but I'm wondering if there's a more recent work that covers the same content but also goes into Behavior Driven Development and Acceptance Test Driven Development.<p>Clean Code I would say is certainly still relevant, but I am wondering if there is any book that covers the same content with more recent code examples.<p>Design Patterns is the one I'm struggling with the most. Back when I first read it, it changed my life. But in 2022, with OOP looking increasingly dated and more and more people realizing they shouldn't make everything a noun, I wondering if there isn't a better choice out there? In many ways Design Patterns were created as a way for Java programmers to emulate useful tools from functional programming by nounifying them. I'm wondering if there isn't any good book to cover instead basic patterns from functional programming, stuff you see regularly in languages like javascript and python. Stuff like function composition, applying a closure to a container, that kind of thing. Any good options?