The Computing Series

The 16 Engineering Laws

# Law Type The claim
L1 Amdahl’s Law Mathematical Max speedup = 1 / (s + (1−s)/n); parallelism is bounded by the sequential fraction
L2 Moore’s Law (and its limits) Mathematical Transistor density doubled every ~2 years; physical limits now apply
L3 CAP Theorem Mathematical Consistency, Availability, and Partition-tolerance — choose at most two during a partition
L4 Little’s Law Mathematical L = λW; throughput × latency = concurrency; one of the three determines the others
L5 Metcalfe’s Law Mathematical Network value scales as O(n²); adds/removes have non-linear effect
L6 Brooks’s Law Behavioural Adding engineers to a late project makes it later
L7 Hofstadter’s Law Behavioural It always takes longer than you expect, even accounting for Hofstadter’s Law
L8 Parkinson’s Law Behavioural Work expands to fill the time available
L9 Goodhart’s Law Behavioural When a measure becomes a target, it ceases to be a good measure
L10 Conway’s Law Design Software architecture mirrors the communication structure of the team that built it
L11 Gall’s Law Design Complex systems that work evolved from simple systems that worked
L12 Postel’s Law Design Be conservative in what you send; be liberal in what you accept
L13 Law of Leaky Abstractions Design All non-trivial abstractions are leaky
L14 Hyrum’s Law Design Any observable behaviour of an API will be depended upon by someone
L15 Pareto Principle Statistical 80% of effects come from 20% of causes
L16 Linus’s Law Statistical Given enough eyes, all bugs are shallow

Read in the book →