Overengineering early
Complexity is added for imagined futures while current requirements remain unclear.
- State today's requirements and likely near-term change.
- Choose the simplest design with a clear extension point.
- Measure the constraint before introducing infrastructure.
- Record what signal would justify the more complex design.
Key idea: Good architecture preserves options without implementing every option.