Recommended Reading

Every now and then, I get questions about books I recommend on topics. These are the books I can stand behind and recommend (until I find out that there’s a reason I shouldn’t).

Software Architecture

  1. Fundamentals of Software Architecture: An Engineering Approach
  2. Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
  3. Software Architecture Patterns
  4. Communication Patterns: A Guide for Developers and Architects
  5. Strategic Monoliths and Microservices

Systems Thinking

  1. Thinking in Systems: A Primer
  2. Critical Systems Thinking and the Management of Complexity

Software Development

  1. Head First Design Patterns
  2. Inclusive Design Patterns – Coding Accessibility Into Web Design
  3. The Pragmatic Programmer
  4. Communication Patterns: A Guide for Developers and Architects
  5. Software Engineering at Google
  6. Dependency Injection in .NET

Algorithms

  1. Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People

DevOps

  1. Grokking Continuous Delivery
  2. Accelerate
  3. The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

Legacy Code

  1. Refactoring: Improving the Design of Existing Code
  2. Working Effectively with Legacy Code
  3. Beyond Legacy Code

Distributed Systems & Concurrency

  1. Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
  2. Concurrency in C# Cookbook
  3. Grokking Concurrency
  4. Strategic Monoliths and Microservices

Leadership & Business

  1. Leading from the Heart
  2. Never Eat Alone

Domain-Driven Design

  1. Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy
  2. Domain Storytelling
  3. Domain-Driven Design: Tackling Complexity in the Heart of Software
  4. Implementing Domain-Driven Design
  5. Domain-Driven Design Distilled