The module everyone avoids, the dependency nobody can name, and a migration that has to keep behaviour nobody wrote down.
TEAMS CARRYING A SYSTEM OLDER THAN MOST OF THE PEOPLE MAINTAINING IT
The system runs the business and has outlived its authors. Its rules are in the code, in a few documents that stopped being true years ago, and in the heads of two people, one of whom is leaving.
Before a migration somebody is asked for a map of what depends on what. It gets built by hand, over weeks, from grep and interviews — and it is out of date before the first module moves.
Everyone knows which one it is. The change that should take a day waits for the person who remembers, or does not happen at all.
The ones you find by breaking them: a report that quietly feeds a regulator, a job that another team depends on, a rule enforced in two places and changed in one.
Lineage and impact maps are assembled for each project and thrown away after it, because keeping them current costs more than making them.
When the person who knew goes, the system does not become undocumented — it becomes unowned.
What actually depends on this module, including the things that share no word with it?
Which business rules does this system enforce, and where is each one enforced?
If we move this piece first, what behaviour has to keep working on the old side?
What did this system do for the customer that nobody wrote down?
You ask what the billing module reaches, in those words. The answer names the customer paths, the rules, the records and the areas that lean on it — including the ones no search would return, because they share no word with 'billing'.
You take the rules it enforces as a list and decide, rule by rule, which ones move and which ones must keep holding on the old side.
Every push during the migration is reviewed against the product model, so a rule that quietly stopped holding is named the day it stops, not at the first customer complaint.
The migration starts from a map that stays current while it runs, and the behaviour that had to survive is a list somebody can check instead of a memory somebody has.
A WORKED EXAMPLE OF HOW THE WORK GOES, NOT A CUSTOMER CASE STUDY. WHEN WE PUBLISH A CUSTOMER RESULT IT WILL BE MEASURED AND NAMED.
What depends on what comes out of the code itself and is current with the last commit, so it survives the migration instead of expiring during it.
What a change reaches is a question, not a two-week study, and the answer names the parts in the product's own words.
The rules the system enforces are written down as the product, so a new person or an agent starts from them instead of from the person who is leaving.
Not by how much code moved, but by how much of the system is now visible to everyone who has to keep it running.
One shared model of the system for the people migrating it, with Business Review on the project so every push during the migration is held against the product.
OTHER COMPANY TYPES
Agencies and outsourcing · SaaS startups · AI product teams · Scale-ups · Enterprise product organizations · Solo founders · All six