Laws of Software Engineering Book Cover

For the first time, over 50 years of software engineering wisdom is collected in one place. This 300-page book brings together 63+ empirical laws and principles that experienced engineers know, but have never been organized until now.

Each law is a standalone read with its origins, real-world examples, and connections to related principles. Some laws support each other, others contradict, and knowing when to apply which is what separates senior engineers from the rest.

Whether you're a developer, tech lead, or engineering manager, these laws will help you make better calls and avoid repeating old mistakes.

Foreword by

Dr. Rebecca Parsons
Dr. Rebecca Parsons CTO Emerita at Thoughtworks, Co-author of Building Evolutionary Architectures
Addy Osmani
Addy Osmani Engineering Director at Google Cloud AI, Author of Leading Effective Engineering Teams

What’s Inside

The book is organized into seven parts, each covering a different aspect of software engineering:

Part I: Architecture & Complexity

  1. Gall's Law
  2. Law of Leaky Abstractions+ George Box's Law
  3. Tesler's Law
  4. CAP Theorem
  5. Hyrum's Law
  6. Second-System Effect
  7. Fallacies of Distributed Computing
  8. Law of Unintended Consequences
  9. Zawinski's Law

Part II: People, Teams & Organizations

  1. Conway's Law+ The Spotify Model
  2. Brooks's Law+ Little's Law
  3. Dunbar's Number
  4. Ringelmann Effect+ The Two-Pizza Rule
  5. Price's Law
  6. Putt's Law
  7. Peter Principle
  8. Bus Factor+ The Dead Sea Effect
  9. Dilbert Principle

Part III: Time, Estimation & Planning

  1. Hofstadter's Law
  2. Parkinson's Law
  3. The Ninety-Ninety Rule
  4. Goodhart's Law+ The Cobra Effect
  5. Gilb's Law
  6. Knuth's Optimization Principle

Part IV: Quality, Maintenance & Evolution

  1. Murphy's / Sod's Law
  2. Postel's Law
  3. Broken Windows Theory
  4. The Boy Scout Rule
  5. Technical Debt
  6. Linus's Law
  7. Kernighan's Law
  8. Testing Pyramid+ The Beyoncé Rule
  9. The Pesticide Paradox
  10. Lehman's Laws
  11. Sturgeon's Law

Part V: Scale, Performance & Growth

  1. Amdahl's Law
  2. Gustafson's Law
  3. Metcalfe's Law+ Sarnoff's & Reed's Laws

Part VI: Coding & Design Principles

  1. DRY Principle
  2. KISS Principle
  3. YAGNI
  4. SOLID Principles
  5. Law of Demeter
  6. Principle of Least Astonishment

Part VII: Decision-Making & Biases

  1. Dunning-Kruger Effect+ Impostor Syndrome
  2. Hanlon's Razor
  3. Occam's Razor
  4. Sunk Cost Fallacy
  5. The Map Is Not the Territory
  6. Confirmation Bias
  7. Hype Cycle & Amara's Law
  8. Lindy Effect
  9. First Principles Thinking
  10. Inversion
  11. Pareto Principle
  12. Cunningham's Law

How to Read the Book

The book is organized into seven standalone parts, each tackling a different dimension of software engineering:

  • Part I: Architecture & Complexity - the fundamental forces that shape how we design systems.
  • Part II: People, Teams & Organizations - how humans work together (and why it’s often harder than the code).
  • Part III: Time, Estimation & Planning - the art and science of predicting what we can’t predict.
  • Part IV: Quality, Maintenance & Evolution - keeping software healthy as it grows and changes.
  • Part V: Scale, Performance & Growth - what happens when things get big, fast, or both.
  • Part VI: Coding & Design Principles - timeless guidance for writing code you won’t regret.
  • Part VII: Decision-Making & Biases - thinking more clearly when the pressure is on.

This is a book you’ll come back to. Start with the laws you already recognize, then dig into the ones that matter most for what you’re working on next. It’s designed as a reference you reach for often, not something you read once and shelve.

Of course, you can read this book from cover to cover, for a complete understanding, but you may find it more useful to go directly to the section that addresses your needs at the moment. Are you building a distributed system? Part I is where you need to begin. Is your team experiencing friction? Part II will assist you. Are you struggling with estimates? Part III has some advice.

Here’s something worth knowing: these laws don’t live in isolation. Some back each other up, others pull in opposite directions. Learning when to reach for which one is often what sets experienced engineers apart. The “Related Laws” sections throughout the book show you how these ideas connect and sometimes clash.

Even if you’ve been in the industry for years, you might find fresh angles on laws you thought you understood. A junior developer and a staff engineer will read Conway’s Law differently, and that’s the point. These principles reveal new layers as your perspective grows.

One more thing: how these laws show up in practice varies a lot depending on where you work. A scrappy startup and a large enterprise will feel Brooks’s Law in very different ways. The real skill isn’t memorizing these laws. It’s recognizing which one applies to your situation right now.

Free printable card deck

The laws as printable flashcards to go with the book. Print them double-sided at home, cut them out, and you have a deck to flip through or quiz a teammate with.

Print the card deck

Reviews

The book was written with significant input and reviews from 20 experienced engineers, architects and managers. Thank you!

Laws of Software Engineering collects the most profound and impactful observations on the dynamics of software and how it evolves in a single volume. Dr. Milan's book is more than a mere collection of wisdom. He also adds real-world industry cases that exemplify each law in practice. Laws of Software Engineering is an invaluable book that should be on the shelf of any technical leader, architect, or aspiring senior developer.

Adam Tornhill
Adam Tornhill Founder at CodeScene, Author of Your Code as a Crime Scene

A delightfully compact book infused with hard-earned lessons of wisdom. You can either spend decades discovering these laws through the scars of experience, or allow Milan to unlock their secrets in a single weekend.


Choose wisely.

Maarten Dalmijn
Maarten Dalmijn Author of Driving Value with Sprint Goals

Milan has done the community an invaluable service by compiling these timeless laws into one accessible resource. What sets this book apart isn't just its comprehensiveness, it's that each law is presented with the clarity and context needed to actually apply it. I wish I'd had this compilation twenty years ago, it would have saved me from learning some of these lessons the hard way.

Matthias Patzak
Matthias Patzak CTO, Author of "All Hands on Tech," Executive in Residence at AWS

Domain-driven design teaches us that the most effective way to tackle complex systems is to work with multiple models, each fine-tuned to address a specific problem. This book takes the same approach at a higher level of abstraction: it provides a catalog of effective thinking models for system design, organizational dynamics, project management, and other aspects of software engineering. Laws of Software Engineering won't make decisions for you, but will provide the clarity to make them deliberately.

Vlad Khononov
Vlad Khononov Author of Balancing Coupling in Software Design and Learning Domain-Driven Design

I love a great reference book and this is one! A single place to learn and remind yourself about the 'laws' and patterns that help us steer software projects toward success. What makes this collection truly great is the inclusion of all the 'socio' patterns, as well as the technical ones. The humans who use and create software systems are the most important part. This book will become a well-thumbed reference on my shelf.

Jacqui Read
Jacqui Read Lead Technical Architect, Author of Communication Patterns: A Guide for Developers and Architects

I've been collecting mental models from tech for 20 years, Conway's Law here, Hyrum's Law from a Google talk, Tesler's Law from the guy at Xerox. They lived in different corners of my brain, never talking to each other. Milan put them in the same room. What struck me wasn't learning new laws, I'd heard most of them. It was seeing them together. That kind of clarity only comes when someone does the hard work of finding the original sources, tracing the connections, and putting them in a sequence that actually flows.


If you've been in tech long enough to learn these lessons the hard way, through failed projects and late-night debugging sessions, this book will feel like someone finally organized your messy notes. Useful whether you're a developer, a manager, or a co-founder. The laws don't care about your title.

Thiago Ghisi
Thiago Ghisi Director of Engineering, ex-Nubank, Apple & American Express

Author has produced something genuinely useful: a Rosetta Stone for the shared vocabulary of experienced software engineering. The book's greatest strength is its curation. Assembling laws that span systems architecture, organisational dynamics, cognitive biases, and coding principles under one roof, and organising them in a way that mirrors how real problems actually emerge in engineering work. As a "shared language" resource to hand to your team - especially one with mixed experience levels - it's hard to beat.

Alex Rashkov
Alex Rashkov Engineering Leader at Meta

Dr Milan Milanovic does an excellent job describing each law, with a good eye for concrete examples and for the places where multiple laws might relate to each other. This book is both a fun read cover-to-cover and a useful piece of reference material for professionals who are looking for guidance in their day-to-day work.

Sean Goedecke
Sean Goedecke Staff Software Engineer, GitHub

Milan's book is one of those rare "long time no see" reads. It took me back to my early days as a programmer, when I read every book I could find, not just to learn concepts, but to discover guidance grounded in real-world experience. This book captures exactly what I loved about my favorite technical reads from that time: practical wisdom delivered without unnecessary complexity.

Marvin Ferreira
Marvin Ferreira Engineering Manager, Uber

This book is ideal for those early in their software careers or looking to strengthen their foundational knowledge, it offers a carefully structured and thoughtfully categorised introduction to core software engineering concepts, enriched with interesting references to established laws.

Luca Mezzalira
Luca Mezzalira Principal Solutions Architect, Amazon

There's a career's worth of wisdom here. Milan is an experienced engineer who has encountered these patterns many times over, and it shows. If you want a practical reference for the forces that shape software systems and teams, this is it.

Owain Lewis
Owain Lewis Director of Software Engineering at Oracle

Laws of Software Engineering does a great job of turning a broad set of familiar ideas into something practical and genuinely useful. What stood out to me is that it does not treat these laws as rigid rules, but as context-dependent mental models you can use when real engineering trade-offs show up, whether that is architecture, delivery, quality, or team design. It feels less like a book you read once and more like a reference you come back to when you are making decisions in the real world.

Ryan Murphy
Ryan Murphy Engineering Manager at Yelp

I enjoyed reading this book, because it distills decades of software engineering reality into a compact, structured reference. It is a practical catalog of laws and principles you return to when systems grow, coordination costs rise, and trade-offs become unavoidable.

Romano Roth
Romano Roth Global Chief of Cybernetic Transformation, Zühlke Group

As AI transforms the very nature of software engineering, this timely collection of enduring principles gives practitioners both the theoretical grounding and the practical toolkit they need to understand their systems and navigate what comes next.

Annie Vella
Annie Vella Distinguished Engineer at Westpac New Zealand

Product teams inevitably fall into traps. Work becomes more complex than necessary, progress slows, and delivering real value starts to feel impossible. While proven practices exist to get teams unstuck, they are scattered and hard to apply in the moment. This book brings them together. It is a practical companion that helps teams break free from the maze and operate as true value maximisers.

David Pereira
David Pereira Product Leader, Author of Untrapping Product Teams

Reading the book felt like touring an almanac of software engineering history. It will help any tech leader formulate a useful abstraction of their viewpoint, while also giving beginners a roadmap to the set of assumptions that define our work today.

Jovan Cukalovic
Jovan Cukalovic Senior Director of Engineering at Nutanix

What makes this book good is that it captures those patterns clearly and without fluff. It's easy to read, easy to understand, and immediately applicable to real work. Each chapter gets to the point, explains why the law matters, and shows how it appears in modern software systems and teams. An absolute must-read for any tech professional, whether a manager or an engineer!

Fiodar Sazanavets
Fiodar Sazanavets Senior AI Engineer, ex-Microsoft

High-performing teams are defined by a culture of shared practices. For those in an early growth phase, this book bridges that gap perfectly. It isn't just a manual on syntax, but a strategic compass for new tech leads and engineering managers. If you approach it with an open mind and consult it when things get "sticky," you'll leverage a massive reservoir of industry experience to navigate your team toward success.

Uros Popovic
Uros Popovic Staff Software Engineer

Laws of Software Engineering brings theory-heavy laws into practical context, helping readers understand the reasoning behind the decisions made when building software and teams. Milan brings together established principles and contextualizes them through years of real-world experience, translating abstract ideas into concrete examples drawn from delivery realities. The result is a grounded, credible perspective that resonates with engineers and leaders who operate under real constraints and trade-offs.

Tosho Trajanov
Tosho Trajanov CTO & Co-founder, Adeva

This book cuts through architectural theory to focus on laws that describe how systems actually behave. Milan presents them clearly, without unnecessary complexity. Having built dozens of systems over the last 15 years, I immediately recognized the value of this book: it belongs on your desk, ready for reference, not gathering dust on a shelf.

Maciej Jędrzejewski
Maciej Jędrzejewski Software Architect, Author of Master Software Architecture

Buy the Book

Most Popular

eBook

Get instant access in your preferred format

PDF ePub

You can send the ePub version to Kindle via Amazon's Send to Kindle tool.

Print

Physical copy shipped worldwide

Paperback Hardcover

Audiobook

Narrated, 6 hr 9 min runtime

M4B MP3

Listen to a sample first:

Then get the full audiobook:

Buy Audiobook

Also available on:

M4B with embedded chapters + per-chapter MP3s. DRM-free. All sales final.

Translations

Laws of Software Engineering is available in other languages:

About the Author

Dr. Milan Milanović

I’m a software engineer and CTO with over 20 years of experience, from startups to large enterprises, including big tech as a contractor. I hold a Ph.D. in Computer Science, have authored over 20 scientific publications with 440+ citations, and am recognized as a Microsoft MVP for Developer Technologies.

With each new role, from developer to architect to CTO, I encountered the same patterns. The same struggles. The same failures. The same hard-won insights that engineers keep rediscovering, often at great cost.

I started collecting these laws and principles for myself, then for my teams. When I started my newsletter, I shared them with the world. Today, my writing on software, architecture, and leadership reaches over 400,000 engineers.

This book represents everything I wish I’d had when I started. I hope it spares you some of the pain I went through.

“Every senior engineer I know learned these laws the hard way. This book exists so you don’t have to.”