Aleksey Dorogov freelance software engineer
← All writing Inherited code

The first two days on a codebase nobody can explain

May 2026 2 min read Aleksey Dorogov

A surprising share of my work starts the same way: a founder has a product that earns money, a repository they cannot read, and a developer who is no longer answering. The instinct is to start fixing. The instinct is wrong. For the first two days I do not change behaviour at all.

Day one is provenance. Can I run it locally? Can I deploy it? What happens on deploy — who or what runs migrations, where do secrets come from, is there a step that only ever happened on someone’s laptop? Undocumented deploys are the single most common thing standing between a client and a working release, and they cost nothing to discover before you need them at midnight.

Then I read the money path. Not all of the code — the path from a user’s intent to a row in the database that the business cares about. Signup, checkout, booking, whatever it is. Everything else can stay a mystery for a while.

The second day I write down what I am afraid of. Literally a list: this cron job has no logging, this table has no foreign key, this integration retries forever. Ranked by what happens to the business if it fails on a Saturday. That list, not the code quality, is what I send the client — and it is usually the first time anyone has told them what they own in language they can act on.

Only then does work start, smallest reversible change first, with a way to verify it. Rewrites get proposed in month three if at all. Almost every codebase I have been handed was better than it looked; it was just unlit.

Sitting on a version of this problem right now? I'd rather look at it than guess.

Email me
Site down? Message me now Live chat · usually reply in minutes