## Core Insight A well-designed tool makes bad design choices hurt proportionally — not hide them behind abstractions. When a tool's constraints produce visible ugliness in response to poor decisions, the tool is providing design feedback. ## Origin Katrina Owen, on Minitest's flat assert-based structure: > "The lack of nested contexts means that I'm faced with the appropriate amount of pain when I make bad choices. It quickly becomes ugly if I have too many dependencies. I like that." Minitest's flat test files (one class, methods inside, no nesting) force all dependencies into `setup` or the test itself. When a test has too many dependencies, the setup becomes visibly bloated — there is nowhere to hide complexity behind nested `describe`/`context` blocks. ## Key Principles - **Proportional** — small design flaws create small friction; major flaws create obvious ugliness - **Immediate** — delayed feedback allows problems to compound before they're visible - **Visible** — pain hidden behind abstractions prevents correction - **Don't numb the tool** — adding convenience layers masks the real problem; fix the design instead ## Cross-Domain - **Architecture**: frameworks that hide complexity delay pain until it's harder to fix - **Knowledge management**: a note requiring excessive context signals it isn't atomic enough ## Source - [[Seven Reasons I Love Minitest]] — Ben Lewis, Engine Yard Blog, December 2014