vibe-coding-cn/i18n/en/documents/-01-philosophy-and-methodology/Phenomenological Reduction.md

4.3 KiB

Phenomenological Reduction (Suspension of Assumptions) for Vibe Coding

Core Purpose Strip "what I think the requirement is" from the conversation, leaving only observable, reproducible, and verifiable facts and experience structures, allowing the model to produce usable code with fewer assumptions.


1) Key Methods (Understanding in Engineering Context)

  • Epoché (Suspension): Temporarily withhold any "causal explanations/business inferences/best practice preferences." Only record: what happened, what is expected, what are the constraints.

  • Reduction: Reduce the problem to the minimal structure of "given input → process → output." Don't discuss architecture, patterns, or tech stack elegance first.

  • Intentionality: Clarify "who this feature is for, in what context, to achieve what experience." Not "make a login," but "users can complete login within 2 seconds even on weak networks and get clear feedback."


2) Applicable Scenarios

  • Requirements descriptions full of abstract words: fast, stable, like something, intelligent, smooth.
  • Model starts "bringing its own assumptions": filling in product logic, randomly selecting frameworks, adding complexity on its own.
  • Hard to reproduce bugs: intermittent, environment-related, unclear input boundaries.

3) Operating Procedure (Can Follow Directly)

A. First "Clear Explanations," Keep Only Phenomena

Describe using four elements:

  1. Phenomenon: Actual result (including errors/screenshots/log fragments).
  2. Intent: Desired result (observable criteria).
  3. Context: Environment and preconditions (version, platform, network, permissions, data scale).
  4. Boundaries: What not to do/not to assume (don't change interface, don't introduce new dependencies, don't change database structure, etc.).

B. Produce "Minimal Reproducible Example" (MRE)

  • Minimal input sample (shortest JSON/smallest table/smallest request)
  • Minimal code snippet (remove unrelated modules)
  • Clear reproduction steps (1, 2, 3)
  • Expected vs. Actual (comparison table)

C. Reduce "Abstract Words" to Testable Metrics

  • "Fast" → P95 latency < X, cold start < Y, throughput >= Z
  • "Stable" → Error rate < 0.1%, retry strategy, circuit breaker conditions
  • "User-friendly" → Interaction feedback, error messages, undo/recovery capability

4) Prompt Templates for Models (Can Copy Directly)

Template 1: Reduce Problem (No Speculation)

Please first do "phenomenological reduction": don't speculate on causes, don't introduce extra features.
Based only on the information I provide, output:
1) Phenomenon (observable facts)
2) Intent (observable result I want)
3) Context (environment/constraints)
4) Undetermined items (minimum information that must be clarified or I need to provide)
5) Minimal reproducible steps (MRE)
Then provide the minimal fix solution and corresponding tests.

Template 2: Abstract Requirements to Testable Specs

Apply "suspension of assumptions" to the following requirements: remove all abstract words, convert to verifiable specs:
- Clear input/output
- Clear success/failure criteria
- Clear performance/resource metrics (if needed)
- Clear what NOT to do
Finally provide acceptance test case list.
Requirements: <paste>

5) Concrete Implementation in Vibe Coding (Building Habits)

  • Write "phenomenon card" before each work session (2 minutes): phenomenon/intent/context/boundaries.
  • Have the model restate first: require it to only restate facts and gaps, no solutions allowed.
  • Then enter generation: solutions must be tied to "observable acceptance" and "falsifiable tests."

6) Common Pitfalls and Countermeasures

  • Pitfall: Treating explanations as facts ("Might be caused by cache") Countermeasure: Move "might" to "hypothesis list," each hypothesis with verification steps.

  • Pitfall: Requirements piled with adjectives Countermeasure: Force conversion to metrics and test cases; no writing code if not "testable."

  • Pitfall: Model self-selecting tech stack Countermeasure: Lock in boundaries: language/framework/dependencies/interfaces cannot change.


7) One-Sentence Mantra (Easy to Put in Toolbox Card)

First suspend explanations, then fix phenomena; first write acceptance criteria, then let model write implementation.