All glossary terms
Design
Accidental vs essential complexity
Two kinds of difficulty in software: essential complexity is inherent to the problem and cannot be removed, while accidental complexity is introduced by our tools, abstractions, and choices, and can. Fred Brooks's distinction focuses effort — you can't simplify a domain's intrinsic difficulty, but most of what makes software hard is accidental and within the team's power to reduce.