1<!doctype html><html lang=en-us><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Laws of Software Engineering - Poster | Laws of Software Engineering</title><meta name=description content="A compact printable poster of all software engineering laws"><link rel=canonical href=https://lawsofsoftwareengineering.com/poster/><meta property="og:type" content="website"><meta property="og:title" content="Laws of Software Engineering - Poster | Laws of Software Engineering"><meta property="og:description" content="A compact printable poster of all software engineering laws"><meta property="og:url" content="https://lawsofsoftwareengineering.com/poster/"><link rel=stylesheet href=/css/fonts.min.2111e28bd88d58770869dd8c2a03dfbf822f203d56c89ea27d8cd36697a0cb81.css integrity="sha256-IRHii9iNWHcIad2MKgPfv4IvID1WyJ6ifYzTZpegy4E=" crossorigin=anonymous><style>:root{--color-primary:#8755FF;--color-dark:#1F2535;--color-bg:#FFFFFF;--color-tile-alt:#ece4ff;--color-tile-white:#FFFFFF;--color-text:#1a1a2e;--color-text-muted:#555;--color-number:#8755FF;--color-border:#efefef;--font:'Inter', -apple-system, BlinkMacSystemFont, sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);background:#f0f0f0;color:var(--color-text);-webkit-font-smoothing:antialiased}.poster-wrapper{max-width:1400px;margin:0 auto;padding:20px}.controls-bar{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:20px;padding:12px 20px;background:#fff;border-radius:10px;border:1px solid var(--color-border);box-shadow:0 2px 8px rgba(0,0,0,6%)}.controls-bar .btn{background:var(--color-primary);color:#fff;border:none;padding:10px 22px;font-size:.9rem;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s ease;font-family:var(--font)}.controls-bar .btn:hover{background:#96f;transform:translateY(-1px)}.controls-bar a{color:var(--color-text);text-decoration:none;font-size:.9rem}.controls-bar a:hover{color:var(--color-primary)}.poster{background:var(--color-bg);border-radius:12px;overflow:hidden;box-shadow:0 4px 24px rgba(0,0,0,.1)}.poster-header{text-align:center;padding:32px 40px 24px;background:var(--color-bg);border-bottom:3px solid var(--color-primary);position:relative}.poster-header-top{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:4px}.poster-header .the-prefix{font-size:4rem;font-weight:900;color:var(--color-dark);line-height:1;letter-spacing:-.03em}.poster-header .the-number{font-size:7rem;font-weight:900;color:var(--color-primary);line-height:.85;letter-spacing:-.04em}.poster-header .title-block{text-align:left}.poster-header .title-top{font-size:1.8rem;font-weight:800;color:var(--color-dark);text-transform:uppercase;letter-spacing:.15em;line-height:1.1}.poster-header .title-main{font-size:2.6rem;font-weight:900;color:var(--color-primary);text-transform:uppercase;letter-spacing:.05em;line-height:1.05}.poster-header .subtitle{font-size:.82rem;color:var(--color-text-muted);margin-top:10px;letter-spacing:.03em}.poster-logo{width:52px;height:auto;opacity:.9}.book-cover{position:absolute;right:40px;top:50%;transform:translateY(-50%);height:140px;width:auto;border-radius:4px;box-shadow:2px 4px 12px rgba(0,0,0,.15)}.poster-grid{display:grid;grid-template-columns:repeat(8,1fr);border-top:1px solid var(--color-border)}.tile{position:relative;padding:16px 10px 12px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);text-decoration:none;color:var(--color-text);backface-visibility:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;will-change:transform;cursor:pointer}.tile:nth-child(8n){border-right:none}.tile.alt{background:var(--color-tile-alt)}.tile:hover{background:#f0eaff;transform:translateY(-2px);z-index:5;box-shadow:0 4px 20px rgba(135,85,255,.2)}.tile-number{position:absolute;top:10px;left:10px;width:26px;height:26px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:.72rem;font-weight:800;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 4px rgba(135,85,255,.3)}.tile-icon{width:68px;height:68px;margin-top:10px;margin-bottom:6px;display:flex;align-items:center;justify-content:center}.tile-icon svg{width:68px;height:68px}.tile-icon svg *{fill:#5a5a7a!important;stroke:#5a5a7a!important}.tile-icon svg>circle:first-child{display:none!important}.tile-title{font-size:.7rem;font-weight:700;color:var(--color-dark);line-height:1.25;margin-bottom:5px}.tile-desc{font-size:.65rem;color:var(--color-text-muted);line-height:1.45;flex:1;overflow:hidden}.tile-desc strong,.tile-desc b{color:var(--color-dark);font-weight:700}.poster-footer{display:flex;align-items:center;justify-content:center;gap:8px;padding:20px 24px;background:var(--color-bg);border-top:3px solid var(--color-primary);font-size:.82rem;color:var(--color-text-muted)}.poster-footer a{color:var(--color-primary);text-decoration:none;font-weight:700}.poster-footer .author-name{font-weight:800;color:var(--color-dark)}.poster-footer .separator{color:var(--color-border);margin:0 4px}.poster-footer .site-url{display:inline-block;padding:3px 12px;background:var(--color-primary);color:#fff;border-radius:4px;font-weight:700;font-size:.75rem;letter-spacing:.01em}@media print{@page{size:A2 landscape;margin:6mm}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body{background:#fff!important}.poster-wrapper{padding:0;max-width:none}.controls-bar{display:none!important}.poster{box-shadow:none;border-radius:0}.poster-header{padding:10px 16px 8px}.poster-header .the-prefix{font-size:1.8rem}.poster-header .the-number{font-size:2.8rem}.poster-header .title-top{font-size:.8rem}.poster-header .title-main{font-size:1.2rem}.poster-header .subtitle{font-size:.6rem;margin-top:4px}.poster-header-top{gap:12px}.poster-logo{width:28px}.book-cover{height:70px;right:16px}.tile{min-height:0;padding:8px 5px 6px;page-break-inside:avoid}.tile:hover{transform:none;box-shadow:none}.tile-number{width:16px;height:16px;font-size:.5rem;top:4px;left:4px;box-shadow:none}.tile-icon{width:38px;height:38px;margin-top:2px;margin-bottom:2px}.tile-icon svg{width:38px;height:38px}.tile-title{font-size:.48rem}.tile-desc{font-size:.38rem;line-height:1.3}.poster-footer{padding:6px 16px;font-size:.55rem}.poster-header{border-bottom-width:2px}.poster-footer{border-top-width:2px}}@media screen and (max-width:1200px){.poster-grid{grid-template-columns:repeat(6,1fr)}}
1@media screen and (max-width:900px){.poster-grid{grid-template-columns:repeat(4,1fr)}.poster-header .the-prefix{font-size:2.5rem}.poster-header .the-number{font-size:4rem}.poster-header .title-main{font-size:1.8rem}.book-cover{height:100px;right:20px}}@media screen and (max-width:600px){.poster-grid{grid-template-columns:repeat(2,1fr)}.poster-header .the-prefix{font-size:2rem}.poster-header .the-number{font-size:3rem}.poster-header .title-top{font-size:1rem}.poster-header .title-main{font-size:1.4rem}.poster-header-top{flex-direction:column;gap:8px}.poster-header .title-block{text-align:center}.book-cover{position:static;transform:none;height:60px;margin-top:12px}.tile{min-height:140px}.poster-footer{flex-wrap:wrap;justify-content:center;text-align:center;padding:16px}}</style></head><body><div class=poster-wrapper><div class=controls-bar><button class="btn js-print">🖨 Print / Save as PDF</button> 2<a href=/>← Back to Laws</a></div><div class=poster><header class=poster-header><div class=poster-header-top><img src=/images/logo.png alt=Logo class=poster-logo><div class=the-prefix>THE</div><div class=the-number>56</div><div class=title-block><div class=title-top>Laws of</div><div class=title-main>Software Engineering</div></div></div><p class=subtitle>Essential principles, laws and mental models that shape how we build software</p><img src=/images/cover.png alt="The Laws of Software Engineering" class=book-cover></header><div class=poster-grid><a href=https://lawsofsoftwareengineering.com/laws/conways-law/ class=tile title="Conway's Law: Organizations design systems that mirror their own communication structure."><span class=tile-number>1</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="30" r="8" fill="#1F2535"/><circle cx="35" cy="60" r="8" fill="#1F2535"/><circle cx="85" cy="60" r="8" fill="#1F2535"/><circle cx="60" cy="90" r="8" fill="#1F2535"/><line x1="60" y1="38" x2="60" y2="52" stroke="#1F2535" stroke-width="2"/><line x1="43" y1="60" x2="52" y2="60" stroke="#1F2535" stroke-width="2"/><line x1="68" y1="60" x2="77" y2="60" stroke="#1F2535" stroke-width="2"/><line x1="60" y1="68" x2="60" y2="82" stroke="#1F2535" stroke-width="2"/></svg></div><div class=tile-title>Conway's Law</div><div class=tile-desc>Organizations design systems that mirror their own communication structure.</div></a><a href=https://lawsofsoftwareengineering.com/laws/premature-optimization/ class="tile alt" title="Premature Optimization (Knuth's Optimization Principle): Premature optimization is the root of all evil."><span class=tile-number>2</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M35 60H60L55 40" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/><circle cx="60" cy="60" r="5" fill="#1F2535"/></svg></div><div class=tile-title>Premature Optimization (Knuth's Optimization Principle)</div><div class=tile-desc>Premature optimization is the root of all evil.</div></a><a href=https://lawsofsoftwareengineering.com/laws/hyrums-law/ class=tile title="Hyrum's Law: With a sufficient number of API users, all observable behaviors of your system will be depended on by somebody."><span class=tile-number>3</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><line x1="25" y1="55" x2="95" y2="55" stroke="#1F2535" stroke-width="1.5" stroke-dasharray="4,3" opacity=".6"/><polygon points="60,30 50,55 70,55" fill="#1F2535"/><polygon points="60,90 40,55 80,55" fill="#1F2535" opacity=".4"/><circle cx="45" cy="65" r="3" fill="#1F2535" opacity=".7"/><circle cx="75" cy="70" r="3" fill="#1F2535" opacity=".7"/><circle cx="55" cy="78" r="3" fill="#1F2535" opacity=".7"/></svg></div><div class=tile-title>Hyrum's Law</div><div class=tile-desc>With a sufficient number of API users, all observable behaviors of your system will be depended on by somebody.</div></a><a href=https://lawsofsoftwareengineering.com/laws/boy-scout-rule/ class="tile alt" title="The Boy Scout Rule: Leave the code better than you found it."><span class=tile-number>4</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M50 75l5-30H65l5 30" stroke="#1F2535" stroke-width="3" fill="none" stroke-linecap="round"/>
2<path d="M45 75H75" stroke="#1F2535" stroke-width="3" stroke-linecap="round"/><circle cx="60" cy="38" r="4" fill="#1F2535"/><path d="M40 55l5-5" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M80 55l-5-5" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M40 65l5-3" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M80 65l-5-3" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/></svg></div><div class=tile-title>The Boy Scout Rule</div><div class=tile-desc>Leave the code better than you found it.</div></a><a href=https://lawsofsoftwareengineering.com/laws/yagni/ class=tile title="YAGNI (You Aren't Gonna Need It): Don't add functionality until it is necessary."><span class=tile-number>5</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="35" y="45" width="30" height="30" rx="3" fill="#1F2535"/><rect x="70" y="45" width="20" height="14" rx="2" fill="#1F2535" opacity=".3"/><rect x="70" y="62" width="20" height="14" rx="2" fill="#1F2535" opacity=".3"/><path d="M68 43 92 78" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round"/><path d="M92 43 68 78" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round"/><path d="M42 60l6 6L58 52" stroke="#fff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></div><div class=tile-title>YAGNI (You Aren't Gonna Need It)</div><div class=tile-desc>Don't add functionality until it is necessary.</div></a><a href=https://lawsofsoftwareengineering.com/laws/brooks-law/ class="tile alt" title="Brooks's Law: Adding manpower to a late software project makes it later."><span class=tile-number>6</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="35" r="7" fill="#1F2535"/><circle cx="40" cy="55" r="7" fill="#1F2535"/><circle cx="80" cy="55" r="7" fill="#1F2535"/><circle cx="45" cy="80" r="7" fill="#1F2535"/><circle cx="75" cy="80" r="7" fill="#1F2535"/><line x1="60" y1="42" x2="45" y2="50" stroke="#1F2535" stroke-width="1.5" opacity=".7"/><line x1="60" y1="42" x2="75" y2="50" stroke="#1F2535" stroke-width="1.5" opacity=".7"/><line x1="47" y1="55" x2="73" y2="55" stroke="#1F2535" stroke-width="1.5" opacity=".7"/><line x1="42" y1="62" x2="47" y2="73" stroke="#1F2535" stroke-width="1.5" opacity=".7"/><line x1="78" y1="62" x2="73" y2="73" stroke="#1F2535" stroke-width="1.5" opacity=".7"/><line x1="52" y1="80" x2="68" y2="80" stroke="#1F2535" stroke-width="1.5" opacity=".7"/><line x1="60" y1="42" x2="48" y2="74" stroke="#1F2535" stroke-width="1.5" opacity=".5"/><line x1="60" y1="42" x2="72" y2="74" stroke="#1F2535" stroke-width="1.5" opacity=".5"/><line x1="47" y1="55" x2="70" y2="77" stroke="#1F2535" stroke-width="1.5" opacity=".5"/><line x1="73" y1="55" x2="50" y2="77" stroke="#1F2535" stroke-width="1.5" opacity=".5"/></svg></div><div class=tile-title>Brooks's Law</div><div class=tile-desc>Adding manpower to a late software project makes it later.</div></a><a href=https://lawsofsoftwareengineering.com/laws/galls-law/ class=tile title="Gall's Law: A complex system that works is invariably found to have evolved from a simple system that worked."><span class=tile-number>7</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M60 85V55" stroke="#1F2535" stroke-width="3"/><path d="M60 55Q45 45 50 30 65 40 60 55" fill="#1F2535"/><path d="M60 65Q75 55 80 40 60 50 60 65" fill="#1F2535"/></svg></div><div class=tile-title>
2Gall's Law</div><div class=tile-desc>A complex system that works is invariably found to have evolved from a simple system that worked.</div></a><a href=https://lawsofsoftwareengineering.com/laws/law-of-leaky-abstractions/ class="tile alt" title="The Law of Leaky Abstractions: All non-trivial abstractions, to some degree, are leaky."><span class=tile-number>8</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M60 30Q80 55 80 70q0 20-20 20T40 70q0-15 20-40" fill="#1F2535"/><path d="M50 70q0-10 10-15" stroke="#fff" stroke-width="2" fill="none" opacity=".5"/></svg></div><div class=tile-title>The Law of Leaky Abstractions</div><div class=tile-desc>All non-trivial abstractions, to some degree, are leaky.</div></a><a href=https://lawsofsoftwareengineering.com/laws/teslers-law/ class="tile alt" title="Tesler's Law (Conservation of Complexity): Every application has an inherent amount of irreducible complexity that can only be shifted, not eliminated."><span class=tile-number>9</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><line x1="60" y1="35" x2="60" y2="85" stroke="#1F2535" stroke-width="3"/><line x1="35" y1="45" x2="85" y2="45" stroke="#1F2535" stroke-width="3"/><path d="M35 45l5 15H30z" fill="#1F2535"/><path d="M85 45l5 15H80z" fill="#1F2535"/><rect x="50" y="80" width="20" height="5" fill="#1F2535"/></svg></div><div class=tile-title>Tesler's Law (Conservation of Complexity)</div><div class=tile-desc>Every application has an inherent amount of irreducible complexity that can only be shifted, not eliminated.</div></a><a href=https://lawsofsoftwareengineering.com/laws/cap-theorem/ class=tile title="CAP Theorem: A distributed system can guarantee only two of: consistency, availability, and partition tolerance."><span class=tile-number>10</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M60 30 90 80H30z" stroke="#1F2535" stroke-width="3" fill="none"/><circle cx="60" cy="30" r="5" fill="#1F2535"/><circle cx="30" cy="80" r="5" fill="#1F2535"/><circle cx="90" cy="80" r="5" fill="#1F2535"/><text x="60" y="38" text-anchor="middle" fill="#1F2535" font-size="8" font-weight="bold">C</text><text x="28" y="92" text-anchor="middle" fill="#1F2535" font-size="8" font-weight="bold">A</text><text x="92" y="92" text-anchor="middle" fill="#1F2535" font-size="8" font-weight="bold">P</text></svg></div><div class=tile-title>CAP Theorem</div><div class=tile-desc>A distributed system can guarantee only two of: consistency, availability, and partition tolerance.</div></a><a href=https://lawsofsoftwareengineering.com/laws/second-system-effect/ class="tile alt" title="Second-System Effect: Small, successful systems tend to be followed by overengineered, bloated replacements."><span class=tile-number>11</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="20" y="50" width="20" height="20" rx="2" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M45 60h8" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M50 56l4 4-4 4" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/><rect x="60" y="35" width="35" height="50" rx="2" stroke="#1F2535" stroke-width="2" fill="none"/><rect x="65" y="40" width="10" height="8" fill="#1F2535" opacity=".6"/><rect x="80" y="40" width="10" height="8" fill="#1F2535" opacity=".6"/><rect x="65" y="52" width="10" height="8" fill="#1F2535" opacity=".6"/><rect x="80" y="52" width="10" height="8" fill="#1F2535" opacity=".6"/><rect x="65" y="64" width="10" height="8" fill="#1F2535" opacity=".6"/><rect x="80" y="64" width="10" height="8" fill="#1F2535" opacity=".6"/><rect x="65" y="76" width="25" height="6" fill="#1F2535" opacity=".4"/></svg></div><div class=tile-title>Second-System Effect</div><div class=tile-desc>Small, successful systems tend to be followed by overengineered, bloated replacements.</div></a><a href=https://lawsofsoftwareengineering.com/laws/fallacies-of-distributed-computing/ class=tile title="Fallacies of Distributed Computing: A set of eight false assumptions that new distributed system designers often make."><span class=tile-number>12</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="35" r="8" fill="#1F2535"/><circle cx="35" cy="60" r="8" fill="#1F2535"/><circle cx="85" cy="60" r="8" fill="#1F2535"/><circle cx="45" cy="85" r="8" fill="#1F2535"/><circle cx="75" cy="85" r="8" fill="#1F2535"/><path d="M60 43v9" stroke="#1F2535" stroke-width="2" stroke-dasharray="3 2"/><path d="M43 60h9" stroke="#1F2535" stroke-width="2" stroke-dasharray="3 2"/><path d="M68 60h9" stroke="#1F2535" stroke-width="2" stroke-dasharray="3 2"/><path d="M50 78l5-8" stroke="#1F2535" stroke-width="2" stroke-dasharray="3 2"/><path d="M70 78l-5-8" stroke="#1F2535" stroke-width="2" stroke-dasharray="3 2"/><path d="M54 56l4 4m0-4-4 4" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><circle cx="60" cy="60" r="12" stroke="#1F2535" stroke-width="2" fill="none" stroke-dasharray="4 2"/></svg></div><div class=tile-title>Fallacies of Distributed Computing</div><div class=tile-desc>A set of eight false assumptions that new distributed system designers often make.</div></a><a href=https://lawsofsoftwareengineering.com/laws/law-of-unintended-consequences/ class="tile alt" title="Law of Unintended Consequences: Whenever you change a complex system, expect surprise."><span class=tile-number>13</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="60" r="6" fill="#1F2535"/><circle cx="60" cy="60" r="15" stroke="#1F2535" stroke-width="2" fill="none" opacity=".8"/><circle cx="60" cy="60" r="25" stroke="#1F2535" stroke-width="2" fill="none" opacity=".6"/><circle cx="60" cy="60" r="35" stroke="#1F2535" stroke-width="2" fill="none" opacity=".4"/><circle cx="60" cy="25" r="3" fill="#1F2535" opacity=".7"/><circle cx="85" cy="45" r="3" fill="#1F2535" opacity=".7"/><circle cx="35" cy="75" r="3" fill="#1F2535" opacity=".7"/><circle cx="90" cy="70" r="3" fill="#1F2535" opacity=".5"/></svg></div><div class=tile-title>Law of Unintended Consequences</div><div class=tile-desc>Whenever you change a complex system, expect surprise.</div></a><a href=https://lawsofsoftwareengineering.com/laws/zawinskis-law/ class=tile title="Zawinski's Law: Every program attempts to expand until it can read mail."><span class=tile-number>14</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="30" y="42" width="60" height="40" rx="3" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M30 45 60 65 90 45" stroke="#1F2535" stroke-width="2" fill="none"/><text x="22" y="38" fill="#1F2535" font-size="14" font-weight="bold">+</text><text x="92" y="38" fill="#1F2535" font-size="14" font-weight="bold">+</text><text x="22" y="92" fill="#1F2535" font-size="14" font-weight="bold">+</text><text x="92" y="92" fill="#1F2535" font-size="14" font-weight="bold">+</text><text x="57" y="98" fill="#1F2535" font-size="12" font-weight="bold">+</text></svg></div><div class=tile-title>Zawinski's Law</div><div class=tile-desc>Every program attempts to expand until it can read mail.</div></a><a href=https://lawsofsoftwareengineering.com/laws/dunbars-number/ class="tile alt" title="Dunbar's Number: There is a cognitive limit of about 150 stable relationships one person can maintain."><span class=tile-number>15</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="45" r="8" fill="#1F2535"/><path d="M50 70q10-10 20 0" stroke="#1F2535" stroke-width="3" fill="none"/><circle cx="35" cy="40" r="5" fill="#1F2535" opacity=".7"/><circle cx="85" cy="40" r="5" fill="#1F2535" opacity=".7"/><circle cx="30" cy="60" r="5" fill="#1F2535" opacity=".6"/><circle cx="90" cy="60" r="5" fill="#1F2535" opacity=".6"/><circle cx="35" cy="80" r="5" fill="#1F2535" opacity=".5"/><circle cx="85" cy="80" r="5" fill="#1F2535" opacity=".5"/><circle cx="60" cy="85" r="5" fill="#1F2535" opacity=".5"/><text x="60" y="105" text-anchor="middle" fill="#1F2535" font-size="12" font-weight="bold">150</text></svg></div><div class=tile-title>Dunbar's Number</div><div class=tile-desc>There is a cognitive limit of about 150 stable relationships one person can maintain.</div></a><a href=https://lawsofsoftwareengineering.com/laws/ringelmann-effect/ class=tile title="The Ringelmann Effect: Individual productivity decreases as group size increases."><span class=tile-number>16</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M25 60H95" stroke="#1F2535" stroke-width="4" stroke-linecap="round"/><circle cx="30" cy="45" r="6" fill="#1F2535"/><path d="M30 51V65M25 55H35" stroke="#1F2535" stroke-width="2"/><circle cx="70" cy="45" r="5" fill="#1F2535" opacity=".6"/><circle cx="82" cy="45" r="5" fill="#1F2535" opacity=".5"/><circle cx="94" cy="45" r="5" fill="#1F2535" opacity=".4"/><path d="M50 80H70" stroke="#1F2535" stroke-width="2"/><path d="M67 77l3 3-3 3" stroke="#1F2535" stroke-width="2" fill="none"/><rect x="45" y="88" width="8" height="15" fill="#1F2535" opacity=".8"/><rect x="56" y="92" width="8" height="11" fill="#1F2535" opacity=".6"/><rect x="67" y="96" width="8" height="7" fill="#1F2535" opacity=".4"/></svg></div><div class=tile-title>The Ringelmann Effect</div><div class=tile-desc>Individual productivity decreases as group size increases.</div></a><a href=https://lawsofsoftwareengineering.com/laws/prices-law/ class=tile title="Price's Law: The square root of the total number of participants does 50% of the work."><span class=tile-number>17</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M25 65H35L45 85 65 35H95" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/><text x="78" y="55" fill="#1F2535" font-size="18" font-weight="bold">N</text><circle cx="40" cy="95" r="4" fill="#1F2535"/><circle cx="52" cy="95" r="4" fill="#1F2535"/><circle cx="64" cy="95" r="4" fill="#1F2535" opacity=".5"/><circle cx="76" cy="95" r="4" fill="#1F2535" opacity=".3"/><circle cx="88" cy="95" r="4" fill="#1F2535" opacity=".2"/></svg></div><div class=tile-title>Price's Law</div><div class=tile-desc>The square root of the total number of participants does 50% of the work.</
2div></a><a href=https://lawsofsoftwareengineering.com/laws/putts-law/ class="tile alt" title="Putt's Law: Those who understand technology don't manage it, and those who manage it don't understand it."><span class=tile-number>18</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="30" r="8" fill="#1F2535"/><text x="60" y="34" text-anchor="middle" fill="#fff" font-size="10" font-weight="bold">?</text><line x1="60" y1="38" x2="40" y2="55" stroke="#1F2535" stroke-width="2"/><line x1="60" y1="38" x2="80" y2="55" stroke="#1F2535" stroke-width="2"/><circle cx="40" cy="65" r="7" fill="#1F2535"/><circle cx="80" cy="65" r="7" fill="#1F2535"/><text x="40" y="69" text-anchor="middle" fill="#fff" font-size="9" font-weight="bold">â</text><text x="80" y="69" text-anchor="middle" fill="#fff" font-size="9" font-weight="bold">â</text><circle cx="30" cy="90" r="5" fill="#1F2535" opacity=".7"/><circle cx="50" cy="90" r="5" fill="#1F2535" opacity=".7"/><circle cx="70" cy="90" r="5" fill="#1F2535" opacity=".7"/><circle cx="90" cy="90" r="5" fill="#1F2535" opacity=".7"/></svg></div><div class=tile-title>Putt's Law</div><div class=tile-desc>Those who understand technology don't manage it, and those who manage it don't understand it.</div></a><a href=https://lawsofsoftwareengineering.com/laws/peter-principle/ class=tile title="Peter Principle: In a hierarchy, every employee tends to rise to their level of incompetence."><span class=tile-number>19</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><line x1="45" y1="25" x2="45" y2="95" stroke="#1F2535" stroke-width="3"/><line x1="75" y1="25" x2="75" y2="95" stroke="#1F2535" stroke-width="3"/><line x1="45" y1="35" x2="75" y2="35" stroke="#1F2535" stroke-width="2"/><line x1="45" y1="50" x2="75" y2="50" stroke="#1F2535" stroke-width="2"/><line x1="45" y1="65" x2="75" y2="65" stroke="#1F2535" stroke-width="2"/><line x1="45" y1="80" x2="75" y2="80" stroke="#1F2535" stroke-width="2"/><circle cx="60" cy="28" r="7" fill="#1F2535"/><path d="M56 24l8 8m0-8-8 8" stroke="#fff" stroke-width="1.5" stroke-linecap="round"/><path d="M58 78l2 4 6-8" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M58 63l2 4 6-8" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M85 70V40" stroke="#1F2535" stroke-width="2"/><path d="M81 44l4-6 4 6" stroke="#1F2535" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>Peter Principle</div><div class=tile-desc>In a hierarchy, every employee tends to rise to their level of incompetence.</div></a><a href=https://lawsofsoftwareengineering.com/laws/bus-factor/ class="tile alt" title="Bus Factor: The minimum number of team members whose loss would put the project in serious trouble."><span class=tile-number>20</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="25" y="45" width="50" height="30" rx="3" fill="#1F2535"/><rect x="30" y="50" width="10" height="10" fill="#fff" opacity=".8"/><rect x="45" y="50" width="10" height="10" fill="#fff" opacity=".8"/><rect x="60" y="50" width="10" height="10" fill="#fff" opacity=".8"/><circle cx="35" cy="75" r="5" fill="#1F2535"/><circle cx="65" cy="75" r="5" fill="#1F2535"/><circle cx="90" cy="50" r="8" fill="#1F2535"/><text x="90" y="54" text-anchor="middle" fill="#fff" font-size="10" font-weight="bold">1</text><path d="M85 70l5-8 5 8z" stroke="#1F2535" stroke-width="2" fill="none"/><line x1="90" y1="65" x2="90" y2="67" stroke="#1F2535" stroke-width="2"/><circle cx="90" cy="68.5" r=".5" fill="#1F2535"/></svg></div><div class=tile-title>Bus Factor</div><div class=tile-desc>The minimum number of team members whose loss would put the project in serious trouble.</div></a><a href=https://lawsofsoftwareengineering.com/laws/dilbert-principle/ class=tile title="Dilbert Principle: Companies tend to promote incompetent employees to management to limit the damage they can do."><span class=tile-number>21</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M25 45V85H95V45" stroke="#1F2535" stroke-width="2" fill="none"/><line x1="60" y1="45" x2="60" y2="85" stroke="#1F2535" stroke-width="2"/><circle cx="42" cy="58" r="6" fill="#1F2535"/><rect x="35" y="68" width="14" height="12" rx="1" fill="#1F2535" opacity=".6"/><text x="42" y="62" text-anchor="middle" fill="#fff" font-size="6" font-weight="bold">â</text><circle cx="78" cy="38" r="8" fill="#1F2535"/><text x="78" y="42" text-anchor="middle" fill="#fff" font-size="8" font-weight="bold">?</text><path d="M78 50V62" stroke="#1F2535" stroke-width="2"/><path d="M74 54l4-6 4 6" stroke="#1F2535" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/><rect x="71" y="68" width="14" height="12" rx="1" stroke="#1F2535" stroke-width="1.5" fill="none" stroke-dasharray="3 2"/></svg></div><div class=tile-title>Dilbert Principle</div><div class=tile-desc>Companies tend to promote incompetent employees to management to limit the damage they can do.</div></a><a href=https://lawsofsoftwareengineering.com/laws/parkinsons-law/ class="tile alt" title="Parkinson's Law: Work expands to fill the time available for its completion."><span class=tile-number>22</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="60" r="28" stroke="#1F2535" stroke-width="2.5" fill="none"/><line x1="60" y1="60" x2="60" y2="42" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round"/><line x1="60" y1="60" x2="72" y2="60" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><circle cx="60" cy="60" r="3" fill="#1F2535"/><path d="M30 60H22" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/>
2<path d="M22 60l4-4m-4 4 4 4" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M90 60h8" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M98 60l-4-4m4 4-4 4" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M60 30V22" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M60 22l-4 4m4-4 4 4" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M60 90v8" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M60 98l-4-4m4 4 4-4" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>Parkinson's Law</div><div class=tile-desc>Work expands to fill the time available for its completion.</div></a><a href=https://lawsofsoftwareengineering.com/laws/ninety-ninety-rule/ class=tile title="The Ninety-Ninety Rule: The first 90% of the code accounts for the first 90% of development time; the remaining 10% accounts for the other 90%."><span class=tile-number>23</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="25" y="52" width="70" height="16" rx="8" stroke="#1F2535" stroke-width="2" fill="none"/><rect x="27" y="54" width="58" height="12" rx="6" fill="#1F2535" opacity=".7"/><text x="60" y="42" text-anchor="middle" fill="#1F2535" font-size="14" font-weight="bold">90%</text><text x="60" y="85" text-anchor="middle" fill="#1F2535" font-size="12" font-weight="bold">+90%</text><path d="M85 60h7" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M89 57l3 3-3 3" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>The Ninety-Ninety Rule</div><div class=tile-desc>The first 90% of the code accounts for the first 90% of development time; the remaining 10% accounts for the other 90%.</div></a><a href=https://lawsofsoftwareengineering.com/laws/hofstadters-law/ class="tile alt" title="Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."><span class=tile-number>24</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="40" y="30" width="40" height="5" rx="1" fill="#1F2535"/><rect x="40" y="85" width="40" height="5" rx="1" fill="#1F2535"/><path d="M45 35V52L60 62 75 52V35" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M45 85V68L60 58 75 68V85" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M50 40v8l10 7 10-7V40" fill="#1F2535" opacity=".4"/><path d="M48 80V72l12-7 12 7v8" fill="#1F2535" opacity=".7"/><line x1="60" y1="58" x2="60" y2="65" stroke="#1F2535" stroke-width="1.5"/><path d="M85 45c10 0 10 30 0 30" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M85 75l3-5m-3 5-4-5" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><text x="92" y="62" fill="#1F2535" font-size="14" font-weight="bold">+</text></svg></div><div class=tile-title>Hofstadter's Law</div><div class=tile-desc>It always takes longer than you expect, even when you take into account Hofstadter's Law.</div></a><a href=https://lawsofsoftwareengineering.com/laws/goodharts-law/ class="tile alt" title="Goodhart's Law: When a measure becomes a target, it ceases to be a good measure."><span class=tile-number>25</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="60" r="28" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="60" cy="60" r="18" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="60" cy="60" r="8" fill="#1F2535"/><line x1="82" y1="38" x2="68" y2="52" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round"/><path d="M82 38v7m0-7H75" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M35 75 45 85m0-10L35 85" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round"/></svg></div><div class=tile-title>Goodhart's Law</div><div class=tile-desc>When a measure becomes a target, it ceases to be a good measure.</div></a><a href=https://lawsofsoftwareengineering.com/laws/gilbs-law/ class=tile title="Gilb's Law: Anything you need to quantify can be measured in some way better than not measuring it."><span class=tile-number>26</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="30" y="50" width="60" height="20" rx="2" stroke="#1F2535" stroke-width="2" fill="none"/><line x1="40" y1="50" x2="40" y2="58" stroke="#1F2535" stroke-width="1.5"/><line x1="50" y1="50" x2="50" y2="62" stroke="#1F2535" stroke-width="2"/><line x1="60" y1="50" x2="60" y2="58" stroke="#1F2535" stroke-width="1.5"/><line x1="70" y1="50" x2="70" y2="62" stroke="#1F2535" stroke-width="2"/><line x1="80" y1="50" x2="80" y2="58" stroke="#1F2535" stroke-width="1.5"/><path d="M35 40l15-5 15-5 15-5" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="80" cy="25" r="3" fill="#1F2535"/><path d="M75 80l5 5L90 72" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>Gilb's Law</div><div class=tile-desc>Anything you need to quantify can be measured in some way better than not measuring it.</div></a><a href=https://lawsofsoftwareengineering.com/laws/murphys-law/ class="tile alt" title="Murphy's Law / Sod's Law: Anything that can go wrong will go wrong."><span class=tile-number>27</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="40" y="35" width="40" height="30" rx="3" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M50 35l5 15-7 15" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/>
2<path d="M70 35 65 48l7 17" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><line x1="60" y1="75" x2="60" y2="88" stroke="#1F2535" stroke-width="3" stroke-linecap="round"/><circle cx="60" cy="95" r="2" fill="#1F2535"/><path d="M30 45l5 5-5 5" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M90 45l-5 5 5 5" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>Murphy's Law / Sod's Law</div><div class=tile-desc>Anything that can go wrong will go wrong.</div></a><a href=https://lawsofsoftwareengineering.com/laws/postels-law/ class=tile title="Postel's Law: Be conservative in what you do, be liberal in what you accept from others."><span class=tile-number>28</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M20 60H40" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M30 50 40 60 30 70" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M42 45 55 55V65L42 75" stroke="#1F2535" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/><rect x="55" y="50" width="10" height="20" rx="2" fill="#1F2535"/><path d="M65 55H78V65H65" stroke="#1F2535" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/><path d="M80 60h20" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M90 50l10 10L90 70" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="35" cy="35" r="8" stroke="#1F2535" stroke-width="1.5" fill="none"/><path d="M32 35h6m-3-3v6" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><circle cx="85" cy="35" r="8" stroke="#1F2535" stroke-width="1.5" fill="none"/><path d="M82 35h6" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/></svg></div><div class=tile-title>Postel's Law</div><div class=tile-desc>Be conservative in what you do, be liberal in what you accept from others.</div></a><a href=https://lawsofsoftwareengineering.com/laws/broken-windows-theory/ class="tile alt" title="Broken Windows Theory: Don't leave broken windows (bad designs, wrong decisions, or poor code) unrepaired."><span class=tile-number>29</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="30" y="25" width="60" height="70" rx="2" stroke="#1F2535" stroke-width="2" fill="none"/><line x1="60" y1="25" x2="60" y2="95" stroke="#1F2535" stroke-width="2"/><line x1="30" y1="60" x2="90" y2="60" stroke="#1F2535" stroke-width="2"/><path d="M38 35 50 50l-8 5 13 3" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M50 50l-2-8" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><path d="M50 50l6-2" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><polygon points="35,62 38,65 36,68 33,66" fill="#1F2535" opacity=".6"/><polygon points="42,70 45,72 43,75 40,73" fill="#1F2535" opacity=".6"/></svg></div><div class=tile-title>Broken Windows Theory</div><div class=tile-desc>Don't leave broken windows (bad designs, wrong decisions, or poor code) unrepaired.</div></a><a href=https://lawsofsoftwareengineering.com/laws/technical-debt/ class=tile title="Technical Debt: Technical Debt is everything that slows us down when developing software."><span class=tile-number>30</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="30" y="40" width="60" height="40" rx="4" stroke="#1F2535" stroke-width="2" fill="none"/><rect x="30" y="50" width="60" height="8" fill="#1F2535" opacity=".4"/><text x="60" y="75" font-family="Arial" font-size="16" font-weight="bold" fill="#1F2535" text-anchor="middle">$</text><path d="M60 25V35" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/>
2<path d="M55 32l5 6 5-6" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M85 55l10-5" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><path d="M85 60H95" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><path d="M85 65l10 5" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round"/><text x="60" y="100" font-family="Arial" font-size="10" fill="#1F2535" text-anchor="middle">%</text></svg></div><div class=tile-title>Technical Debt</div><div class=tile-desc>Technical Debt is everything that slows us down when developing software.</div></a><a href=https://lawsofsoftwareengineering.com/laws/linuss-law/ class="tile alt" title="Linus's Law: Given enough eyeballs, all bugs are shallow."><span class=tile-number>31</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><ellipse cx="35" cy="40" rx="12" ry="8" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="35" cy="40" r="4" fill="#1F2535"/><ellipse cx="85" cy="40" rx="12" ry="8" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="85" cy="40" r="4" fill="#1F2535"/><ellipse cx="60" cy="60" rx="14" ry="9" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="60" cy="60" r="5" fill="#1F2535"/><ellipse cx="35" cy="80" rx="12" ry="8" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="35" cy="80" r="4" fill="#1F2535"/><ellipse cx="85" cy="80" rx="12" ry="8" stroke="#1F2535" stroke-width="2" fill="none"/><circle cx="85" cy="80" r="4" fill="#1F2535"/><circle cx="60" cy="60" r="2" fill="#1F2535" opacity=".5"/></svg></div><div class=tile-title>Linus's Law</div><div class=tile-desc>Given enough eyeballs, all bugs are shallow.</div></a><a href=https://lawsofsoftwareengineering.com/laws/kernighans-law/ class=tile title="Kernighan's Law: Debugging is twice as hard as writing the code in the first place."><span class=tile-number>32</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><ellipse cx="60" cy="65" rx="18" ry="22" stroke="#1F2535" stroke-width="2.5" fill="none"/><circle cx="60" cy="38" r="10" stroke="#1F2535" stroke-width="2.5" fill="none"/><path d="M52 30 45 20" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M68 30l7-10" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M42 55 28 48" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M42 65H25" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M42 75 28 82" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M78 55l14-7" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M78 65H95" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M78 75l14 7" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><circle cx="75" cy="55" r="12" stroke="#1F2535" stroke-width="2" fill="none" opacity=".7"/><path d="M84 64l8 8" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" opacity=".7"/></svg></div><div class=tile-title>Kernighan's Law</div><div class=tile-desc>Debugging is twice as hard as writing the code in the first place.</div></a><a href=https://lawsofsoftwareengineering.com/laws/testing-pyramid/ class=tile title="Testing Pyramid: A project should have many fast unit tests, fewer integration tests, and only a small number of UI tests."><span class=tile-number>33</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M60 20 95 95H25z" stroke="#1F2535" stroke-width="2" fill="none"/><line x1="35" y1="55" x2="85" y2="55" stroke="#1F2535" stroke-width="2"/><line x1="42" y1="75" x2="78" y2="75" stroke="#1F2535" stroke-width="2"/><path d="M56 38l4 4 8-10" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M50 62l4 4L64 56" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
2<path d="M68 62l4 4 8-10" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" opacity=".7"/><path d="M38 82l4 4L52 76" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M55 82l4 4L69 76" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M72 82l4 4L86 76" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>Testing Pyramid</div><div class=tile-desc>A project should have many fast unit tests, fewer integration tests, and only a small number of UI tests.</div></a><a href=https://lawsofsoftwareengineering.com/laws/pesticide-paradox/ class="tile alt" title="Pesticide Paradox: Repeatedly running the same tests becomes less effective over time."><span class=tile-number>34</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="45" y="45" width="30" height="40" rx="3" stroke="#1F2535" stroke-width="2" fill="none"/><rect x="52" y="35" width="16" height="12" rx="2" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M60 35V28" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M75 50l10-5" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><circle cx="90" cy="42" r="2" fill="#1F2535" opacity=".8"/><circle cx="95" cy="38" r="1.5" fill="#1F2535" opacity=".5"/><circle cx="98" cy="35" r="1" fill="#1F2535" opacity=".3"/><ellipse cx="60" cy="95" rx="8" ry="6" fill="#1F2535" opacity=".6"/><circle cx="60" cy="88" r="4" fill="#1F2535" opacity=".6"/><path d="M50 85q10-7 20 0V98q-10 7-20 0z" stroke="#1F2535" stroke-width="2" fill="none"/><path d="M30 55l6 6m0-6-6 6" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round" opacity=".5"/><path d="M30 70l6 6m0-6-6 6" stroke="#1F2535" stroke-width="1.5" stroke-linecap="round" opacity=".5"/></svg></div><div class=tile-title>Pesticide Paradox</div><div class=tile-desc>Repeatedly running the same tests becomes less effective over time.</div></a><a href=https://lawsofsoftwareengineering.com/laws/lehmans-laws/ class=tile title="Lehman's Laws of Software Evolution: Software that reflects the real world must evolve, and that evolution has predictable limits."><span class=tile-number>35</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="28" y="75" width="14" height="10" rx="2" fill="#1F2535" opacity=".4"/><rect x="46" y="62" width="14" height="23" rx="2" fill="#1F2535" opacity=".55"/><rect x="64" y="48" width="14" height="37" rx="2" fill="#1F2535" opacity=".7"/><rect x="82" y="35" width="14" height="50" rx="2" fill="#1F2535" opacity=".85"/><path d="M28 35q27-13 60-7" stroke="#1F2535" stroke-width="2.5" fill="none" stroke-linecap="round"/><path d="M82 24l6 4-4 6" stroke="#1F2535" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg></div><div class=tile-title>Lehman's Laws of Software Evolution</div><div class=tile-desc>Software that reflects the real world must evolve, and that evolution has predictable limits.</div></a><a href=https://lawsofsoftwareengineering.com/laws/sturgeons-law/ class="tile alt" title="Sturgeon's Law: 90% of everything is crap."><span class=tile-number>36</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="35" y="25" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="33" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="41" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="49" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="57" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="65" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="73" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="81" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="89" width="50" height="6" rx="2" fill="#1F2535" opacity=".2"/><rect x="35" y="57" width="50" height="6" rx="2" fill="#1F2535"/><path d="M92 60l3-4 3 4-4-2h2z" fill="#1F2535"/></svg></div><div class=tile-title>Sturgeon's Law</div><div class=tile-desc>90% of everything is crap.</div></a><a href=https://lawsofsoftwareengineering.com/laws/amdahls-law/ class=tile title="Amdahl's Law: The speedup from parallelization is limited by the fraction of work that cannot be parallelized."><span class=tile-number>37</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="25" y="55" width="20" height="10" rx="2" fill="#1F2535"/><rect x="50" y="35" width="25" height="8" rx="2" fill="#1F2535" opacity=".6"/><rect x="50" y="46" width="25" height="8" rx="2" fill="#1F2535" opacity=".6"/><rect x="50" y="57" width="25" height="8" rx="2" fill="#1F2535" opacity=".6"/><rect x="50" y="68" width="25" height="8" rx="2" fill="#1F2535" opacity=".6"/><rect x="50" y="79" width="25" height="8" rx="2" fill="#1F2535" opacity=".6"/><rect x="80" y="55" width="15" height="10" rx="2" fill="#1F2535"/><path d="M45 60l5-21" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M45 60l5-10" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M45 60l5 1" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M45 60l5 12" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M45 60l5 23" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M75 39l5 21" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M75 50l5 10" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M75 61l5-1" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M75 72l5-12" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><path d="M75 83l5-23" stroke="#1F2535" stroke-width="1.5" opacity=".4"/></svg></div><div class=tile-title>Amdahl's Law</div><div class=tile-desc>The speedup from parallelization is limited by the fraction of work that cannot be parallelized.</div></a><a href=https://lawsofsoftwareengineering.com/laws/gustafsons-law/ class="tile alt" title="Gustafson's Law: It is possible to achieve significant speedup in parallel processing by increasing the problem size."><span class=tile-number>38</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="30" y="30" width="12" height="12" rx="2" fill="#1F2535" opacity=".5"/><rect x="46" y="30" width="12" height="12" rx="2" fill="#1F2535" opacity=".6"/><rect x="62" y="30" width="12" height="12" rx="2" fill="#1F2535" opacity=".7"/><rect x="78" y="30" width="12" height="12" rx="2" fill="#1F2535" opacity=".8"/><rect x="30" y="46" width="12" height="12" rx="2" fill="#1F2535" opacity=".6"/><rect x="46" y="46" width="12" height="12" rx="2" fill="#1F2535" opacity=".7"/><rect x="62" y="46" width="12" height="12" rx="2" fill="#1F2535" opacity=".8"/><rect x="78" y="46" width="12" height="12" rx="2" fill="#1F2535" opacity=".9"/><rect x="30" y="62" width="12" height="12" rx="2" fill="#1F2535" opacity=".7"/><rect x="46" y="62" width="12" height="12" rx="2" fill="#1F2535" opacity=".8"/><rect x="62" y="62" width="12" height="12" rx="2" fill="#1F2535" opacity=".9"/><rect x="78" y="62" width="12" height="12" rx="2" fill="#1F2535"/><rect x="30" y="78" width="12" height="12" rx="2" fill="#1F2535" opacity=".8"/><rect x="46" y="78" width="12" height="12" rx="2" fill="#1F2535" opacity=".9"/><rect x="62" y="78" width="12" height="12" rx="2" fill="#1F2535"/><rect x="78" y="78" width="12" height="12" rx="2" fill="#1F2535"/><path d="M22 98V22l4 6" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
2<path d="M22 22l-4 6" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/></svg></div><div class=tile-title>Gustafson's Law</div><div class=tile-desc>It is possible to achieve significant speedup in parallel processing by increasing the problem size.</div></a><a href=https://lawsofsoftwareengineering.com/laws/metcalfes-law/ class=tile title="Metcalfe's Law: The value of a network is proportional to the square of the number of users."><span class=tile-number>39</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="28" r="8" fill="#1F2535"/><circle cx="88" cy="45" r="8" fill="#1F2535"/><circle cx="88" cy="75" r="8" fill="#1F2535"/><circle cx="60" cy="92" r="8" fill="#1F2535"/><circle cx="32" cy="75" r="8" fill="#1F2535"/><circle cx="32" cy="45" r="8" fill="#1F2535"/><line x1="60" y1="36" x2="60" y2="84" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="66" y1="32" x2="82" y2="42" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="66" y1="88" x2="82" y2="78" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="54" y1="32" x2="38" y2="42" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="54" y1="88" x2="38" y2="78" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="32" y1="53" x2="32" y2="67" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="88" y1="53" x2="88" y2="67" stroke="#1F2535" stroke-width="1.5" opacity=".4"/><line x1="40" y1="45" x2="80" y2="45" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="40" y1="75" x2="80" y2="75" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="38" y1="50" x2="82" y2="70" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="82" y1="50" x2="38" y2="70" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="64" y1="34" x2="84" y2="70" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="56" y1="34" x2="36" y2="70" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="64" y1="86" x2="84" y2="50" stroke="#1F2535" stroke-width="1.5" opacity=".3"/><line x1="56" y1="86" x2="36" y2="50" stroke="#1F2535" stroke-width="1.5" opacity=".3"/></svg></div><div class=tile-title>Metcalfe's Law</div><div class=tile-desc>The value of a network is proportional to the square of the number of users.</div></a><a href=https://lawsofsoftwareengineering.com/laws/dry-principle/ class="tile alt" title="DRY (Don't Repeat Yourself): Every piece of knowledge must have a single, unambiguous, authoritative representation."><span class=tile-number>40</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="60" r="14" fill="#1F2535"/><line x1="60" y1="46" x2="60" y2="28" stroke="#1F2535" stroke-width="2"/><line x1="72" y1="52" x2="85" y2="38" stroke="#1F2535" stroke-width="2"/><line x1="74" y1="60" x2="92" y2="60" stroke="#1F2535" stroke-width="2"/><line x1="72" y1="68" x2="85" y2="82" stroke="#1F2535" stroke-width="2"/><line x1="60" y1="74" x2="60" y2="92" stroke="#1F2535" stroke-width="2"/><line x1="48" y1="68" x2="35" y2="82" stroke="#1F2535" stroke-width="2"/><line x1="46" y1="60" x2="28" y2="60" stroke="#1F2535" stroke-width="2"/><line x1="48" y1="52" x2="35" y2="38" stroke="#1F2535" stroke-width="2"/><circle cx="60" cy="25" r="5" fill="#1F2535" opacity=".6"/><circle cx="88" cy="35" r="5" fill="#1F2535" opacity=".6"/><circle cx="95" cy="60" r="5" fill="#1F2535" opacity=".6"/><circle cx="88" cy="85" r="5" fill="#1F2535" opacity=".6"/><circle cx="60" cy="95" r="5" fill="#1F2535" opacity=".6"/><circle cx="32" cy="85" r="5" fill="#1F2535" opacity=".6"/><circle cx="25" cy="60" r="5" fill="#1F2535" opacity=".6"/><circle cx="32" cy="35" r="5" fill="#1F2535" opacity=".6"/><text x="60" y="64" text-anchor="middle" fill="#fff" font-size="12" font-weight="bold">1</text></svg></div><div class=tile-title>DRY (Don't Repeat Yourself)</div><div class=tile-desc>
2Every piece of knowledge must have a single, unambiguous, authoritative representation.</div></a><a href=https://lawsofsoftwareengineering.com/laws/kiss-principle/ class="tile alt" title="KISS (Keep It Simple, Stupid): Designs and systems should be as simple as possible."><span class=tile-number>41</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="25" y="40" width="30" height="40" rx="3" stroke="#1F2535" stroke-width="1.5" fill="none" opacity=".3"/><path d="M30 50q10-5 5 5 10-5 5 5 10-5 5 5" stroke="#1F2535" stroke-width="1.5" fill="none" opacity=".3"/><line x1="25" y1="40" x2="55" y2="80" stroke="#1F2535" stroke-width="2" opacity=".5"/><rect x="65" y="40" width="30" height="40" rx="3" fill="#1F2535"/><path d="M73 60l5 5 9-12" stroke="#fff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></div><div class=tile-title>KISS (Keep It Simple, Stupid)</div><div class=tile-desc>Designs and systems should be as simple as possible.</div></a><a href=https://lawsofsoftwareengineering.com/laws/solid-principles/ class=tile title="SOLID Principles: Five main guidelines that enhance software design, making code more maintainable and scalable."><span class=tile-number>42</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><polygon points="60,45 72,52 72,66 60,73 48,66 48,52" fill="#1F2535"/><polygon points="60,28 72,35 72,49 60,56 48,49 48,35" fill="#1F2535" opacity=".7"/><polygon points="60,62 72,69 72,83 60,90 48,83 48,69" fill="#1F2535" opacity=".7"/><polygon points="42,45 54,52 54,66 42,73 30,66 30,52" fill="#1F2535" opacity=".7"/><polygon points="78,45 90,52 90,66 78,73 66,66 66,52" fill="#1F2535" opacity=".7"/></svg></div><div class=tile-title>SOLID Principles</div><div class=tile-desc>Five main guidelines that enhance software design, making code more maintainable and scalable.</div></a><a href=https://lawsofsoftwareengineering.com/laws/law-of-demeter/ class="tile alt" title="Law of Demeter: An object should only interact with its immediate friends, not strangers."><span class=tile-number>43</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="30" cy="60" r="12" fill="#1F2535"/><text x="27" y="64" font-size="10" font-weight="bold" fill="#fff" font-family="system-ui">A</text><circle cx="60" cy="60" r="12" fill="#1F2535"/><text x="57" y="64" font-size="10" font-weight="bold" fill="#fff" font-family="system-ui">B</text><circle cx="90" cy="60" r="12" fill="#1F2535" opacity=".4"/><text x="87" y="64" font-size="10" font-weight="bold" fill="#fff" font-family="system-ui" opacity=".6">C</text><line x1="42" y1="60" x2="46" y2="60" stroke="#1F2535" stroke-width="3"/><polygon points="48,55 48,65 54,60" fill="#1F2535"/><line x1="72" y1="60" x2="76" y2="60" stroke="#1F2535" stroke-width="2" stroke-dasharray="2,2" opacity=".5"/><path d="M42 45H78" stroke="#1F2535" stroke-width="1.5" stroke-dasharray="3,2" opacity=".3"/><path d="M56 40l8 10" stroke="#1F2535" stroke-width="2.5" opacity=".6"/><path d="M64 40 56 50" stroke="#1F2535" stroke-width="2.5" opacity=".6"/></svg></div><div class=tile-title>Law of Demeter</div><div class=tile-desc>An object should only interact with its immediate friends, not strangers.</div></a><a href=https://lawsofsoftwareengineering.com/laws/principle-of-least-astonishment/ class=tile title="Principle of Least Astonishment: Software and interfaces should behave in a way that least surprises users and other developers."><span class=tile-number>44</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="35" cy="50" r="8" fill="#1F2535"/><path d="M25 72q10-10 20 0" fill="#1F2535"/><ellipse cx="70" cy="45" rx="22" ry="15" fill="#1F2535" opacity=".3"/><circle cx="50" cy="55" r="3" fill="#1F2535" opacity=".3"/><circle cx="55" cy="50" r="4" fill="#1F2535" opacity=".3"/><line x1="62" y1="42" x2="78" y2="42" stroke="#1F2535" stroke-width="2.5"/><line x1="62" y1="48" x2="78" y2="48" stroke="#1F2535" stroke-width="2.5"/><path d="M55 80l7 7L78 71" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></div><div class=tile-title>Principle of Least Astonishment</div><div class=tile-desc>Software and interfaces should behave in a way that least surprises users and other developers.</div></a><a href=https://lawsofsoftwareengineering.com/laws/dunning-kruger-effect/ class="tile alt" title="Dunning-Kruger Effect: The less you know about something, the more confident you tend to be."><span class=tile-number>45</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><line x1="25" y1="90" x2="95" y2="90" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><line x1="25" y1="90" x2="25" y2="25" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/>
2<path d="M25 85Q35 30 45 35T60 70Q70 85 80 60 90 40 95 45" stroke="#1F2535" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/><circle cx="45" cy="35" r="4" fill="#1F2535"/><circle cx="62" cy="72" r="3" fill="#1F2535" opacity=".6"/><circle cx="90" cy="48" r="4" fill="#1F2535"/></svg></div><div class=tile-title>Dunning-Kruger Effect</div><div class=tile-desc>The less you know about something, the more confident you tend to be.</div></a><a href=https://lawsofsoftwareengineering.com/laws/hanlons-razor/ class=tile title="Hanlon's Razor: Never attribute to malice that which is adequately explained by stupidity or carelessness."><span class=tile-number>46</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="30" y="55" width="60" height="12" rx="2" fill="#1F2535"/><rect x="30" y="55" width="15" height="12" rx="2" fill="#1F2535" opacity=".6"/><line x1="30" y1="67" x2="90" y2="67" stroke="#1F2535" stroke-width="1.5"/><rect x="78" y="58" width="8" height="6" rx="1" fill="#fff" opacity=".3"/></svg></div><div class=tile-title>Hanlon's Razor</div><div class=tile-desc>Never attribute to malice that which is adequately explained by stupidity or carelessness.</div></a><a href=https://lawsofsoftwareengineering.com/laws/occams-razor/ class="tile alt" title="Occam's Razor: The simplest explanation is often the most accurate one."><span class=tile-number>47</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M30 35H50l5-7 5 14 5-14 5 14 5-7H95" stroke="#1F2535" stroke-width="2.5" fill="none" opacity=".4"/><line x1="30" y1="28" x2="95" y2="42" stroke="#1F2535" stroke-width="2" opacity=".6"/><line x1="30" y1="75" x2="95" y2="75" stroke="#1F2535" stroke-width="3" stroke-linecap="round"/><path d="M38 85l6 6L56 79" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/><rect x="70" y="82" width="22" height="6" rx="1" fill="#1F2535"/><line x1="70" y1="88" x2="92" y2="88" stroke="#1F2535" stroke-width="1"/></svg></div><div class=tile-title>Occam's Razor</div><div class=tile-desc>The simplest explanation is often the most accurate one.</div></a><a href=https://lawsofsoftwareengineering.com/laws/sunk-cost-fallacy/ class=tile title="Sunk Cost Fallacy: Sticking with a choice because you've invested time or energy in it, even when walking away helps you."><span class=tile-number>48</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><ellipse cx="50" cy="65" rx="18" ry="8" fill="#1F2535" opacity=".3"/><ellipse cx="50" cy="65" rx="12" ry="5" fill="#1F2535" opacity=".5"/><ellipse cx="50" cy="65" rx="6" ry="2.5" fill="#1F2535"/><circle cx="42" cy="45" r="6" stroke="#1F2535" stroke-width="2" fill="none" opacity=".6"/><circle cx="55" cy="38" r="5" stroke="#1F2535" stroke-width="2" fill="none" opacity=".5"/><circle cx="48" cy="52" r="4" stroke="#1F2535" stroke-width="2" fill="none" opacity=".4"/><path d="M72 45H88" stroke="#1F2535" stroke-width="3" stroke-linecap="round"/><path d="M82 39l6 6-6 6" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M75 70l5 5L90 65" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></div><div class=tile-title>Sunk Cost Fallacy</div><div class=tile-desc>Sticking with a choice because you've invested time or energy in it, even when walking away helps you.</div></a><a href=https://lawsofsoftwareengineering.com/laws/map-is-not-the-territory/ class=tile title="The Map Is Not the Territory: Our representations of reality are not the same as reality itself."><span class=tile-number>49</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="20" y="40" width="32" height="24" rx="1" fill="#1F2535" opacity=".3"/><rect x="20" y="40" width="10" height="24" fill="#1F2535" opacity=".15"/><rect x="42" y="40" width="10" height="24" fill="#1F2535" opacity=".15"/><line x1="24" y1="48" x2="48" y2="48" stroke="#1F2535" stroke-width="1.5"/><line x1="24" y1="54" x2="48" y2="54" stroke="#1F2535" stroke-width="1.5"/><circle cx="36" cy="58" r="2" fill="#1F2535"/><text x="60" y="58" text-anchor="middle" fill="#1F2535" font-size="20" font-weight="bold">â </text><path d="M72 64 82 40 92 52l8-16V64z" fill="#1F2535"/><line x1="76" y1="64" x2="76" y2="56" stroke="#1F2535" stroke-width="2"/><circle cx="76" cy="54" r="4" fill="#1F2535" opacity=".7"/><text x="36" y="78" text-anchor="middle" fill="#1F2535" font-size="9" font-weight="bold">MAP</text><text x="86" y="78" text-anchor="middle" fill="#1F2535" font-size="9" font-weight="bold">REAL</text></svg></div><div class=tile-title>The Map Is Not the Territory</div><div class=tile-desc>Our representations of reality are not the same as reality itself.</div></a><a href=https://lawsofsoftwareengineering.com/laws/confirmation-bias/ class="tile alt" title="Confirmation Bias: A tendency to favor information that supports our existing beliefs or ideas."><span class=tile-number>50</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><ellipse cx="60" cy="55" rx="22" ry="16" stroke="#1F2535" stroke-width="2.5" fill="none"/><circle cx="60" cy="55" r="8" fill="#1F2535"/><path d="M25 40l4 4 8-8" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M25 55l4 4 8-8" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M25 70l4 4 8-8" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M83 40l8 8m0-8-8 8" stroke="#1F2535" stroke-width="2" stroke-linecap="round" opacity=".4"/><path d="M83 55l8 8m0-8-8 8" stroke="#1F2535" stroke-width="2" stroke-linecap="round" opacity=".4"/><path d="M83 70l8 8m0-8-8 8" stroke="#1F2535" stroke-width="2" stroke-linecap="round" opacity=".4"/><line x1="38" y1="44" x2="45" y2="50" stroke="#1F2535" stroke-width="1.5"/><line x1="38" y1="55" x2="45" y2="55" stroke="#1F2535" stroke-width="1.5"/><line x1="38" y1="66" x2="45" y2="60" stroke="#1F2535" stroke-width="1.5"/></svg></div><div class=tile-title>Confirmation Bias</div><div class=tile-desc>A tendency to favor information that supports our existing beliefs or ideas.</div></a><a href=https://lawsofsoftwareengineering.com/laws/hype-cycle-amaras-law/ class=tile title="The Hype Cycle & Amara's Law: We tend to overestimate the effect of a technology in the short run and underestimate the impact in the long run."><span class=tile-number>51</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><line x1="25" y1="90" x2="100" y2="90" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><line x1="25" y1="90" x2="25" y2="30" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/>
2<path d="M25 85q10-5 15-45 5-5 7 0 8 38 16 42 12 4 25-24 7-8 12-4" stroke="#1F2535" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/><circle cx="43" cy="37" r="4" fill="#1F2535"/><circle cx="63" cy="82" r="3" fill="#1F2535" opacity=".6"/><circle cx="95" cy="52" r="4" fill="#1F2535"/></svg></div><div class=tile-title>The Hype Cycle & Amara's Law</div><div class=tile-desc>We tend to overestimate the effect of a technology in the short run and underestimate the impact in the long run.</div></a><a href=https://lawsofsoftwareengineering.com/laws/lindy-effect/ class="tile alt" title="The Lindy Effect: The longer something has been in use, the more likely it is to continue being used."><span class=tile-number>52</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M35 30H85v5L65 55V65L85 85v5H35V85L55 65V55L35 35z" stroke="#1F2535" stroke-width="2.5" fill="none"/><path d="M42 35H78L62 50H58z" fill="#1F2535" opacity=".4"/><path d="M40 85H80L65 72H55z" fill="#1F2535" opacity=".7"/><path d="M88 60h12" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round"/><path d="M96 55l5 5-5 5" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><text x="22" y="64" fill="#1F2535" font-size="16" font-weight="bold">+</text></svg></div><div class=tile-title>The Lindy Effect</div><div class=tile-desc>The longer something has been in use, the more likely it is to continue being used.</div></a><a href=https://lawsofsoftwareengineering.com/laws/first-principles-thinking/ class=tile title="First Principles Thinking: Breaking a complex problem into its most basic blocks and then building up from there."><span class=tile-number>53</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><rect x="45" y="25" width="30" height="18" rx="2" stroke="#1F2535" stroke-width="2" stroke-dasharray="3 2" opacity=".5"/><path d="M60 48V58" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/><path d="M55 54l5 6 5-6" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/><rect x="25" y="70" width="20" height="20" rx="2" fill="#1F2535" opacity=".8"/><rect x="50" y="70" width="20" height="20" rx="2" fill="#1F2535" opacity=".8"/><rect x="75" y="70" width="20" height="20" rx="2" fill="#1F2535" opacity=".8"/><text x="55" y="40" fill="#1F2535" font-size="14" font-weight="bold">?</text></svg></div><div class=tile-title>First Principles Thinking</div><div class=tile-desc>Breaking a complex problem into its most basic blocks and then building up from there.</div></a><a href=https://lawsofsoftwareengineering.com/laws/inversion/ class="tile alt" title="Inversion: Solving a problem by considering the opposite outcome and working backward from it."><span class=tile-number>54</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M35 45H75" stroke="#1F2535" stroke-width="3" stroke-linecap="round"/><path d="M68 38l9 7-9 7" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M85 75H45" stroke="#1F2535" stroke-width="3" stroke-linecap="round"/><path d="M52 68l-9 7 9 7" stroke="#1F2535" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/><path d="M80 50q15 10 0 20" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" fill="none"/><path d="M40 70Q25 60 40 50" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" fill="none"/></svg></div><div class=tile-title>Inversion</div><div class=tile-desc>Solving a problem by considering the opposite outcome and working backward from it.</div></a><a href=https://lawsofsoftwareengineering.com/laws/pareto-principle/ class=tile title="Pareto Principle (80/20 Rule): 80% of the problems result from 20% of the causes."><span class=tile-number>55</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><circle cx="60" cy="60" r="30" fill="#1F2535" opacity=".3"/><path d="M60 60V30A30 30 0 0188 50z" fill="#1F2535"/><text x="38" y="75" fill="#1F2535" font-size="14" font-weight="bold">80%</text><text x="62" y="48" fill="#fff" font-size="11" font-weight="bold">20%</text></svg></div><div class=tile-title>Pareto Principle (80/20 Rule)</div><div class=tile-desc>80% of the problems result from 20% of the causes.</div></a><a href=https://lawsofsoftwareengineering.com/laws/cunninghams-law/ class="tile alt" title="Cunningham's Law: The best way to get the correct answer on the Internet is not to ask a question, it's to post the wrong answer."><span class=tile-number>56</span><div class=tile-icon aria-hidden=true><svg width="120" height="120" viewBox="0 0 120 120" fill="none"><circle cx="60" cy="60" r="50" fill="#1F2535" opacity=".2"/><path d="M25 30H85q5 0 5 5V60q0 5-5 5H55L45 78V65H30q-5 0-5-5z" stroke="#1F2535" stroke-width="2" fill="none"/><text x="50" y="54" fill="#1F2535" font-size="22" font-weight="bold">â</text><path d="M75 68l7 7" stroke="#1F2535" stroke-width="2" stroke-linecap="round"/>
2<path d="M78 75h4V71" stroke="#1F2535" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/><circle cx="88" cy="82" r="12" fill="#1F2535" opacity=".3"/><path d="M82 82l4 4 8-9" stroke="#1F2535" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></div><div class=tile-title>Cunningham's Law</div><div class=tile-desc>The best way to get the correct answer on the Internet is not to ask a question, it's to post the wrong answer.</div></a></div><footer class=poster-footer>Created by <a href=https://milan.milanovic.org target=_blank rel=noopener class=author-name>Dr. Milan Milanović</a> 3<span class=separator>·</span> 4<a href=/ class=site-url>lawsofsoftwareengineering.com</a></footer></div></div>
4<script src=/js/print.min.a0e79da4a1b29071178094eacc4c1936fa12e704a16b526e525eeaa55b031afd.js integrity="sha256-oOedpKGykHEXgJTqzEwZNvoS5wSha1JuUl7qpVsDGv0=" crossorigin=anonymous defer></script>
4</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.