These are my favorite books to help you grow your technical skills and learn to grow in your career.
General and easily approachable books are at the beginning of the list and more specialized books for further career stages are at the end.
The Pragmatic Programmer
This is my #1 recommendation for any software developer. It will give you insights and tips no matter what stage of your career you might be at.
It covers a huge variety of topics from coding techniques to career advice.
The Complete Software Developer's Career Guide
The go-to book for getting a grip around growing and owning your career in general.
This book has great content for any level of developer.
Never Split the Difference: Negotiating As If Your Life Depended On It
It might seem weird to have this listed 3rd 🤔. But, negotiation skills can help skyrocket your career by learning how to get buy-in from other people, negotiating with managers whether you should do some major refactoring, improve your ability to negotiate salary, etc.
Working Effectively with Legacy Code
Let's face it: most developers will have to deal with really messy legacy codebases. How do you deal with these? This book will help you navigate these kinds of systems and also give you tons of tips around building quality and maintainable software.
Refactoring: Improving the Design of Existing Code
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Intermediate developers should start getting a handle on general architectural patterns and what a good architecture looks like, what benefits come from it, etc. This is a solid overview and approach in one book.
Building Microservices: Designing Fine-Grained Systems
A great introduction to thinking about building and dealing with complex systems. It's very broad in it's reach - which is a good thing as an introductory book.
It should help you to start thinking about different ways to approach complex systems.
Patterns of Enterprise Application Architecture
Martin Fowler is one of my favorite developers to learn from. This is for any senior developer who's looking to grow in building more complex and large ("enterprise") systems.
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
One of the key traits of a great senior developer is that they have a very broad knowledge of patterns that address certain problems. This book is fantastic for getting familiar with some advanced messaging patterns. Not to know them all in depth, but to know where to look when you need them.
But, if you do study the patterns closely in this book, you'll level-up your architecture and systems knowledge fast!