For book recommendations: “Software Engineering”, Ludewig and Richter. It’s the best book I ever read about software development. Fundamental knowledge does not age. That’s what I don’t like about these super-focused books (not the ones people suggested here, those I think are good) about specific technology trends. They suggest that it’s important to always be up-to-date about the latest hype. And it’s not. You should know the latest hype, but what you really need is fundamental knowledge about principles. Ludewig and Richter gives you that. A lot of books don’t.