I’ve learned to be suspicious of both sentences.
Neither sentence means the product is in trouble. Startups are messy, estimates move, and small teams naturally concentrate knowledge. But when those sentences become the standard explanation for delayed features, risky releases, and recurring incidents, they usually tell you something important.
Most founders do not discover a software problem by reading the code. They discover it in a meeting.
A pricing change that sounded like a few days suddenly touches billing, permissions, onboarding, and an integration nobody has opened in months. The estimate moves from one sprint to three. Friday’s release depends on the engineer who originally built the feature. On Monday, support reports that a customer found the same problem the team thought it had fixed two months earlier.
Then someone says, “We may need to rewrite the whole thing.”
Maybe. But that should not be the first conclusion.
I have seen old, imperfect systems support healthy companies because the team understood them and could change them safely. I have also seen modern architectures become almost impossible to operate because ownership was scattered and nobody could follow a change from the customer’s action to what happened in production.
So “Was it built badly?” is a fair question. It is also too broad to be useful on its own.
A better question is: can the company still understand, change, release, and recover the product with reasonable confidence?
When the answer is increasingly no, the software is no longer only an engineering concern. It is starting to shape what the business can and cannot do. You do not need to read code to notice that shift. The first signs usually appear in the way work moves through the company.

