brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
simplifyCode simplification for high-complexity files. Targets deep nesting, copy-paste patterns, and god functions.
Independent GitHub snapshot · Automated classification · Original documentation governs
Why: You cannot improve what you cannot quantify. Baseline metrics prove simplification actually happened and prevent subjective "it feels cleaner" claims.
Why: Named abstractions replace "what does this block do?" with "what does this function promise?" — reducing cognitive load per reading unit.
Why: Precise names eliminate the need for comments and make wrong code look wrong. A reader should understand intent from names alone.
Why: Every line of code is a line someone must read, understand, and maintain. Fewer lines with the same behavior means lower lifetime cost.
Why: Simplification that breaks behavior is not simplification — it is a regression. Tests are the safety net that makes structural changes safe.
| Excuse | Rebuttal | What to do instead |
|---|---|---|
| "We might need this later" | YAGNI. Code you don't need is code you maintain for free. Add it when you need it. | Delete it. When the need arises, write it with current context — not stale assumptions. |
| "This abstraction makes it more flexible" | Flexibility without a concrete use case is complexity. Simple code is flexible code. | Abstract only after you see the second use case. Two concrete examples beat one imagined future. |
| "It's already working, don't touch it" | Chesterton's Fence: understand why it exists first. But if it's needlessly complex, simplify it. | Understand it, write tests for it, then simplify it. Working code that nobody can read is a ticking bomb. |
Before claiming simplification is done, show ALL of these:
"I cleaned it up" without metrics = opinion, not simplification.