Skip to content

Solo Founder Product Engineering Handbook / Chapter 46

Technical Debt as Product Debt

Decide which technical debt to keep, fix, narrow, or delete by tracing its effect on customer value, learning, trust, and founder attention.

Debt Changes When the Evidence Changes

The client-reporting product from the previous chapter has a diagnosis: small agencies that finish source-field mapping tend to send another report and some pay for pilots, but too many qualified accounts stall before the first report. The founder now has a bounded experiment—give those agencies a guided mapping path and see whether they reach first value within an hour.

The codebase offers less tidy advice.

  • Source fields for the first project tool are handled by hard-coded rules.
  • Failed imports can be retried only from the console.
  • Pilot access is recorded partly in billing metadata and partly in founder notes.
  • Events do not reliably distinguish agencies from freelancers.
  • Report templates contain copied rendering logic.
  • Permissions assume one owner per agency.

Every item is technical debt. That fact does not decide which one deserves the week.

The copied templates may be the ugliest code. The single-owner permission model may have the largest imagined future. Yet neither necessarily obstructs the next experiment. Failed imports and missing segment data do: one prevents agencies from reaching the result, while the other prevents the founder from knowing whether the guided path worked. The split billing state is more dangerous still because customers are already paying.

For a solo founder, debt is not a property of code alone. It is a product liability expressed through a workflow: slower learning, a broken customer promise, repeated support, a trust risk, or a product direction that has become expensive to follow.

The same implementation can move between those categories. A shortcut that bought useful evidence last month can obstruct the next piece of evidence this month. Debt must therefore be judged in time, against what the product has learned and what it is about to ask of customers.

A Shortcut Should Buy a Specific Answer

The hard-coded importer was once a sound bargain. The founder did not know whether agencies cared enough about weekly reporting to change their behavior or pay. Supporting one common project tool exposed that product question much sooner than an integration framework would have.

Useful debt has three marks:

  1. The shortcut is deliberate rather than accidental.
  2. It serves a named product question.
  3. A visible event will force reconsideration.

In this case, the note might have been: “Support one source until five target agencies send a second weekly report, or until a credible agency cannot join because it uses another source.” The trigger matters. Without it, “temporary” becomes a story the founder tells while the system quietly acquires customers, edge cases, and obligations.

The shortcut remains defensible after the first retained agencies appear if the guided-mapping experiment still concerns that same source. Building a general connector platform now would answer no disputed product question. But the failed-import procedure has changed status. Console retries interrupt the founder, hide failures from users, and can make a Monday report late. What began behind the curtain now reaches the core value moment.

Good debt is not good forever. Evidence spends its permission.

A technical debt triage board with lanes for useful shortcut, slows learning, hurts users, and trust or scale risk, ending in a rule to pay down debt when it blocks learning, harms users, increases risk, or raises founder load.
A shortcut can move across these lanes as evidence, customer dependency, and founder load change.

Follow the Consequence to the Workflow

“Clean up the backend” cannot compete honestly with discovery, support, sales, or the next experiment. A debt item becomes decidable only when it names who pays and how.

Instead of “imports are brittle,” write:

When a small agency’s import fails before its Monday report, the customer cannot reach the product’s core result and the founder must inspect and retry the job manually.

That sentence reveals user harm and founder load in the same event. It also constrains the repair. The founder may need a visible failure state, a safe retry, and enough logging to diagnose the cause. They do not yet need a universal ingestion platform.

Instead of “analytics are messy,” write:

Because activation events lack a reliable segment label, the founder cannot tell whether guided mapping helps the agencies that later retain or merely changes the aggregate funnel.

This debt slows learning. Fix it before running the experiment whose result depends on that distinction. The repair might be one stable account attribute and a check that the relevant events carry it. A broad analytics rebuild would outrun the question.

Instead of “billing needs refactoring,” write:

A paid pilot’s access and cancellation state can disagree between the billing provider, the application, and the founder’s notes, so neither the customer nor the founder has one trustworthy answer about entitlement.

This is not cleanup to schedule after growth. It is a trust boundary already in use. The founder should establish an authoritative state and a reconciliation path before inviting more paid dependence.

The discipline is simple: trace the implementation weakness until it touches a customer or founder workflow. If no meaningful consequence appears, the item may still deserve documentation, but it has not earned priority.

Triage the Agency Product

The founder can now make six different decisions rather than declaring a general debt sprint.

Fix failed-import handling now. It blocks the core workflow, creates deadline-sensitive user harm, and consumes support time. Success is observable: a customer can see the failure, a safe retry does not duplicate work, and the founder can diagnose the job without opening the production database.

Clarify billing state now. Paid pilots have already created a promise around access, cancellation, and charges. Quiet operation is not evidence of safety; it may only mean the disagreement has not been exercised yet. The repair should make one state authoritative and surface exceptions for deliberate reconciliation.

Repair segment attribution before the mapping experiment. The experiment is worthless if its result cannot be separated by target segment. This is a small change with direct learning value, not a request for an analytics platform.

Keep the single-source importer for this experiment. It still buys a specific answer and has not yet excluded the segment under test. Record the next trigger: a retained target agency needs another source, or source variation makes the guided path misleading.

Document the permission assumption. One-owner access is an optionality limit, but the current agencies have not proved that collaboration is the next constraint. If account managers or client reviewers repeatedly need access, the item changes category. Until then, an enterprise permission model would harden an imagined product.

Defer or delete the duplicated template work. If the copied logic rarely changes and causes no failures, extraction can wait. If some templates belong to weak segments or abandoned experiments, remove them before designing a shared abstraction. Deletion pays down code, test, documentation, support, and cognitive surface at once.

This is why a debt backlog sorted by severity labels is insufficient. Timing comes from product evidence. The founder is not choosing between “good engineering” and “shipping.” The founder is choosing which technical change protects the next honest product move.

Trust Debt Has a Shorter Clock

Most debt can wait until its consequence is observed. Debt at a trust boundary deserves a stricter standard because the first clear evidence may be an incident.

Treat the following as trust boundaries when the product already relies on them:

  • authentication, permissions, account isolation, and private data;
  • billing, cancellation, refunds, invoices, and plan enforcement;
  • data integrity, backups, migrations, and recovery;
  • the reliability of the result customers depend on;
  • administrative actions that can alter customer data;
  • security, legal, or compliance promises the product makes.

“Before scale” means before the next increase in dependency, not after a particular user count. The threshold may be the first paid pilot, the first team account, the first write access to a customer’s system, the first annual contract, or the first contractor with production access.

The response should still be proportional. A first paid pilot does not require the controls of a public company. It does require the founder to know which billing state governs access, how a mistaken charge will be found, and how customer data can be recovered. Scarcity of customers increases the value of each trust relationship; it does not excuse carelessness.

Founder Load Is Product Evidence

Some shortcuts teach through manual work. Watching five customers map source fields may reveal the vocabulary, exceptions, and defaults that an automated flow should embody. Automating before that learning would conceal the workflow too early.

Manual work stops being informative when it repeats without changing the founder’s understanding. Then it becomes an operating tax. Track it in units that expose the consequence:

  • minutes of intervention per active account;
  • customers blocked before first value;
  • recurring fixes or console operations each week;
  • procedures only the founder can perform;
  • experiments postponed because change feels unsafe;
  • support cases that cannot be explained from product state and logs.

These measures do not turn debt triage into accounting theater. They distinguish an ugly module that costs nothing from a tiny edge case that interrupts every Monday. Founder attention is part of product capacity. Repeatedly spending it on a solved lesson is product debt.

Do Not Encode an Unmade Product Decision

Debt also grows when architecture is asked to preserve every possible answer. A founder uncertain about the target customer builds generic roles. Uncertainty about the core workflow becomes a configuration engine. Uncertainty about report types becomes a template platform. The system looks flexible because the product has declined to choose.

That flexibility is often expensive to change precisely because no real workflow shaped it. Before paying down such debt with another abstraction, return to the product decision:

  • Which segment has earned support?
  • Which workflow has earned durability?
  • Which variation has appeared in behavior rather than imagination?
  • Which old promise can be narrowed or removed?

Sometimes the right debt payment is a product decision followed by deletion. Narrowing to small agencies may make freelancer settings, enterprise roles, and speculative report modes unnecessary. Removing them is not a retreat from engineering quality. It prevents old uncertainty from determining the future product.

Keep One Debt Note, Not a Shadow Roadmap

A useful debt record is small enough to review beside the product roadmap. For each active item, keep only the information needed to make and revisit the decision:

DEBT ITEM

Implementation weakness:
Affected customer or founder workflow:
Observed consequence:
Evidence:
Decision: keep / fix now / refactor later / delete / narrow
Review trigger:
Expected result:

The expected result should be visible outside the refactor itself: the next experiment can ship safely, a failed import no longer needs a console retry, support diagnosis takes minutes rather than guesswork, billing state has one answer, or a collaborator can perform a documented procedure.

Keep the active list shorter than the roadmap. Archive items whose consequences disappeared. Delete items attached to removed features. When a debt note cannot name an affected workflow or evidence, do not schedule it merely because the implementation is embarrassing.

Now return to the six agency-product items. The chapter has not produced a cleanup phase. It has produced three bounded repairs, one explicit permission to keep a shortcut, and two areas to revisit or remove only when the evidence changes. That is enough.

The next question is narrower still. Once evidence has shown which workflow deserves durability, how should the founder change its structure without turning a repair into a rewrite? That is the work of refactoring after evidence.