Legacy as 'Starenka': Why You Don’t Rewrite a Living System

A philosophy of working with legacy in production.

2025-09-30

Note: Starenka — which in Ukrainian means “little old lady.”

This is Starenka. She’s a cat. Yes, my wife gave her some name (my wife believes names are important — very important), but Starenka is exactly Starenka, not some Kerri.

Starenka is old (surprise). No one knows her exact age; we found her already like that. She’s small, timid, and toothless.

It’s hard to eat when you have no teeth. It’s hard to live when you can’t eat.

But you know what? Starenka lives. She wants to live, and she does everything she can to keep doing so. She came to our car on her own — and refused to leave.

She needs her food soft or ground up. She wants affection, wants someone to pet her, but when you reach out — she flinches, instinctively pulls her head back (who said her street life was kind?).

So… what am I talking about? You work with old code, right? It’s ancient, written long ago, unfashionable, irrelevant, ugly?

Well, that’s your Starenka. Your project wants a little love too.

“Everything written before is outdated, obsolete, useless. We need to throw it all away and rewrite from scratch.”

There it is — the key phrase, glowing in the eyes of so many new developers when they first see this.

“Everything must be thrown out and rewritten from scratch,” right? No. Forget it — erase that phrase from your vocabulary. Don’t think about the white monkey. It’s impossible.

If you’re a bit of a pathologist and your project is more like a dead patient — you’re only there because someone has to be — then fine: there are no resources left to rewrite. A corpse is a corpse; don’t torture the body.

But if your project is alive, active, still breathing — with new features and ongoing support — rewriting it is even more impossible.

First of all, it’s financially pointless.

Secondly — what will we get as a result of rewriting? A shiny new candy? Everything’s super-modern, polished, sparkling? That terrifying technical debt — now zero?

In reality, technology has already aged a little during the couple of years you’ve been rewriting (IT works that way). And your technical debt? It didn’t shrink — it skyrocketed somewhere near the Starlink orbit (if you’re still reading, you already know why).

As a result, we didn’t just fail to win anything — we lost, and we lost almost everywhere.

Legacy doesn’t need a revolution. It needs care.
Not heroics, but patience. Not rewriting, but understanding.

Old code doesn’t need to be thrown away — it needs to be healed.

If today you have an extra five minutes — improve something: optimize, refactor a class, a file, a method — even a single line. No rush, no heroics. Step by step.

And then, one day, you’ll see: the system begins to live on its own, quietly purring to itself.