Esses são os livros que eu recomendo sobre design e arquitetura de software. A maior parte deles e atemporal, ou seja, e um conhecimento que você vai levar para o resto da sua carreira, por muito e muitos anos.
O ideal é começar pelos livros que abordam formas de escrever código de melhor qualidade, como o Clean Code, Refactoring e Working Effectively with Legacy Code. Esse último e mais indicado para quem trabalha com um sistema legado, que tem uma dívida técnica alta.
Não vejo sentido em começar a estudar nada relacionado a padrões de projeto se você ainda não sabe escolher um bom nome para uma variavel ou simplificar um condicional. Lembre-se, escrever código vem antes de tomar decisões de design.
Para desenvolvedores Java, Effective Java de Joshua Bloch oferece orientacoes valiosas sobre como aprimorar a qualidade do código. Conforme exploramos novas linguagens, nossa abordagem de codificação evolui, ampliando nossa perspectiva sobre paradigmas e convencoes distintas, razao pela qual Seven Languages in Seven Weeks e altamente recomendado.
Design e Arquitetura
Clean Architecture e Domain-Driven Design aprofundam o conhecimento em design, responsabilidades das camadas e modelagem de domínio. Para DDD, recomenda-se Implementing Domain-Driven Design de Vaughn Vernon e Learning Domain-Driven Design de Vlad Khononov.
Padrões de Projeto
Padrões de projeto essenciais incluem Design Patterns do Gang of Four e Patterns of Enterprise Application Architecture de Martin Fowler. Para avancar, considere Refactoring to Patterns de Joshua Kerievsky.
Arquiteturas Distribuidas
Arquiteturas distribuidas exigem Microservices Patterns de Chris Richardson, cobrindo SAGA, CQRS, API Gateway e Circuit Breaker. Practical Microservices de Ethan Garofolo também e valioso.
Fundamentos de Arquitetura
Dois livros fundamentais sobre arquitetura de software de Neal Ford são Fundamentals of Software Architecture e Software Architecture: The Hard Parts.
Classicos
Mythical Man-Month e The Pragmatic Programmer oferecem perspectivas sobre comunicação, conhecimento e complexidade, apropriados para qualquer fase da carreira.
Sobre o idioma
Quanto ao idioma, iniciantes devem preferir portugues. Leitores avancados podem optar pela versão em ingles para evitar erros de tradução comuns.