I once spent three days building a notification system.

Real-time WebSocket updates. Notification center with read/unread state. Badge counts. Persistence across sessions. It was clean, well-tested, well-reviewed code.

Then I showed it to the product team.

"Oh — we just meant a simple email when someone assigns a task. We don't need any of that in the app."

Three days. Gone. Not because the code was bad. Because I built the wrong thing.