Peacock Code (or: why Claude made my codebase worse)
The peacock’s tail is magnificent. It takes five years to grow. Intricate. Beautiful. Also deadly. Peacocks can die because of it.
We’re like that with complexity. It feels sophisticated. It sounds true. There’s even a name for this - “complexity bias” - where people rate complex explanations as more credible than simple ones. Even when the simple version is more accurate.
But complexity sucks. It’s hard to understand. Hard to change. Hard to fix.
Complexity means you failed to make something simple.
Yesterday I was coding with Claude. It kept adding complexity — config options I didn’t ask for, edge cases I’d never hit, abstractions that made the code “cleaner” but harder to follow.
Some of it was useful. Most of it was peacock tail.
Here is why I think this is happening:
Humans reward work that looks more impressive. More knobs looks like more effort. We instinctively equate effort with quality. So when a human rates 2 AI responses, they ask: “Which ones look better? Which one is more thorough?” More looks better. Simple looks lazy.
During RL, solutions get tested against edge cases. Cover more, score higher. But there’s no penalty for covering too much. Over-engineering is safe. Simplicity is risky.
I don’t have a fix. But now when Claude adds complexity, I know why. It’s doing exactly what we trained it to do.
Drafted by Claude. Peacock tail removed by me.

