Type 1 vs Type 2 Decisions
The brain instinctively treats all failures as threats, demanding excessive caution for reversible decisions (two-way doors).
CounterThe 'One-Way Door' Filter.
“If a decision is easily reversible, ship within 24 hours. Only spend weeks on irreversible 'one-way doors'.”
§ Jeff Bezos, Amazon Shareholder Letter (1997)
Normalization of Deviance
When a minor rule is broken and no disaster occurs, the brain re-classifies deviance as 'normal'.
CounterBroken Windows Theory.
“Do not say 'it worked before' to skip investigation. Fix hacks or document them as high-priority debt.”
§ Diane Vaughan, The Challenger Launch Decision (1996)
Chesterton's Fence
The ego jumps to 'simplify' by deleting legacy code/rules it doesn't immediately understand.
CounterBalance with YAGNI (You Ain't Gonna Need It).
“You are forbidden from removing a fence until you can explain exactly why it was put there.”
§ G. K. Chesterton, The Thing (1929)
Normalcy Bias
In a crisis, the brain defaults to the most frequent explanation. 'It's just a transient error' as systems fail.
CounterPre-mortem / Red Teaming.
“Ask: 'If this were the start of a total collapse, what would the next 10 minutes look like?'”
§ Amanda Ripley, The Unthinkable (2008)
Law of Triviality
People provide more feedback on simple things (naming) than complex ones because everyone understands them.
CounterCore Value Focus.
“If a review spends 80% on style, approve immediately and move to automated linter configs.”
§ C. Northcote Parkinson, Parkinson's Law (1957)
Gall's Law
The delusion that complex systems can be designed top-down from scratch. They are too chaotic.
CounterThe MVP (Minimum Viable Product).
“A complex system that works evolved from a simple system that worked. Start with a working 'Hello World'.”
§ John Gall, Systemantics (1975)
Conway's Law
Software architecture is a map of the org chart. If teams don't talk, their services won't integrate.
CounterInverse Conway Maneuver.
“To get a modular architecture, create independent teams first. Do not fight the org chart with code.”
§ Melvin E. Conway, Datamation (1968)
Hyrum's Law
With enough users, every observable behavior (even bugs) will be depended on by someone.
CounterChaos Engineering.
“Assume every change is breaking once you have users. Use strict versioning and feature flags.”
§ Hyrum Wright, hyrumslaw.com; Software Engineering at Google (2020)
Brooks' Law
Adding people to a late project explodes communication channels quadratically (n(n-1)/2). New people drain veterans.
CounterScope Cutting.
“If a project is late, do not add people. Remove features or push the date.”
§ Fred Brooks, The Mythical Man-Month (1975)
The XY Problem
Users get stuck on a solution (Y) and ask for help with it, forgetting the original problem (X).
CounterFive Whys.
“When someone asks 'How do I do Y?', always reply 'What are you trying to achieve with Y?'”
§ Perl & sysadmin folklore; xyproblem.info
Postel's Law
Assuming everyone follows the spec perfectly leads to brittle failures in distributed systems.
CounterFail-Fast (Internal only).
“Be conservative in what you send and liberal in what you accept.”
§ Jon Postel, RFC 760 / RFC 793 (1980–81)
Hanlon's Razor
Assuming malice or sabotage for bugs/delays when it's usually just lack of sleep or context.
CounterPsychological Safety.
“Never attribute to malice what is adequately explained by lack of context. Debug the system.”
§ Robert J. Hanlon, Murphy's Law Book Two (1980)
Hofstadter's Law
It always takes longer than you expect, even when you take into account Hofstadter's Law.
CounterEvidence-Based Scheduling.
“Double your most conservative estimate, then add 20%. Expect to be wrong.”
§ Douglas Hofstadter, Gödel, Escher, Bach (1979)
Goodhart's Law
When a measure becomes a target, it ceases to be a good measure. Rewards for 'commits' create junk commits.
CounterBalanced Scorecards.
“Never use a single metric to judge performance. Observe outputs, not proxies.”
§ Charles Goodhart (1975); Marilyn Strathern (1997)
Lindy Effect
For non-perishables like software, the longer it has survived, the longer it is likely to survive.
CounterHype Cycle Analysis.
“If you need stability for 10 years, choose a technology that has already been around for 10 years.”
§ Benoit Mandelbrot; Nassim Taleb, Antifragile (2012)
Sunk Cost Fallacy
Continuing to invest in failing projects because 'we've already spent so much.' The brain hates loss.
CounterZero-Based Budgeting.
“Ask: 'If we started today with zero investment, would we choose this path?' If no, kill it.”
§ Hal R. Arkes & Catherine Blumer (1985)
Cargo Cult Engineering
Copying practices of successful companies (Spotify Model) without understanding the 'why'.
CounterFirst Principles Thinking.
“Adopt a tool because you have the exact problem it solves, not because Google uses it.”
§ Richard P. Feynman, Cargo Cult Science (1974)
Amdahl's Law
Optimizing a part has no impact if the bottleneck is elsewhere. Resource waste.
CounterTheory of Constraints.
“Find the 1% of code that takes 90% of time. Only optimize that. Ignore the rest.”
§ Gene Amdahl, AFIPS (1967)
Leaky Abstractions
All non-trivial abstractions leak. You can't use SQL without understanding indexes eventually.
CounterT-Shaped Skills.
“Use abstractions to move fast, but ensure someone understands the layer beneath it.”
§ Joel Spolsky, Joel on Software (2002)
Pareto Principle
80% of bugs come from 20% of code. 80% of value comes from 20% of features.
CounterRuthless Prioritization.
“Identify the 'Critical 20%' and give it 100% of your quality focus.”
§ Vilfredo Pareto (1896); Joseph M. Juran (1951)
Survivorship Bias
We study only the successes that survived and draw conclusions, ignoring the silent graveyard of failures that used the same strategy.
CounterFailure Studies / Post-mortem Culture.
“Before adopting a strategy because 'Company X succeeded with it,' research how many failed using the same approach. The dead don't write blog posts.”
§ Abraham Wald, SRG memo (1943)
Kernighan's Law
"Debugging is twice as hard as writing the code. If you write the cleverest code you can, you are by definition not smart enough to debug it."
CounterKISS (Keep It Simple, Stupid).
“Code cleverness is a liability, not an asset. Write code your future self, sleep-deprived at 3 AM, can still understand in 6 months.”
§ Kernighan & Plauger, The Elements of Programming Style (1978)
The Cobra Effect
A solution designed to fix a problem creates a worse one. A bounty on cobras led people to breed cobras for the reward.
CounterSecond-Order Effects Analysis.
“For every incentive, ask: 'If someone wanted to game this, how would they?' If you find a way, the design is wrong.”
§ Horst Siebert, Der Kobra-Effekt (2001)
Dunbar's Number
Humans can maintain ~150 stable relationships. Teams larger than ~8 experience exponential communication breakdown.
CounterTwo-Pizza Rule / Team Topologies.
“When a team exceeds 7±2 people, split it. If 'information-sharing meetings' multiply, you've exceeded the cognitive limit.”
§ Robin I. M. Dunbar, J. Human Evolution (1992)
Worse is Better
A simpler, 'inferior' design that is easy to implement and adopt will beat a theoretically 'correct' but complex one. Unix beat Lisp. HTTP beat CORBA.
CounterThe Right Thing / Perfectionism.
“A solution 80% correct that ships today will outperform a 100% correct one that ships next year. Optimize for adoption, not elegance.”
§ Richard P. Gabriel, Lisp: Good News, Bad News (1991)
Cunningham's Law
"The best way to get the right answer on the internet is not to ask a question; it's to post the wrong answer." People correct mistakes faster than they answer questions.
CounterSocratic Method.
“When docs are missing, post your best guess of how something works. The expert will appear to correct you faster than if you'd asked directly.”
§ Ward Cunningham; named on Wikipedia (~2010)
Bystander Effect
The more people present, the less likely any single person acts. 'Someone else will handle it.' A page to a group channel often means nobody responds.
CounterExplicit Role Assignment / Incident Commander.
“Never say "Can someone look at this?" Say "@name, you are investigating this." Assign a single, named owner for every incident.”
§ John M. Darley & Bibb Latané, JPSP (1968)
Murphy's Law
Anything that can go wrong, will go wrong — given enough time, traffic, or unexpected input. Designing only for the happy path leaves a system one blip away from collapse.
CounterDefensive Design / Chaos Engineering.
“Treat every external dependency, retry, and timeout as something that will fail in production. Build the failure path before the success path.”
§ Capt. Edward A. Murphy Jr., USAF MX981 (1949)
Boy Scout Rule
Codebases decay because cleanup is always 'someone else's job.' Each engineer absorbs the entropy hit but defers the fix to a future refactor that never lands.
CounterIncremental Hygiene.
“Always leave the code cleaner than you found it. A one-line rename or a deleted dead branch is small enough for the same PR and bends the entropy curve over months.”
§ Robert C. Martin, Clean Code (2008)
Tesler's Law
Every system has irreducible complexity that cannot be removed — only relocated. Hide it from the user and it lands on the developer; hide it from the developer and it lands on the customer at 3 AM.
CounterHonest Layering.
“When a 'simple API' feels too clean, ask: who absorbed the complexity I just removed? If you can't name them, you didn't simplify — you displaced.”
§ Larry Tesler, Xerox PARC / Apple (~1984)
Dunning-Kruger Effect
Lacking expertise also means lacking the meta-skill to recognize incompetence. Novices over-claim; true experts under-claim, assuming others share their understanding.
CounterCalibrated Confidence.
“When someone declares a hard problem "easy," check their domain history before trusting the estimate. Weight the quiet veteran over the confident newcomer.”
§ Justin Kruger & David Dunning, JPSP (1999)
Curse of Knowledge
Once you know a thing, you cannot easily imagine not knowing it. Docs, error messages, and APIs become obvious to the author and opaque to the next reader.
CounterUser Testing / Onboarding Buddies.
“Before shipping docs or an API, have someone unfamiliar attempt the task while you watch silently. Their confusion maps the assumptions you forgot to spell out.”
§ Camerer, Loewenstein & Weber, JPE (1989)
Swiss Cheese Model
Every protective layer has holes. Accidents happen when holes across independent layers happen to align. No single layer is ever sufficient.
CounterDefense in Depth.
“In an incident review, do not stop at the one thing that failed. Enumerate every layer that should have caught it and ask why each hole was open at the same moment.”
§ James Reason, Human Error (1990)
Premature Optimization
"Premature optimization is the root of all evil." Optimizing before measurement wastes hours and entangles hot and cold paths, obstructing the real fix.
CounterProfile First.
“Write the obvious code first. Only optimize hot paths that a profiler proves are bottlenecks. Keep the other 97% simple for the next maintainer.”
§ Donald E. Knuth, Computing Surveys (1974)
Linus's Law
"Given enough eyeballs, all bugs are shallow." Defects invisible to one mind become trivial under many independent perspectives — if the code is actually visible.
CounterRotated Reviewers / Bug Bounties.
“If a bug class keeps slipping through, do not assign the same reviewers more carefully — expose the code to differently-shaped eyes. Rotate, open up, bounty.”
§ Eric S. Raymond, The Cathedral and the Bazaar (1999)
CAP Theorem
A networked store cannot simultaneously guarantee Consistency, Availability, and Partition tolerance. Partitions are not optional, so you are really choosing C or A when one strikes.
CounterPACELC / Tunable Consistency.
“Decide before an outage whether each operation prefers consistency or availability. The partition will happen; the only question is what your system does when it does.”
§ Eric Brewer, PODC keynote (2000); proved by Gilbert & Lynch (2002)
Little's Law
In any stable system, items-in-system (L) equals arrival rate (λ) times time-in-system (W): L = λW. It holds regardless of arrival distribution or service order.
CounterBackpressure / Admission Control.
“To cut latency without adding capacity, cut work-in-progress. Cap concurrent requests — a shorter queue is faster than a faster server.”
§ John D. C. Little, Operations Research (1961)
Two Generals Problem
Two parties on an unreliable channel can never be certain they agree — every message needs an ack, which needs an ack, forever. No fixed exchange guarantees common knowledge.
CounterIdempotency / Eventual Consistency.
“Never assume "I sent it, so they got it." Make every cross-network action safely retryable and idempotent, and reconcile state instead of trusting one round-trip.”
§ Akkoyunlu, Ekanadham & Huber (1975); framed by Jim Gray (1978)
Peter Principle
People are promoted on performance in their current role, not the next one. So everyone rises until they reach a role they are bad at — and there they stay.
CounterDual Career Ladders.
“Do not promote your best engineer into management as a reward. Offer a technical ladder, and evaluate candidates for the role above, not the one they already mastered.”
§ Laurence J. Peter & Raymond Hull, The Peter Principle (1969)
Parkinson's Law
"Work expands so as to fill the time available for its completion." Give a task a week and it takes a week; the same task with a two-day deadline ships in two days.
CounterTimeboxing.
“Set deliberately short timeboxes for open-ended work and review at the deadline. A tight box forces the scoping decisions an open one defers forever.”
§ C. Northcote Parkinson, The Economist (1955)
Wirth's Law
"Software is getting slower more rapidly than hardware is becoming faster." Each hardware gain is absorbed by added layers and features, so perceived speed stays flat.
CounterPerformance Budgets.
“Treat the speed a faster machine buys you as a budget to protect, not a license to spend. Set a performance budget and fail the build when a release regresses against it.”
§ Niklaus Wirth, A Plea for Lean Software (1995)
Ninety-Ninety Rule
"The first 90% of the code takes 90% of the time. The remaining 10% takes the other 90%." The visible work hides a second, equal body of integration and edge cases.
CounterDemo on Real Data.
“When something looks almost done, assume an entire second project remains: hardening, edge cases, integration. Schedule it, do not treat it as a rounding error.”
§ Tom Cargill (Bell Labs); Jon Bentley, Programming Pearls (1985)
Eagleson's Law
Any code you have not looked at for six months might as well have been written by someone else. Your mental model evaporates far faster than the code does.
CounterADRs / Self-Explaining Code.
“Write code and commit messages for the stranger you will become in six months. If a decision is not obvious from the code, record the why — not in your head.”
§ Programming folklore attributed to Peter Eagleson
Hick's Law
Decision time grows logarithmically with the number of choices: T = b·log₂(n+1). More options do not just clutter — they measurably slow every user down.
CounterProgressive Disclosure / Defaults.
“Cut the choices on any screen or API surface to the few that matter; push the rest behind sensible defaults. Fewer doors, faster decisions.”
§ W. E. Hick (1952) & Ray Hyman (1953)
Fitts's Law
Time to reach a target depends on its distance and size: far, small targets are slow and error-prone; near, large ones are fast. Pointing has a measurable cost.
CounterEdges & Corners / Frequency Sizing.
“Make frequent actions big and easy to hit; make rare or destructive ones small and far. Screen edges and corners are infinite targets — put primary actions there.”
§ Paul M. Fitts, J. Experimental Psychology (1954)
Miller's Law
"The Magical Number Seven, Plus or Minus Two." Working memory holds about seven chunks. Cross that and recall collapses — the brain drops items rather than slowing.
CounterChunking / Information Hiding.
“Group related items into a handful of named chunks wherever a person must hold state in their head: arguments, form fields, menu groups, on-call steps.”
§ George A. Miller, Psychological Review (1956)
Fallacies of Distributed Computing
Newcomers to networked code silently assume the network is reliable, latency is zero, bandwidth is infinite, topology is stable, and transport is free — every one of which fails in production.
CounterDesign for Failure.
“Before any cross-process call, name which of the eight assumptions you are making and give each an explicit timeout, retry, and failure path.”
§ L. Peter Deutsch & James Gosling, Sun Microsystems (1994–97)
Ironies of Automation
Automating the routine leaves humans only the rarest, hardest exceptions — while their manual skill atrophies from disuse, exactly when a failing system hands control back.
CounterHuman-in-the-Loop Drills.
“Keep operators sharp with regular game-days and hands-on drills; design handoffs so a human takes over with context, not cold.”
§ Lisanne Bainbridge, Automatica (1983)
Principle of Least Privilege
Every component granted more authority than it needs enlarges the blast radius of any bug or compromise and multiplies what an auditor must reason about.
CounterPsychological Acceptability.
“Default every process, service account, and token to deny; grant only the minimal scopes the job provably needs, and re-audit when the job changes.”
§ Jerome Saltzer & Michael Schroeder, Proc. IEEE (1975)
Kerckhoffs's Principle
A cryptosystem must stay secure even if everything about it except the key is public. Secrecy of the mechanism is brittle: algorithms leak, get reverse-engineered, and get reused.
CounterDefense in Depth.
“Assume the attacker has your source and design. Put all the secret in rotatable keys; never rely on a hidden algorithm to protect anything.”
§ Auguste Kerckhoffs, Journal des sciences militaires (1883)
Gustafson's Law
For a fixed time budget, a bigger machine lets you solve a proportionally bigger problem, so the serial fraction shrinks with scale — speedup grows near-linearly, unlike Amdahl’s fixed-workload pessimism.
CounterAmdahl's Law.
“Before buying more cores, ask whether the problem grows with the hardware. If the workload is fixed, use Amdahl; if it scales, Gustafson applies.”
§ John L. Gustafson, Communications of the ACM (1988)
The Tail at Scale
In a service that fans out to many components, rare per-node slowness (GC pauses, contention, a bad disk) is near-certain to hit some node on every request, so tail latency (p99) dominates the experience even when medians look fine.
CounterRedundancy Has a Price.
“Set SLOs on p99/p99.9, not the mean. Reach for tail-tolerance — hedged requests, micro-partitioning — rather than trying to make every node uniformly fast.”
§ Jeffrey Dean & Luiz Barroso, Communications of the ACM (2013)
Ashby's Law of Requisite Variety
A controller can regulate a system only if it can match the variety of states that system throws at it — only variety can absorb variety. Under-powered control cannot cope with a rich environment.
CounterConstrain the Environment.
“When incidents keep escaping your alerts and runbooks, either add matching response capability or deliberately shrink the state space: fewer configs, stricter inputs.”
§ W. Ross Ashby, An Introduction to Cybernetics (1956)
Law of Demeter
An object that reaches through other objects' internals (a.getB().getC().doThing()) couples itself to the whole dependency chain, so a distant change ripples back and breaks it.
CounterPragmatism over Dogma.
“Only call methods on your direct collaborators, your arguments, objects you create, and your own fields. If you are chaining getters, add a method to the object that owns the data.”
§ Karl Lieberherr & Ian Holland, IEEE Software (1989)
Jevons Paradox
Making a resource cheaper to use per unit lowers its effective price and can raise total consumption instead of lowering it — the efficiency gain gets spent on more usage.
CounterCap the Rebound.
“When you make something cheaper — compute, storage, an internal API — expect demand to balloon. Provision and budget for the rebound instead of assuming net savings.”
§ William Stanley Jevons, The Coal Question (1865)
Normal Accident Theory
In systems that are both interactively complex and tightly coupled, small independent failures interact in ways no designer foresaw and propagate faster than operators can intervene — accidents become structural, not bad luck.
CounterHigh-Reliability Organizations.
“Reduce coupling — buffers, timeouts, bulkheads, circuit breakers — and cut complexity before adding more safety interlocks, which themselves add interactions.”
§ Charles Perrow, Normal Accidents (1984)