Build the product

We ship fast but our codebase is turning into a mess. How much should a two-person startup care about tech debt?

The short answer

Some tech debt is the correct price of learning fast, and paying it all down early is a way to avoid talking to users. As a starting point: take on debt freely in code that might get deleted next month, but keep the parts you touch every week (auth, payments, core data model) clean, because slow changes there quietly kill your shipping speed. The tell that debt has gone too far is when a small change starts taking three days and you stop shipping weekly at all.

Go deeper, your way

20 hand-picked resources, 18 link-checked. Pick how you want to dig in.

▶️ Video
✓ Link checked Free Beginner

Why we picked it The person who coined technical debt explains what he actually meant, and it is not what most founders assume. Cunningham says debt is fine when you ship with partial understanding and then pay it back with a rewrite as you learn, and the danger is never repaying it. Five minutes here reframes debt as a deliberate tool rather than a moral failing to be scrubbed away.

Debt Metaphor

On YouTube (Ward Cunningham) by Ward Cunningham 5 min

  • A little debt is a reasonable way to ship and learn faster
  • Debt only becomes dangerous when you never pay it back
  • Rewriting as understanding improves is the repayment, not a sign of failure
Watch on YouTube youtube.com
▶️ Video
✓ Link checked Free Beginner

Why we picked it Michael Seibel, who ran YC, makes the blunt case for shipping something almost embarrassingly simple and learning from real users instead of chasing a perfect first version. His line that if it takes more than a month to build, it is not an MVP is a practical yardstick for anyone stuck polishing. Watch it when the urge to add one more thing before launch takes over.

How to Build an MVP

On Y Combinator Startup Library by Michael Seibel ~10 min video

  • An MVP is the fastest way to start learning what users actually want, so its job is speed to feedback, not completeness.
  • Keep the first version ridiculously simple: if it takes more than about a month to build, you are overbuilding.
  • The fear of losing customers to a rough product is usually overblown; you learn far more from shipping than from refining in private.
Open ycombinator.com
▶️ Video
✓ Link checked Free Intermediate

Why we picked it A founder describes running a startup on weekly shipping while deliberately taking on debt, and names the exact tripwire you care about. He talks about a technical debt runway: debt is fine until maintenance eats most of your time, at which point you have run out. The scope cutting method (cut until one more cut breaks the product) is directly usable.

Ship a feature every week, embrace technical debt, ruthlessly cut scope

On Lenny's Podcast (YouTube) by Gaurav Misra

  • Taking on debt is how a small team outpaces bigger ones
  • You have run out of runway when upkeep eats most of your time
  • Cut scope hard instead of lowering quality to hit a date
Watch on YouTube youtube.com
▶️ Video
✓ Link checked Free Intermediate

Why we picked it Premature abstraction is a sneaky form of debt that fast moving teams create while trying to be clean. Abramov tells the story of a DRY abstraction that slowly grew special cases until it strangled the codebase, and argues a bad abstraction is worse than a little duplication. It teaches you when not to tidy, which matters as much as when to.

The Wet Codebase

On Deconstruct 2019 by Dan Abramov

  • A bad abstraction hurts more than some copy pasted code
  • Wait for a clear pattern before you abstract
  • Be willing to inline and delete an abstraction that went wrong
Open deconstructconf.com
🎧 Podcast
✓ Link checked India Free Intermediate

Why we picked it A leading early-stage Indian VC firm answering the questions founders wish they could ask a VC face-to-face, including how they pick startups and why pitch decks fail. Direct from the people writing the cheques in India.

Prime Venture Partners Podcast: Fundraising Masterclass for Founders

On Prime Venture Partners Podcast by Prime Venture Partners 30-50 min per episode

  • Learn how an Indian early-stage fund actually filters and selects the few startups it backs
  • Understand common pitch mistakes from the investor's side of the table
  • Get realistic expectations on the Indian seed process and what earns conviction
Listen on Spotify open.spotify.com
✍️ Essay
✓ Link checked Free Intermediate

Why we picked it This is the canonical explanation of what a reviewer actually means when they flag your inherited code as risky. Fowler frames messy code as debt you pay interest on: every future feature gets slower, which is the real cost you inherit from a rushed agency build. Read it to understand why a reviewer separates crufty-but-stable code (leave it) from cruft in code you touch often (fix it), so you can read a review report with judgment instead of panic.

Technical Debt

From martinfowler.com by Martin Fowler About a 10 minute read

  • Technical debt is not about ugly code, it is about the extra time every future change costs you.
  • A reviewer prioritizes cruft in frequently changed areas, and often leaves stable messy code alone.
  • The deliberate versus reckless, prudent versus inadvertent quadrant helps you judge how worried to actually be.
Open martinfowler.com
✍️ Essay
✓ Link checked Free Beginner

Why we picked it This is the canonical framing for exactly your question: not all messy code is the same. Fowler splits debt on two axes, whether you took it on deliberately or by accident, and whether the call was prudent or reckless. For a two-person team shipping fast, the useful cell is deliberate and prudent: you know you cut a corner, you thought about the payoff, and you plan to come back. That is a healthy place to be, and this piece gives you the language to tell it apart from the reckless kind that actually hurts.

Technical Debt Quadrant

From martinfowler.com by Martin Fowler About a 5 minute read

  • Debt taken on deliberately and prudently (a conscious shortcut with a payoff in mind) is fine, and often smart, when you are racing to ship.
  • The debt to fear is the reckless kind: messy code from not knowing better, or knowingly cutting corners you cannot afford. That is the interest that compounds.
  • Some debt is inadvertent and prudent, you only learn the right design after building it. That is unavoidable and not a failure, so do not beat yourselves up over it.
Open martinfowler.com
📄 Article
✓ Link checked Free Intermediate

Why we picked it This answers the exact fear behind your question: does keeping code clean slow you down? Fowler separates internal quality (architecture users never see) from external quality, and argues that good internal quality pays for itself within weeks, not years. It is the economic case for keeping the parts you touch weekly clean.

Is High Quality Software Worth the Cost?

From martinfowler.com by Martin Fowler

  • Users cannot see internal quality, but it decides your future speed
  • Low internal quality feels faster at first, then flattens fast
  • Clean code you touch often pays back in weeks, not years
Open martinfowler.com
📄 Article
✓ Link checked Free Advanced

Why we picked it This lays out when accumulated shortcuts actually start slowing a growing company down, versus when they are just cosmetic. It gives you language to tell your co-founder the difference between debt that is costing you real velocity and debt that is only annoying. Use it to pressure test whether your no-code setup is genuinely blocking growth.

Bottlenecks of Scaleups: Tech Debt

From martinfowler.com by Tim Cochran and Carl Nygard 20 min read

  • Measure tech debt by the velocity it costs, not by how ugly it looks
  • Debt only matters once it blocks a thing you are trying to do now
  • Address the specific bottleneck rather than rebuilding everything
Open martinfowler.com
📖 Book
✓ Link checked Paid Beginner

Why we picked it The single best thing ever written on customer conversations. It teaches you to ask about the customer's life and past behaviour, not your idea, so you can't be lied to. If a founder reads one thing before talking to a single customer, it's this.

The Mom Test

From momtestbook.com by Rob Fitzpatrick ~130 pages

  • Talk about their life, not your idea.
  • Ask about specifics in the past, not opinions about the future.
  • 'That's so cool, I'd totally buy it' is a compliment, not data, dig for commitment and evidence.
Open momtestbook.com
✍️ Essay
✓ Link checked Free Intermediate

Why we picked it When you and your technical hire are arguing about the stack, this essay reframes the whole fight: the goal is not the best or newest tool, it is shipping a product and keeping the company alive. McKinley's idea that every team has only about three innovation tokens gives you a shared, honest test to settle most stack disagreements before they turn personal. It is the closest thing to a neutral referee both sides can respect.

Choose Boring Technology

From mcfunley.com by Dan McKinley ~20 min read

  • Every team gets about three innovation tokens, so spend novelty only where it is core to the product, not on the database or the framework.
  • Prefer well understood technology, because its failure modes are documented and the long-term cost of keeping things running dwarfs any early convenience.
  • Adopting new tech should require a real conversation about the problem it solves, not one person's preference, which is exactly the frame a founder and hire need.
Open mcfunley.com
📖 Book
✓ Link checked Paid Intermediate

Why we picked it The classic on what professional, maintainable code and habits look like, the standard your reviewer is measuring against. Even skimming the free tips list gives you a vocabulary for the qualities that make code a foundation rather than a liability. A worthwhile long-term investment if you keep building software products.

The Pragmatic Programmer: Your Journey to Mastery

From The Pragmatic Bookshelf by Andrew Hunt and David Thomas 352 pages

  • Defines the habits of professional, careful engineering
  • Readability and low duplication signal a healthy codebase
  • Sets the bar a good reviewer holds the work to
Open pragprog.com
📖 Book
✓ Link checked Paid Intermediate

Why we picked it The canonical case that you can reshape a system in safe, small steps rather than one dramatic rewrite. Fowler shows how to change structure without changing behavior, backed by tests, so quality improves while the product keeps shipping. This is the discipline that makes the incremental path actually work in practice.

Refactoring: Improving the Design of Existing Code (2nd Edition)

From martinfowler.com by Martin Fowler 448 pages

  • Improve design in small behavior-preserving steps
  • Tests are what make continuous refactoring safe
  • You can keep shipping while the codebase gets healthier
Open martinfowler.com
✍️ Essay
✓ Link checked Free Intermediate

Why we picked it This is the canonical warning against throwing away working code and rebuilding from scratch, told through Netscape's rewrite that handed years to competitors. Read it before you convince yourself the messy MVP needs a clean-slate v2: it names the exact trap you are about to walk into. Treat it as a starting point, not gospel, since sometimes a rewrite really is right, but the burden of proof is on you.

Things You Should Never Do, Part I

From Joel on Software by Joel Spolsky ~10 min read

  • Old code that looks ugly is usually carrying years of hard-won bug fixes and edge-case knowledge you cannot see, and a rewrite silently throws all of it away.
  • It is harder to read code than to write it, which is why the instinct to rebuild almost always feels stronger than it should.
  • Most of what tempts you toward a rewrite (architecture, slow spots, cosmetic mess) can be fixed incrementally through refactoring instead.
Open joelonsoftware.com
📄 Article
✓ Link checked Freemium Intermediate

Why we picked it Concrete, field-tested advice on deciding which debt to pay and how to justify it. Orosz and Franco share practical rules of thumb for tying rewrite pressure to real jumps in usage or scope, which matches your point about rebuilding under real load rather than on a hunch. It also covers measuring the payoff so cleanup does not become an endless detour.

Paying down tech debt

From The Pragmatic Engineer by Gergely Orosz and Lou Franco 20 min read

  • Tie rewrite decisions to real jumps in scale or usage
  • Pick debt to repay based on where it slows real work
  • Measure the impact of cleanup so it stays honest
Open newsletter.pragmaticengineer.com
📄 Article
✓ Link checked Free Beginner

Why we picked it Written by a fractional CTO for exactly your stage, this frames debt as a trade you make on purpose, not a moral failing. It draws the line between debt taken knowingly with a plan and mess that piles up while everyone pretends it is fine. A grounded read for founders deciding where the clean parts of the codebase have to be.

What Is Technical Debt? A Pragmatic Guide for Startup Teams

From damiangalarza.com by Damian Galarza

  • Intentional debt with a plan is rarely the problem
  • Debt turns toxic when the team pretends it does not exist
  • Protect quality in areas tied to revenue, like login and checkout
Open damiangalarza.com
📄 Article
✓ Link checked India Free Advanced

Why we picked it The CTO of India's largest broker explains how a tiny team scales huge load by optimizing the application before touching infrastructure or rewriting. It is a strong reminder that hitting a limit usually means fixing the slow query, not rebuilding the system. A grounded Indian counterweight to the belief that scale requires a from-scratch rewrite.

Scaling with common sense

From Zerodha Tech Blog by Kailash Nadh 15 min read

  • Exhaust easy optimizations in the app before rebuilding
  • Most bottlenecks are the database, not the platform
  • Simple, boring, well understood setups scale further than you think
Open zerodha.tech
📄 Article
✓ Link checked Free Beginner

Why we picked it A calm, stage aware walkthrough of when to ignore debt and when it starts to matter. It makes the point that before product market fit you often should not think about debt, because your product may be rewritten anyway, then flags the signals that it is time to pay attention. Good for setting expectations with a nervous cofounder.

How to handle early startup technical debt

From Cockroach Labs by Michelle Gienow

  • Before product market fit, some debt is not worth worrying about
  • The signal to act is when things break and changes get painful
  • Debt in code you may soon delete is cheap, take it freely
Open cockroachlabs.com
✍️ Essay
Free Beginner

Why we picked it The permission slip to recruit users by hand, do things manually, and deliver 'insanely great' experiences to your first few customers. The cheapest, most honest way to validate demand is to go get it one person at a time.

Do Things That Don't Scale

From paulgraham.com by Paul Graham ~15 min read

  • Recruit your first users manually, don't wait for them to come.
  • A tiny group of users who love you beats a big group who like you.
  • Manual, unscalable effort early is a feature, not a failure.
Open paulgraham.com
📖 Book
Paid Intermediate

Why we picked it Beck argues for small, cheap tidyings over grand restructurings, and gives you a way to reason about when cleanup is worth it. He frames design as a series of reversible decisions with real costs and options, which is exactly the mindset to resist a premature rebuild. Short and practical for a founder who codes.

Tidy First? A Personal Exercise in Empirical Software Design

From O'Reilly Media (Kent Beck) by Kent Beck 120 pages

  • Prefer small reversible tidyings over large restructurings
  • Only tidy where it makes the next change easier
  • Treat design choices as economic decisions, not aesthetics
Open oreilly.com

People also ask

Also in D2C

The same ground, over in Make your product, our D2C track.

Also in How Founders Use AI

How founders actually use AI for this, over in Vibe Coding.

eChai Partner Brands