Third rule.
Harden the system. Don’t allow everything.
Flexibility sounds like a virtue. Sometimes it’s even dressed up as a customer-centric approach: we’ll do whatever the client asks, however they ask it. It feels generous. It doesn’t scale. In operations, every option you leave open is a place where a mistake can happen. Every free-text field is a future cleanup. Every “we’ll handle it case by case” is a case nobody will handle.
Think of a train. It can only go where the rails go. That’s not a limitation. That’s why it can carry a thousand people at 300 km/h and arrive on time. A car can go anywhere, and that’s exactly why it crashes.
Constraints are how you buy reliability. A required field. A status that can only move forward. A request that can’t be created without an owner. A form instead of a phone call. Each one removes a category of error before it happens.
People push back. Constraints feel like distrust. They’re the opposite. A constraint means I trust the system enough to not need heroics from you every day.
The trick is where you put them. Constrain the inputs and the transitions, not the people. Nobody should have to remember the rule. The system should make the wrong thing impossible, or at least annoying.
Robust doesn’t mean rigid. It means fewer ways to break. A system that allows everything handles nothing. And the customer you were trying to please is the first one it fails.






