- 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.
- Modern Java in Action: Lambdas, streams, functional and reactive programming
- Effective Java
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.
- Julia Evans: Julia is great at taking things that may seem complicated and breaking the down in an easy to understand way.
- Marcobehler.com: A great resource for deep dives into Java and Spring technologies that have come in handy while I have been brushing up.