The rules
- No features beyond what was asked. If the request didn’t mention it, don’t build it.
- No abstractions for single-use code. One call site does not need an interface.
- No “flexibility” or “configurability” that wasn’t requested. Optional parameters, pluggable backends, and configuration systems are features — treat them that way.
- No error handling for impossible scenarios. Handle the errors that can actually happen.
- If you write 200 lines and it could be 50, rewrite it. The first draft is not the final answer.
The test
Ask yourself: “Would a senior engineer say this is overcomplicated?” If yes, simplify. Every time.Over-abstraction example
Request: “Add a function to calculate discount”The correct approach — one function until complexity is actually needed
Speculative features example
Request: “Save user preferences to database”The correct approach — just what was asked