Complexity is a Sin
summary
Defines three specific failure modes — structural complexity, cognitive complexity, and algorithmic complexity — and shows measurable impact: bubble sort O(n^2) versus heap sort O(n log n), at n=3,500 ~40 million vs ~120,000 operations (~300×). Labels complexity as inherited or accidental, blames accidental design choices for maintenance pain, and prescribes concrete fixes: use layered architecture to keep growth linear, design narrow stable interfaces (example in Scala), favor standard-library algorithms and domain‑driven design to cut long‑term cost.
AI-written summary · about
chapters (12)
- 0:00Complexity as a problem
- 1:18Dunning-Krueger effect
- 7:15Algorithmic vs cognitive complexity
- 14:55Sorting algorithms compared
- 21:15Inherited vs accidental complexity
- 24:05What makes code complex to understand
- 26:15Context and state handling
- 30:08Layered architecture
- 34:53Good interfaces design
- 39:50Domain-driven design
- 45:19Tips to avoid complexity
- 46:41Closing remarks
related talks
43mI Love Big-O but It Misleads Me
34mCyclomatic Complexity in Code
01h 08mMidnote: For the Sake of Complexity
43mQuit Simplifying!
56mKicking the Complexity Habit
33mPractical Applications of Complexity in Software & Digital Products Development
01h 21mEmpirically Measuring, & Reducing, C++’s Accidental Complexity
06mØ
