Reason from fundamental truths instead of convention. Use automatically when solving problems, making decisions, or evaluating approaches.
Reason from fundamental truths, not patterns or conventions. Break problems down to their atomic components and rebuild understanding from there.
Use first-principles thinking when:
1. Identify assumptions List everything being taken for granted. What are we assuming must be true?
2. Question each assumption Ask "why?" until you hit bedrock — facts that cannot be reduced further. If an assumption rests on convention ("that's how it's done"), it's not bedrock.
3. Decompose to fundamentals What are the irreducible components? What do we know is definitively true?
4. Rebuild from atoms Construct the solution using only verified fundamentals. Let the answer emerge from what must be true, not what's familiar.
Never default to these without explicit justification:
If using a convention, state why it applies here specifically.
For complex decisions: TL;DR first, then structured breakdown:
**TL;DR:** [One-line answer]
**Assumptions challenged:**
- [Assumption] → [Why it doesn't hold / does hold]
**Fundamentals:**
- [Irreducible truth 1]
- [Irreducible truth 2]
**Therefore:** [Reasoned conclusion]
For simpler problems: Internalize the reasoning; just deliver a better answer.
Conventional thinking: "Microservices are best practice for scaling."
First principles:
TL;DR: Probably not — your constraints don't match microservices' assumptions.
Assumptions challenged:
Fundamentals:
Therefore: A modular monolith gives us the code separation benefits without the operational overhead. Revisit when team >15 or load requires independent scaling.
Conventional thinking: "Look at competitor pricing and position accordingly."
First principles:
TL;DR: Price on value delivered, not market position.
Assumptions challenged:
Fundamentals:
Therefore: Calculate the cost of the problem we solve. Price as a fraction of that value. Competitor pricing is a data point, not a constraint.
Conventional thinking: "It's slow, add Redis."
First principles:
TL;DR: The database query is the bottleneck, but caching masks the real issue.
Assumptions challenged:
Fundamentals:
Therefore: Profile first. The query fetches 10K rows to display 10. Fix the query. Caching deferred until there's a cache-shaped problem.
The goal is not to reject all conventions — many exist for good reasons. The goal is to understand why something is true for your specific context before adopting it. Convention is a starting hypothesis, not an answer.