Recommended Books
Here are some recommended books sourced from websites and Reddit!
Technological
Clean Code (by Robert C. Martin): this book seeks to teach its readers how to write clean, readable, and easy-to-maintain code.
The Pragmatic Programmer (by Andrew Hunt, David Thomas): another excellent read covering many software engineering aspects.
Code Complete: A Practical Handbook of Software Construction (by Steve McConnell): The book itself is massive, sitting at over 900 pages, and touches many dimensions of software development and best practices. Everything from naming variables to the techniques of a great software engineer is covered by McConnell in Code Complete.
Designing Data Intensive Applications (by Martin Kleppmann): This book helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data.
Effective Java (by Joshua Bloch): Effective Java is a pleasant volume to read through from beginning to end—learning to refine your coding skills as you go.
Domain-Driven Design (by Eric Evans): Explains how to incorporate effective domain modeling into the software development process.
Design Patterns: Elements of Reusable Object-Oriented Software (by Erich Gamma): In the book, the authors go over what patterns are, where they might be applicable, and how they can be used to solve design problems.
DevOps
Accelerate. The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (by Forsgren/Kim/Humble, 2018): using a scientific approach to measure and improve performance in DevOps organizations
The Phoenix Project: A Novel about IT, DevOps, and Helping your Business Win (by Kim/Spafford/Behr, 2013): A classic must-read IT fictional novel inspired by real-world situations and big organizations failing to embrace digitalization and the DevOps movement. People who work in any IT-related role will relate to or find familiar some of the characters in this book. An amusing read that will give you an interesting perspective on productivity and improving tech organizations.
The Unicorn Project: A Novel about Developers, Digital Disruption, and Thriving in the Age of Data (by Kim, 2019): As the sequel to the Phoenix Project, this novel emphasizes issues and challenges that developers and IT folks face while navigating the corporate jungle. It provides the perspective of technical contributors on the difficult journey of adopting digital transformation and modern DevOps practices across an organization.
The DevOps Handbook: How to Create World-Class Agility, Reliability & Security in Technology Organizations (by Kim/Humble/Debois/Willis, 2016): The DevOps Handbook is a practical guide to what DevOps means and how to replicate the success of high-performing companies. Picking it off where The Phoenix Project stops, it explains how organizations can exceed productivity goals by adopting effective practices while balancing agility, reliability, and security.
Site Reliability Engineering
Site Reliability Engineering: How Google Runs Production Systems (by Beyer et al., 2016): This book by Google is considered one of the most influential resources in service management and running production systems at scale. It explains in detail Google’s approach to service Management and what Site Reliability means in practice. A must-read resource for any IT-related role in the modern era.
Site Reliability Workbook: Practical Ways to Implement SRE (by Beyer et al., 2018): Following the footsteps of the previous book, Site Reliability Engineering, this workbook offers practical guidance, proposed practices, implementation of principles, case studies, and experiences from the field while focusing tremendously on reliability and successful outcomes.
Building Secure and Reliable Systems: Best Practices for Designing, Implementing, and Maintaining Systems (by Beyer et al., 2018): Another excellent site reliability book inspired by engineering work, real-world cases, and examples at Google. In this third book from Google on the subject, we are offered insights into system thinking and design, implementation, and maintenance with security and reliability considerations in mind.
Seeking SRE (by Blank-Edelman, 2018): This book builds on top of the main Google SRE books and attempts to analyze and discuss different ways of implementing SRE in practice. It contains interviews and opinions of people with practical SRE experience over the past years and their stories.
Ansible for DevOps (Geerling, 2015), and all of Jeff Geerling's work is generally a solid recommendation for learning Ansible.
Artificial Intelligence/Machine Learning
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow (by Aurélien Géron): The book helps you gain an intuitive understanding of the concepts and tools for building intelligent systems.
Deep Learning with PyTorch (by Eli Stevens, Luca Antiga, and Thomas Viehmann): Deep Learning with PyTorch teaches you to create neural networks and deep learning systems with PyTorch. This practical book quickly gets you to work building a real-world example from scratch: a tumor image classifier.
Pattern Recognition and Machine Learning (by Christopher M. Bishop): This book is written for graduate students or scientists doing interdisciplinary work in related fields. This textbook is an excellent introduction to classical pattern recognition and machine learning (in the sense of parameter estimation).
Machine Learning: A Probabilistic Perspective (by Kevin P. Murphy): This book is a comprehensive introduction to machine learning that uses probabilistic models and inference as a unifying approach
Operating Systems
Three Easy Pieces (by Andrea Arpaci-Dusseau and Remzi Arpaci-Dusseau): The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence.
Operating Systems Concepts (by Abraham Silberschatz and Peter Galvin): This is a book on operating system design, multiprogramming, threads and all the great things that go on inside your computer while it runs an operating system.
Computer Networking
Computer Networking: A Top-Down Approach (by James F. Kurose / Keith W. Ross): This textbook describes the architecture and function of the application, transport, network, and link layers of the internet protocol stack
Network Warrior (by Gary A. Donahue): Network Warrior provides a thorough and practical introduction to the entire network infrastructure, from cabling to the routers.
Culture/Organization/Behavioural
TIP
Coding is not as important as you go up the ladder. People and processes matter a lot more these days. Even if you aren't in management, working on your leadership skills helps as a senior developer.
The Mythical Man-Month (by Frederick P Brooks): while many of the books on our list here are highly technical, this one is a little more philosophical and thought-provoking. The book's primary theme centers around project management and the author's self-titled Brook's Law, which states that" "adding manpower to a late software project makes it later."
Peopleware: Productive Projects and Teams (by Tom DeMarco): However, Peopleware: Productive Projects and Teams is a great one that every software engineer should read, even if you're not directly responsible for managing teams. This book by Tom DeMarco takes a deep dive into the leadership qualities necessary to drive and complete software projects in the modern economy. It is filled with excellent, practical advice on the subject.
Team Topologies (by Skelton/Pais): book about team organization in the context of larger DevOps/Agile organizations.
Staff Engineer: Leadership Beyond The Management Track (by Will Larson): Learn how to navigate the technical leadership career while staying as an individual contributor. Understand the mechanics and consequences of moving from Senior Engineer to Staff Engineer.
The Manager's Path (by Camille Fournier): This book is ideal whether you’re a New manager, a mentor, or a more experienced leader looking for fresh advice. Pick up this book and learn how to become a better manager and leader in your organization.
Hybrid
Continuous Delivery (by Humble/Farley, 2010): The book that started it all. More of a reference book than something you read cover to cover, but an essential in any library.
Refactoring: Improving the Design of Existing Code (by Martin Fowler): Refactoring is another older but hugely i:%snfluential software engineering book. It is considered the seminal text on the subject of code refactoring or restructuring code without changing its behavior.
The Phoenix Project (by Gene Kim, George Spafford, and Kevin Behr): This book is a gripping read that captures brilliantly the dilemmas that face companies which depend on IT, and offers real-world solutiontaff en
A Philosophy of Software Design (by John Ousterhout): This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently.
Software Engineering at Google (by Titus Winters, Tom Manshreck and Hyrum Wright): Software Engineering at Google book is not about programming, per se, but about the engineering practices utilized at Google to make their codebase sustainable and healthy.
Modern Software Engineering (by David Farley): This book helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues.