
A growth company signs a customer several times its size, and its board starts looking for its maturity gap. Security review boards, change management, disaster recovery testing. Those gaps are predictable and cheap to close, and unless something is badly broken, I would rather see a credible plan and a person responsible for it than watch a forty-person company spend twelve months trying to look like a Fortune 500.
The gap that costs you money is in the codebase, and it is not on the checklist. Engineering forks the product for the whale. They copy the software, change it for the large customer, and keep the original running for everyone else. Fork is a friendly word. What the company has actually done is start shipping a second product while charging like it has one, and you underwrote the opposite. From the fork forward, engineering headcount grows with enterprise revenue. The multiple was built on that line staying flat.
Take whatever revenue-per-engineer number your model assumes and hold it still. That is the entire thesis: the next enterprise customer arrives on the existing engineering base, because that is what software does. Instead, the customer arrives with engineers attached — people who build, test, and support one version and nobody else’s. Six of them is $1.5M in permanent annual R&D expense earned by a single account, and it doesn’t amortize because the third whale brings its own six. Your model had that line flat for five years.
Every feature built after the fork has three possible outcomes. Build it on both versions. Test it on both versions. Or let one version go without it. The third answer wins surprisingly often, because it costs nothing this quarter, and the versions drift.
Some CTOs will tell you they avoided all this because everything still lives in one codebase behind feature flags. That can be perfectly sensible when a flag is temporary and controls a feature release. Permanent customer-specific flags are a different animal. Ten independent on/off flags permit 1,024 possible combinations. Seventeen permit 131,072. Nobody tests 131,072 combinations. The team tests the configurations it expects customers to use, and then on a Sunday afternoon the whale finds one it didn’t expect.
The org chart drifts at the same time. A dedicated customer team almost never works. The trouble starts when engineers are repeatedly borrowed from the core teams, work the urgent account request, return to their old roadmap, and get pulled back three weeks later. Two sets of priorities now own the same people, while mid-level management becomes territorial over them.
That is also how the $1.5M gets worse instead of better. I have seen attrition reach 40% in organizations that operated that way long enough. They were working constantly. Nobody could give them a stable definition of what mattered. On his way out, one of them said he felt like a firefighter on a treadmill. He took a pay cut to go somewhere he could build something. The engineers you replace him with cost the same and know none of the exceptions, because which version does what is knowledge that lives in people rather than in documents.
There is a good objection to all of this, and sometimes the fork is the correct decision. The revenue is real. Losing the account may be worse. A large customer may have a legitimate requirement the standard product cannot support quickly enough, and refusing every exception in the name of architectural purity is just as expensive as accepting every one. I have approved forks that put us in the weeds for a quarter and fought forks that merged back without incident. I have been wrong in both directions.
So the test is not whether the company forked. It is whether the fork was financed. Treat it as what it is: a temporary second product with an owner, a defined set of conditions that must be true before the versions converge, funded work to make those conditions true, and a date. Put the date on a calendar while the customer is still exciting, because “we’ll merge it back later” is where the economics stop working. Consolidation produces no new revenue. The next feature does. The next customer does. The urgent request in the sales pipeline does. Cleanup loses every quarter it is allowed to compete.
Then the second whale arrives, which is supposed to be good news and is usually part of the thesis. The company proved it can sell to one enterprise customer and now intends to repeat the motion. Except the second customer has its own exceptions.
Two customers, three products. I mean products only in the sense that they cost money: three artifacts that are built, tested, and deployed separately. If the CTO tells you it is one product with two configurations, ask whether a fix to the core ships to all three without its own build and its own test cycle. If it doesn’t, it is three products. Same engineering organization. Or worse, three products and a larger engineering organization.
The damage shows up in the financials before anyone names the cause. Engineering headcount grows with enterprise revenue. Gross margin improvement stalls. Release velocity slows. Professional services work leaks into R&D, which inflates gross margin while it happens but does not survive a quality-of-earnings review. The cost of supporting each additional large account rises instead of falling. The company has started selling engineering labor disguised as software.
The fix is to give customer variation a legitimate place to live. One core product, one release path, and customer-specific behavior in configuration and implementation layers that can be changed without rebuilding, retesting, and redeploying the core. That last clause is the whole test. If a customer’s exception requires rebuilding the core, the exception is in the core, regardless of what the architecture diagram says.
Sales will fight it, because an urgent customer request now goes through implementation instead of straight into the product. And at forty people, running two formal organizations may be heavier than the problem you are solving. That is a real cost. It is smaller than the one it prevents.
There is a cheap diligence test for this.
Ask the CTO for three numbers: production versions, long-lived customer-specific flags or branches, and engineers substantially dedicated to individual accounts. Then ask finance to put engineering headcount next to enterprise revenue for the last three years. If revenue doubled, what happened to the people required to build and support the product?
Then ask one more question. When the core product ships a feature, does every enterprise customer receive the same release? If the answer begins with “it depends on the customer,” keep going.
The fork looks almost free in year one. That is why companies do it. The cost appears when the enterprise motion starts working, and every new customer adds another product state to support. It appears again at exit, when a buyer’s technical diligence team asks how many versions are running in production. The better buyer asks the harder question. How many more engineers does this company need for every dollar of enterprise revenue it adds?
Somebody has to answer with a number. It should be you, three years before the buyer asks.