The rebuild vs refactor decision is where engineering ambition goes to die or pay off. Rebuild when the architecture prevents you from shipping features your customers need. Refactor when the code is messy but the architecture is sound. Most of the time, refactor. Rebuilds take twice as long as estimated. Refactor until the architecture itself blocks the features customers need, and not one month before.
Scope your MVP to one workflow, not one market
The biggest MVP mistake is trying to serve an entire market instead of a single workflow. A workflow is a specific sequence of tasks that a specific person does to accomplish a specific goal. Serve one workflow for one persona exceptionally well and you have a product. Serve five workflows adequately and you have a demo.
The test for your MVP scope: can you describe the before and after in one sentence? Before: the customer manually exports data from three tools into a spreadsheet. After: the customer clicks one button and the report is ready. If your before-and-after takes a paragraph, your scope is too broad. Narrow it until the sentence is crisp.
Technical debt is a business decision, not an engineering one
Technical debt gets framed as an engineering problem. It is not. It is a business decision about trade-offs between speed and quality. Sometimes shipping fast with debt is the right call. Sometimes it is not. The decision should be made consciously, with the business context, not by default.
The framework: track technical debt like financial debt. Know how much you have, what the interest payments are (slower development, more bugs, harder hiring), and when you plan to pay it down. Allocate twenty percent of engineering time to debt reduction. Not zero, because it compounds. Not fifty, because you still need to ship. Twenty percent is the sustainable rate.
Build versus buy depends on your differentiation
The build-versus-buy decision should be based on one question: is this capability a differentiator for your business? If it is, build it. If it is not, buy it. Your CRM, your payroll system, your analytics platform are not differentiators. Your core product is.
The mistake is building everything because you can. Engineering time is your scarcest resource. Every hour spent building something you could buy is an hour not spent on your differentiator. The counter-argument is that off-the-shelf tools do not fit your workflow. Sometimes that is true. Usually it is an excuse. Adapt your workflow to the tool unless the workflow is genuinely unique.
Prioritize features by impact, not by request volume
The features your customers ask for most loudly are not always the features that will have the most impact. Loud customers are often edge cases. The features that matter are the ones that open up new use cases, reduce churn, or expand your addressable market.
The prioritization framework: score each feature on three dimensions. Reach: how many customers does this affect? Impact: how much does it improve their workflow? Effort: how long does it take to build? Divide reach times impact by effort. Build the highest scores first. Re-score quarterly as your customer base and market change.
User research at early stage is just talking to customers
You do not need a research team or a formal process. You need to talk to five customers per week and ask them three questions: what are you trying to accomplish, what is getting in the way, and what would you do if our product did not exist? The answers tell you what to build next.
The format that works: thirty-minute video calls with a loose script. Record them with permission. Review the recordings monthly to identify patterns. After twenty conversations, you will have a clear picture of what your customers need. After fifty, you will know more about your market than any analyst report could tell you.
Frequently asked questions
When should a startup rebuild instead of refactor?
When the architecture prevents shipping features customers need. Refactor when the code is messy but the structure is sound. Most of the time, refactor: rebuilds take twice as long as estimated and deliver half the promised benefit.
Why do rebuilds almost always disappoint?
Because estimates assume the new system only needs today's features, and the old one carries years of undocumented behavior. The rebuild rediscovers every edge case in production, at customer expense.
How do I refactor safely while shipping?
In slices, behind the same interface, with tests first. Each release leaves the code better and the product working. A refactor that requires a feature freeze is a rebuild wearing a smaller name.
What are the real signs a rebuild is justified?
Features take weeks that should take days, every fix breaks something unrelated, and new engineers cannot become productive. When the architecture is the bottleneck for the business, the rewrite is a business decision.
Who should make the rebuild versus refactor call?
Engineering proposes, the founder decides with eyes open on the timeline, and both sign the estimate in writing. Double the engineering estimate, halve the expected benefit, and decide again with those numbers.