I love to read all kinds of things. Even more, I love to share what I read with others. Here are some of my favorite books that I have read, both tech-related and non-tech related. As a bonus, I have listed some of my favorite podcasts as well.
The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win: I think the real value of this book is for someone getting into DevOps that has not yet been "in the trenches" so to speak. The author presents a good dive into what stepping into many workplaces is like, that is otherwise hard to get without a few years of experience. However, that does not mean there is nothing to be learned from it by seasoned professionals.
Terraform: Up and Running: Writing Infrastructure as Code: It's hard to be in DevOps without having a solid grasp of infrastructure as code (IAC). This book lays out a clear path using Terraform that spans from getting started to creating and testing your own modules. While the focus is on using Terraform, the lessons can be applied broadly to other IAC tools.
Building Microservices: Designing Fine-Grained Systems: No other book made microservices "click" for me as this one did. The author does a great job of explaining the complexities and trade-offs that come with using microservices. Furthermore, the guidance of which patterns to avoid and which to use is invaluable.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems: Systems design is an often neglected skill in software engineering and even more so in DevOps. However, it is an important skill as data sets continue to grow in size and become harder and harder to manage. This book offers a peek into the impressive scale of major online services and how they operate while presenting ideas that can be integrated into any software system.
Working Effectively with Legacy Code: Most code you are going to work on in your career will be code that is already written by someone else; changing a behavior here, adding a feature there. If you are lucky, this code will follow a set of best practices, be consistent and well designed, and have good test coverage. If you are not lucky, you will need this book. Filled with useful patterns for altering code safely, adding in tests as you go, all while ensuring correct functionality. The information in this book is invaluable. I also strongly agree with the labeling of all code without tests, no matter the age, as legacy code.
Ultimate Go Programming, Second Edition: Alright, so this is not so much a book as a video series. However, it is so good that I could not leave it out. Bill guides you through the Go language from start to finish. Additionally, the focus on "mechanical sympathy" and how understanding how the underlying hardware works with the language is fantastic. Not only will you learn Go, but you will also learn how to write idiomatic, high quality, precise Go.
Effective Python: 90 Specific Ways to Write Better Python: I tend to really like books like this. While one can work in a particular programming language for some time, it can be a challenge to know what is "idiomatic" in said language. Books like this one are short and tend to point out best practices and useful tips that are invaluable and will make your code more readable and easier to work with.
Project Management and Leadership
- Radical Mycology: A Treatise On Seeing And Working With Fungi: If you are looking to geek out on fungi, this is the book for you. This book has to be one of the most unique books I have ever come across. Not only does it tangle you up in a (mycelial) web of information about fungi, but it does so in a way that makes it interesting. Aside from being extremely detailed, it contains beautiful illustrations as well.
- Marcobehler.com: A great resource for deep dives into Java and Spring technologies that have come in handy while I have been brushing up.
A few I enjoy listening to: