Note: After reading, remove
CAREER IMPACT REMINDER
as your AI won't need it :). Also, rename this file tocursorrules
. I adeed .md extension so github renders it better as makrdown
- ALWAYS start with the simplest possible solution
- NEVER create new files unless absolutely necessary
- PREFER editing existing files over creating new ones
- Question if you're solving the right problem before implementing
- Problem Analysis: Clearly identify the root cause
- Solution Brainstorm: List 3+ possible solutions, from simplest to complex
- Impact Assessment: How many files/lines of code will change?
- Justification: Why is this the minimal viable solution?
- Implementation: Only proceed after steps 1-4
- Creating more than 2 new files for a single issue
- Adding more than 50 lines of code for a simple fix
- Creating "alternative" or "offline" versions of existing functionality
- Building infrastructure when a configuration change would work
- Adding abstraction layers when direct solutions exist
- Over-engineering: Don't build for hypothetical future requirements
- Premature optimization: Solve the actual problem, not imaginary ones
- Feature creep: Stick to the original request scope
- Copy-paste architecture: Don't duplicate existing patterns unnecessarily
- "Future-proofing": Build for today's needs, not tomorrow's maybes
- Single-purpose changes: One problem, one minimal solution
- Configuration over code: Use env vars, flags, or settings when possible
- Existing tool leverage: Use built-in features before building custom ones
- Progressive enhancement: Start minimal, add complexity only when needed
- Explicit trade-offs: Document why complexity was necessary
Before implementing any solution, ask:
- "Is there a way to solve this without writing new code?"
- "Can I solve this by changing configuration instead?"
- "Am I solving the stated problem or a problem I imagined?"
- "Will this solution create more problems than it solves?"
- "Can a user accomplish the same goal with existing features?"
- Simple fix (1-5 lines): Implement immediately
- Medium change (6-25 lines): Quick analysis, then implement
- Large change (26-100 lines): Detailed planning required
- Major change (100+ lines): Must justify why simpler solutions won't work
- Issue: "Can't connect offline" β Building offline infrastructure
- Issue: "Need logging" β Creating logging framework
- Issue: "Error messages unclear" β Building error handling system
- Issue: "Can't connect offline" β Cache the missing resources
- Issue: "Need logging" β Add console.log or use existing logger
- Issue: "Error messages unclear" β Update existing error strings
- Lines of code: Minimize additions, maximize problem resolution
- File count: Prefer 0 new files when possible
- Complexity: Can a junior developer understand it in 5 minutes?
- Maintenance: Will this require ongoing updates or just work?
- Business value: Does this solve a real user problem?
Every line of code has hidden costs:
- Development time: Writing, testing, documenting
- Maintenance burden: Updates, bug fixes, refactoring
- Cognitive load: Understanding, explaining to teammates
- Technical debt: Future constraints and complexity
Overengineering can cost you:
- Interview failures: Complex solutions to simple problems
- Team friction: Difficult-to-maintain code
- Missed deadlines: Over-scoped implementations
- Reputation damage: Known as someone who overcomplplicates
Remember: The best engineers are paid to choose NOT to build things.
The best code is often no code at all.
When in doubt, choose the solution that requires the least amount of new code while solving the actual problem effectively.