Library & Resources

Books that shaped my thinking on Software Architecture, AI, and Philosophy.

Fundamentals of Data Engineering: Plan and Build Robust Data Systems

Fundamentals of Data Engineering: Plan and Build Robust Data Systems

Joe Reis, Matt Housley

Fundamentals of Data Engineering moves the focus away from the hype of specific tools to the timeless principles of the Data Engineering Lifecycle. Joe Reis and Matt Housley provide a definitive framework that spans generation, ingestion, storage, transformation, and serving. Crucially, they introduce the concept of 'Undercurrents' cross-cutting concerns like security, DataOps, observability, and orchestration that must be applied at every stage to ensure the system is not just functional, but robust, secure, and maintainable.

Get on Amazon
Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications

Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications

Chip Huyen

Designing Machine Learning Systems offers a comprehensive framework for building production-ready ML applications, arguing that the model algorithm is just a small part of a complex, iterative ecosystem. Chip Huyen covers the end-to-end lifecycle from data engineering and feature management to deployment strategies and monitoring emphasizing that systems must be designed to adapt to constant change. The book serves as a bridge between research and engineering, focusing on reliability, scalability, and the crucial feedback loops necessary to handle data distribution shifts in the real world.

Get on Amazon
AI Systems Performance Engineering: Optimizing Model Training and Inference Workloads with GPUs, CUDA, and PyTorch

AI Systems Performance Engineering: Optimizing Model Training and Inference Workloads with GPUs, CUDA, and PyTorch

Chris Fregly

AI Systems Performance Engineering targets the critical layer below high-level model design, focusing on maximizing hardware efficiency. The book details how to bridge the gap between abstract Python frameworks (like PyTorch) and the underlying hardware realities (GPUs/CUDA). It provides a systematic approach to profiling and resolving bottlenecks specifically distinguishing between Compute-Bound and Memory-Bound operations to optimize both training throughput and inference latency, ensuring that expensive compute resources are effectively utilized.

Get on Amazon
Applied Machine Learning and AI for Engineers: Solve Business Problems That Can't Be Solved Algorithmically

Applied Machine Learning and AI for Engineers: Solve Business Problems That Can't Be Solved Algorithmically

Jeff Prosise

Applied Machine Learning and AI for Engineers is designed to guide traditional software developers into the probabilistic world of AI without getting bogged down in deep mathematical theory. Jeff Prosise focuses on the practical application of libraries like Scikit-learn and TensorFlow, teaching engineers how to solve problems such as computer vision and fraud detection that are impossible to define with static if-then logic. It emphasizes a mindset shift from explicitly programming rules to curating data that allows the machine to learn the rules itself.

Get on Amazon
AI Engineering: Building Applications with Foundation Models

AI Engineering: Building Applications with Foundation Models

Chip Huyen

AI Engineering: Building Applications with Foundation Models defines the emerging discipline that sits between traditional software engineering and data science. The book argues that the challenge has shifted from training models to orchestrating them, focusing on the practicalities of building reliable systems on top of stochastic foundation models. It covers the critical architectural patterns such as RAG (Retrieval-Augmented Generation) versus Fine-Tuning and tackles the hardest part of this new stack: developing rigorous evaluation pipelines (evals) to manage and measure the non-deterministic nature of LLM outputs.

Get on Amazon
Pressman, R: ISE Software Engineering: A Practitioner's Appr

Pressman, R: ISE Software Engineering: A Practitioner's Appr

Bruce Maxim, Roger Pressman

Software Engineering: A Practitioner's Approach serves as an encyclopedic reference for the discipline, defining software engineering as a Layered Technology. Pressman argues that any engineering approach must rest on a bedrock of organizational Quality, which supports the Process (the framework), the Methods (the technical 'how-to' for analysis and design), and the Tools. The book is comprehensive, covering the entire spectrum from project management and process models (like Waterfall and Agile) to advanced topics like cleanroom engineering and component-based development.

Get on Amazon
Observability Engineering: Achieving Production Excellence

Observability Engineering: Achieving Production Excellence

Charity Majors, Liz Fong-Jones, George Miranda

Observability Engineering establishes that traditional monitoring (watching for "known unknowns" via static dashboards) is no longer sufficient for modern, complex distributed systems where failure modes are often unpredictable ("unknown unknowns"). The authors define true observability as the measure of how well you can understand the internal states of a system purely from its external outputs, without shipping new code. The book emphasizes the necessity of high-cardinality data and structured events, guiding teams to move away from aggregate metrics toward an investigative approach that allows for debugging novel issues directly in production.

Get on Amazon
Fundamentals of Software Engineering: From Coder to Engineer

Fundamentals of Software Engineering: From Coder to Engineer

Nathaniel Schutta, Dan Vega

Fundamentals of Software Engineering aims to transition the reader from a 'coder' (who focuses on syntax and implementation) to an 'engineer' (who focuses on systems and processes). It covers the entire Software Development Life Cycle (SDLC), emphasizing that successful software is built through rigorous requirement analysis, formal design modeling, structured testing, and maintenance strategies. The book argues that mastering these foundational processes rather than just the latest framework is what allows developers to build robust, scalable systems that survive the test of time.

Get on Amazon
Software Engineering at Google: Lessons Learned from Programming Over Time

Software Engineering at Google: Lessons Learned from Programming Over Time

Titus Winters, Tom Manshreck, Hyrum Wright

Software Engineering at Google redefines the field by distinguishing 'programming' (writing code) from 'software engineering' (programming integrated over time). The book argues that true engineering requires managing three critical factors: Time, Scale, and Trade-offs. It details the Culture, Processes, and Tools such as the 'Shift Left' testing philosophy and Hyrum's Law that enable Google to maintain a massive, monolithic codebase that remains upgradeable and resilient over decades, rather than just working at the moment of launch.

Get on Amazon
Beyond Software Architecture. Creating and Sustaining Winning Solutions

Beyond Software Architecture. Creating and Sustaining Winning Solutions

Luke Hohmann

Beyond Software Architecture expands the scope of the architect's role from purely technical design to the broader business and product context necessary for market success. Luke Hohmann argues that technical excellence alone is insufficient, urging architects to consider 'market tectonics' and the complete product lifecycle including licensing models, portability, deployment, and upgrade mechanisms. It serves as a guide for aligning technical architecture with business realities to create solutions that are not just well-engineered, but sustainable and profitable.

Get on Amazon
Clean Architecture: A Craftsman's Guide to Software Structure and Design

Clean Architecture: A Craftsman's Guide to Software Structure and Design

Robert C. Martin

Clean Architecture advocates for the rigorous separation of concerns, structuring systems so that core business logic is completely independent of frameworks, databases, and user interfaces. Robert C. Martin introduces the concentric circle model and the critical Dependency Rule, which dictates that source code dependencies must always point inwards, toward high-level policies and entities. This approach ensures systems remain testable and maintainable, effectively treating implementation details (like the web or the database) as plugins that can be swapped without affecting the core application.

Get on Amazon
Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy

Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy

Vlad Khononov

Learning Domain-Driven Design acts as a pragmatic bridge between business strategy and technical implementation, making the often-dense concepts of DDD accessible. Vlad Khononov clearly separates Strategic Design (analyzing business domains, defining Bounded Contexts, and mapping relationships) from Tactical Design (coding patterns like Aggregates and Value Objects). The book argues that understanding the business problem space is critical before writing code, helping architects avoid over-engineering by applying complex patterns only where the business complexity truly warrants them.

Get on Amazon
Software Architecture Metrics

Software Architecture Metrics

Christian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling, Carola Lilienthal, João Rosa, Alexander von Zitzewitz, Rene Weiss, Eoin Woods

Software Architecture Metrics addresses the critical challenge of objectively measuring architectural quality, moving beyond subjective opinions to data-driven analysis. The authors explore how to define and track specific metrics such as coupling, cohesion, and cyclomatic complexity to monitor the structural health of a system over time. A key focus is on implementing fitness functions to automate architectural governance, ensuring that the system remains maintainable and meets its quality goals as it evolves

Get on Amazon
Designing Software Architectures: A Practical Approach

Designing Software Architectures: A Practical Approach

Humberto Cervantes (Autor), Rick Kazman

Designing Software Architectures: A Practical Approach distinguishes itself by offering a prescriptive, step-by-step methodology for the design process itself, rather than just a catalog of patterns. The authors detail the Attribute-Driven Design (ADD) method, which teaches architects how to systematically decompose a system and select specific patterns and tactics to satisfy Quality Attributes. It effectively bridges the gap between theoretical requirements and concrete implementation, providing a repeatable workflow to reduce the uncertainty often found in the early design phases.

Get on Amazon
Software Architecture in Practice

Software Architecture in Practice

Len Bass, Paul Clements, Rick Kazman

Software Architecture in Practice establishes the definitive framework for linking technical decisions to business goals. Written by researchers from the SEI (Software Engineering Institute), it argues that architecture is primarily driven by Quality Attributes (like performance, security, and modifiability) rather than just functional requirements. The book provides rigorous, proven methodologies such as the ATAM (Architecture Tradeoff Analysis Method) for evaluating whether an architecture can actually support the necessary business drivers before a single line of code is written.

Get on Amazon
Facilitating Software Architecture

Facilitating Software Architecture

Andrew Harmel-Law

Facilitating Software Architecture redefines the modern architect not as a top-down decision maker, but as a collaborative facilitator who empowers teams to own their architectural choices. Recognizing that complex systems move too fast for a single "ivory tower" architect, Andrew Harmel-Law introduces the Architectural Advice Process (AAP) a framework for decentralizing decision-making while maintaining alignment. It is essentially a guide on how to stop doing all the architecture yourself and start coaching your teams to build it effectively.

Get on Amazon
Fundamentals of Software Architecture

Fundamentals of Software Architecture

Mark Richards, Neal Ford

Fundamentals of Software Architecture serves as a comprehensive guide for aspiring and practicing architects, defining the role not just by technical depth, but by breadth and trade-off analysis. The authors introduce the 'First Law of Software Architecture' everything is a trade-off and provide a structured approach to identifying architectural characteristics (the '-ilities'), architectural patterns, and component modularity. It bridges the gap between coding and high-level structure, offering a framework to make objective decisions in an industry often driven by subjectivity.

Get on Amazon
Software Architecture: The Hard Parts

Software Architecture: The Hard Parts

Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani

Software Architecture: The Hard Parts focuses on the complex decision-making required for distributed systems, emphasizing that there are no universal 'best practices,' only trade-offs. The authors provide a practical framework for analyzing difficult architectural decisions such as service granularity, data ownership, and workflow orchestration helping architects navigate the critical balance between static coupling and dynamic forces in modern microservices architectures.

Get on Amazon