In my first years as a self-taught programmer, my main source of information was not books. I read a few, but most of the time, when I needed help, I just looked for a blog post or tried to come up with something myself, often reinventing the wheel in the process.
Obviously, the quality of my programming work suffered, and one day I decided to look for books that could give me a more complete understanding of my subject of interest. After a time, I concluded that I learned much more from books than from any other resource. In this article, I would like to share with you some books I've read in the last few years that have proven extremely relevant to my career as a software developer.
To make my recommendations easier to follow, I have selected just 12 books, which may be organized into the following 4 categories: Agility, Pragmatism, Software Design, and Software Architecture.
|, by Vaughn Vernon: 10 years after The Blue Book was published, Vaughn Vernon revisits DDD patterns, including their evolution and an amazing case study that will forever change the way you think about how to structure your domain and service classes in an object-oriented software.|
|, by Michael Feathers: Legacy code is something we encounter every day, and knowing how to deal with it, refactor it, evolve it, test it and build over it is essential. In this book, Michael Feathers teaches us the best way to cope with these nightmares.|
|, by Roy Osherove: There are many books about unit testing out there, and although I really like Growing Object-Oriented Software Guided By Tests, The Art of Unit Testing is, IMHO, the best book to show the value of unit testing without bringing TDD to the table.|
|Cloud Design Pattern: Prescriptive Architecture Guidance for Cloud Applications (Microsoft patterns & practices), by Alex Homer et al: Before Microservices became the buzzword it is today, this book introduced us to the most relevant patterns when we think about distributed applications.|
|, by Sam Newman: This book presents the concepts we need to understand before even thinking about implementing a Microservice Architecture. It's a must-read for sure.|
|Spring Microservices in Action, by John Cornell: While Sam Newman introduces us to the theory of Microservices Architectures, this book takes us by the hand and walks us through each aspect of implementation and how to actually build them using the Netflix tools that made their way into Spring Cloud, becoming the standard tools for Java Microservices.|
Because everyone is at a different place in their career, I can't definitively say these are the best books for you to read right now--though I'm sure you will lose nothing by reading them--but they have laid a great foundation for me. Because I learned so much through them, reading technical books is something I will continue doing for the rest of my career.
If you want to check out what I'm reading right now, follow me on goodreads.com/rafaelromao, and if you have a book you consider a must-read for every software developer, leave a comment below!
Rafael Romão is a .NET Engineer at Avenue Code. He has studied software development since 1998 and has worked as a software developer since 2002. His main areas of interest are software architecture and design, as well as the development of highly productive teams.