Refactor vs rebuild

Identify whether change can be isolated, or whether a replacement path needs to be tested.

The decision

Can you deliver the next outcome without replacing the whole system?

Assumptions and limits

This is a decision worksheet, not a project estimate or a probability of success.

Describe your situation

Decision context

Can the problem be isolated behind an interface?

  • Yes, a boundary exists
  • Not yet
  • We have not tested this

Decision context

Can the current product stay live during a staged change?

  • Yes
  • No
  • Unclear

Problem and constraints

Do recent changes identify the behavior that needs repair?

Use incident records, change lead times and failing customer journeys. Code age alone is not evidence for replacement.

  • Yes, supported by evidence
  • Partly, with known gaps
  • No, the check is not met
  • Unknown, not verified

Behavior and data

Is required existing behavior captured in acceptance tests?

Include exceptions, integrations and undocumented business rules, not just happy-path screens.

  • Yes, supported by evidence
  • Partly, with known gaps
  • No, the check is not met
  • Unknown, not verified

Behavior and data

Is data ownership and reconciliation defined for the transition?

Identify the writer, schema compatibility, historical records and a mismatch-handling owner for each phase.

  • Yes, supported by evidence
  • Partly, with known gaps
  • No, the check is not met
  • Unknown, not verified

Transition and ownership

Has recovery been checked after the first new-system write?

A binary rollback is not enough when the new version changes data or emits external effects.

  • Yes, supported by evidence
  • Partly, with known gaps
  • No, the check is not met
  • Unknown, not verified

Transition and ownership

Can a named team support old and new paths during overlap?

Check on-call load, incident response and maintenance capacity rather than assuming the old product stops needing care.

  • Yes, supported by evidence
  • Partly, with known gaps
  • No, the check is not met
  • Unknown, not verified

Alternatives and commitment

Have narrow repair and replacement been compared on the same scope?

Include transition, residual contracts, support, testing and retirement. A sunk payment is not automatically avoidable savings.

  • Yes, supported by evidence
  • Partly, with known gaps
  • No, the check is not met
  • Unknown, not verified

How this tool works

Each selected answer maps to a stated observation and a check to perform. Answers are not weighted, added together, or converted into a score, diagnosis, or automatic recommendation.

An unknown answer identifies evidence to collect. Review each observation against your system and constraints; one favorable answer does not establish overall readiness or fit.

Model assumptions

  • This is a decision worksheet, not a project estimate or a probability of success.
  • Responses are self-reported and have not been independently verified.
Can the problem be isolated behind an interface?

Yes, a boundary exists: A staged refactor or replacement of one capability may be possible.

Check: Name the first boundary and run one thin end-to-end change through it.

Not yet: A rewrite claim is premature until the coupled paths are mapped.

Check: Trace one customer journey and the data it changes before choosing a migration strategy.

We have not tested this: The migration boundary is the key unknown.

Check: Run a two-week dependency and data-flow assessment.

Can the current product stay live during a staged change?

Yes: Parallel operation can reduce cutover risk.

Check: Define a reversible release and reconciliation check.

No: Cutover risk could dominate the technical choice.

Check: Model downtime, rollback, and data migration as explicit acceptance criteria.

Unclear: Operational constraints need evidence.

Check: Review deployment and rollback history with operators.

Do recent changes identify the behavior that needs repair?

Yes, supported by evidence: The repair has an observed target rather than a general dislike of the stack.

Check: Keep a before-and-after acceptance measure for the affected journey.

Partly, with known gaps: Some symptoms are measured, but their causes may lie outside the proposed replacement.

Check: Trace a recent failed or delayed change and separate code, dependency and decision causes.

No, the check is not met: A broad rebuild could spend money without addressing the actual constraint.

Check: Trace a recent failed or delayed change and separate code, dependency and decision causes.

Unknown, not verified: Missing evidence prevents a conclusion. Use incident records, change lead times and failing customer journeys. Code age alone is not evidence for replacement.

Check: Trace a recent failed or delayed change and separate code, dependency and decision causes.

Is required existing behavior captured in acceptance tests?

Yes, supported by evidence: A replacement can be compared with the behavior customers still require.

Check: Version the behavior baseline and explicitly approve any intended changes.

Partly, with known gaps: Covered journeys reduce uncertainty, but uncovered exceptions remain migration risks. Resolve the prerequisite's remaining gaps before making the stated commitment.

Check: Have product and operations review representative inputs, outputs and exception cases.

No, the check is not met: Feature parity cannot be judged reliably from a list of screens.

Check: Have product and operations review representative inputs, outputs and exception cases.

Unknown, not verified: This prerequisite is unverified, not proven absent. Resolve its evidence before making the stated commitment. Missing evidence prevents a conclusion. Include exceptions, integrations and undocumented business rules, not just happy-path screens.

Check: Have product and operations review representative inputs, outputs and exception cases.

Is data ownership and reconciliation defined for the transition?

Yes, supported by evidence: The proposed transition distinguishes code rollout from data correctness.

Check: Rehearse a representative data transition and retain reconciliation evidence.

Partly, with known gaps: A migration map exists, but unresolved writers or historical records can still prevent cutover. Resolve the prerequisite's remaining gaps before making the stated commitment.

Check: Document phase-specific writers, comparison checks and the disposition of mismatches.

No, the check is not met: Running two implementations without clear data authority can create conflicting state.

Check: Document phase-specific writers, comparison checks and the disposition of mismatches.

Unknown, not verified: This prerequisite is unverified, not proven absent. Resolve its evidence before making the stated commitment. Missing evidence prevents a conclusion. Identify the writer, schema compatibility, historical records and a mismatch-handling owner for each phase.

Check: Document phase-specific writers, comparison checks and the disposition of mismatches.

Has recovery been checked after the first new-system write?

Yes, supported by evidence: Recovery considers irreversible effects, not only deployment reversal.

Check: Retain the last safe reversal point and the separate post-write recovery procedure.

Partly, with known gaps: Pre-write rollback is known, but post-write reconciliation or recovery remains untested. Resolve the prerequisite's remaining gaps before making the stated commitment.

Check: Walk through a failed cutover after a new write, including downstream effects and recovery ownership.

No, the check is not met: A cutover plan could promise a reversal that no longer preserves data.

Check: Walk through a failed cutover after a new write, including downstream effects and recovery ownership.

Unknown, not verified: This prerequisite is unverified, not proven absent. Resolve its evidence before making the stated commitment. Missing evidence prevents a conclusion. A binary rollback is not enough when the new version changes data or emits external effects.

Check: Walk through a failed cutover after a new write, including downstream effects and recovery ownership.

Can a named team support old and new paths during overlap?

Yes, supported by evidence: Parallel operation has explicit people and support capacity.

Check: Review overlap load at each migration milestone and reduce it when a path is retired.

Partly, with known gaps: Some ownership exists, but overlap may crowd out delivery or incident response.

Check: Assign support and transition owners, estimate overlap work and agree which other work can move.

No, the check is not met: The migration depends on support work that has no available owner.

Check: Assign support and transition owners, estimate overlap work and agree which other work can move.

Unknown, not verified: Missing evidence prevents a conclusion. Check on-call load, incident response and maintenance capacity rather than assuming the old product stops needing care.

Check: Assign support and transition owners, estimate overlap work and agree which other work can move.

Have narrow repair and replacement been compared on the same scope?

Yes, supported by evidence: The choice considers lifecycle burden for comparable accepted outcomes.

Check: Retain assumptions and revisit the comparison when scope or overlap changes.

Partly, with known gaps: Implementation estimates exist, but missing transition or residual costs can reverse the choice.

Check: Compare one thin repair with one replacement slice using identical acceptance criteria and explicit exclusions.

No, the check is not met: Comparing build effort alone can hide the expensive part of replacement.

Check: Compare one thin repair with one replacement slice using identical acceptance criteria and explicit exclusions.

Unknown, not verified: Missing evidence prevents a conclusion. Include transition, residual contracts, support, testing and retirement. A sunk payment is not automatically avoidable savings.

Check: Compare one thin repair with one replacement slice using identical acceptance criteria and explicit exclusions.

Hypothetical worked example

These illustrative inputs are not your result, a customer case, or a benchmark. Change the inputs above to review your own situation.

Can the problem be isolated behind an interface?
We have not tested this
Can the current product stay live during a staged change?
Unclear
Do recent changes identify the behavior that needs repair?
Unknown, not verified
Is required existing behavior captured in acceptance tests?
Unknown, not verified
Is data ownership and reconciliation defined for the transition?
Unknown, not verified
Has recovery been checked after the first new-system write?
Unknown, not verified
Can a named team support old and new paths during overlap?
Unknown, not verified
Have narrow repair and replacement been compared on the same scope?
Unknown, not verified

Resolve the flagged prerequisites before committing to this decision

8 applicable prompts reviewed. 3 flagged prerequisites need owner review before the affected use or commitment. These are self-reported observations, not proof of readiness, a maturity grade or a recommendation to buy a service. Even an all-positive review needs supporting evidence.

  • Can the problem be isolated behind an interface? The migration boundary is the key unknown.
  • Can the current product stay live during a staged change? Operational constraints need evidence.
  • Do recent changes identify the behavior that needs repair? Missing evidence prevents a conclusion. Use incident records, change lead times and failing customer journeys. Code age alone is not evidence for replacement.
  • Is required existing behavior captured in acceptance tests? This prerequisite is unverified, not proven absent. Resolve its evidence before making the stated commitment. Missing evidence prevents a conclusion. Include exceptions, integrations and undocumented business rules, not just happy-path screens.
  • Is data ownership and reconciliation defined for the transition? This prerequisite is unverified, not proven absent. Resolve its evidence before making the stated commitment. Missing evidence prevents a conclusion. Identify the writer, schema compatibility, historical records and a mismatch-handling owner for each phase.
  • Has recovery been checked after the first new-system write? This prerequisite is unverified, not proven absent. Resolve its evidence before making the stated commitment. Missing evidence prevents a conclusion. A binary rollback is not enough when the new version changes data or emits external effects.
  • Can a named team support old and new paths during overlap? Missing evidence prevents a conclusion. Check on-call load, incident response and maintenance capacity rather than assuming the old product stops needing care.
  • Have narrow repair and replacement been compared on the same scope? Missing evidence prevents a conclusion. Include transition, residual contracts, support, testing and retirement. A sunk payment is not automatically avoidable savings.

Checks for this example

  • Run a two-week dependency and data-flow assessment.
  • Review deployment and rollback history with operators.
  • Trace a recent failed or delayed change and separate code, dependency and decision causes.
  • Have product and operations review representative inputs, outputs and exception cases.
  • Document phase-specific writers, comparison checks and the disposition of mismatches.
  • Walk through a failed cutover after a new write, including downstream effects and recovery ownership.
  • Assign support and transition owners, estimate overlap work and agree which other work can move.
  • Compare one thin repair with one replacement slice using identical acceptance criteria and explicit exclusions.