Engineering Decisions That Quietly Hurt Growth
FinTech

Engineering Decisions That Quietly Hurt Growth

None of these look like mistakes. Each is a defensible call that a competent engineer would make — and each puts a ceiling on something commercial that nobody will trace back to a design review eighteen months later.

Published May 23, 20269 min readUpdated May 23, 2026

Written by · Full-Stack Agentic AI Software Engineer — AI Agents, Automation & Revenue Systems for GTM/RevOps teams

In brief

Which engineering decisions damage business growth without anyone noticing at the time?

The dangerous ones are all locally reasonable. Hard-coding a single currency, tax jurisdiction or address format closes international expansion until someone funds a migration. Building a permission model with two roles blocks every enterprise deal that requires granular access, and enterprise buyers do not negotiate on that point. Making onboarding require a human touch caps growth at the rate you can hire, which shows up as a CAC payback period that will not improve — Benchmarkit's 2026 cohort of 342 companies has a median of 16 months, and self-serve is the main lever on it. Storing money as a float, or timestamps without timezones, produces a class of correctness bug that damages trust rather than uptime. Single-tenant isolation sets a gross-margin ceiling that no operational discipline recovers. What these share is a long delay between the decision and the consequence, and an attribution problem so complete that the cost is never charged back to the choice.

  • Every item here is a defensible decision at the time, which is exactly why the pattern survives — nobody is being careless
  • The common structure is a long feedback delay plus total attribution failure, so the cost is never traced to the design review
  • Permissions and tenancy are the two most expensive to reverse, and both are usually decided in an afternoon by whoever was free
  • Anything that puts a human in the activation path caps growth at hiring rate and shows up as a CAC payback that never improves
  • The cheap defence is one question in design review: what does this make impossible or expensive later, and who would have to pay for it

Evidence notes

Benchmarkit 2026 SaaS Benchmarks (342 companies)

Median CAC payback of 16 months, improved from 18 in 2024, with top quartile at 6 months or less and fourth quartile as long as 48 months. Median Rule of 40 score 25%, up from 15%. Net revenue retention averaging around 106%, top performers above 120%. Software businesses generally expected above roughly 75% gross margin. Self-reported survey data from participating companies, so directional rather than precise.

Stripe / Harris Poll, 'The Developer Coefficient' (2018)

13.5 hours of an average 41.1-hour developer week on technical debt and 3.8 on bad code, roughly 42%. The recurring cost of decisions of exactly this kind, paid by people who were mostly not in the room when they were made.

Richard I. Cook, 'How Complex Systems Fail'

Observation 7: post-accident attribution to a root cause is fundamentally wrong, because each contributing fault is insufficient alone and only jointly sufficient, and root-cause framing reflects a social need to localise blame rather than a technical understanding of failure. The same attribution problem applies to commercial damage, which is why these decisions are never charged back.

David Skok, 'SaaS Metrics 2.0'

Sets out CAC payback and gross margin as the two efficiency measures that determine whether growth is affordable, which is the mechanism by which an activation bottleneck or a tenancy decision becomes a commercial constraint rather than an engineering preference.

Continue with purpose

Every decision in this post is one a competent engineer would make, for good reasons, on an ordinary afternoon. None of them is a mistake in any sense that would survive a code review.

That's what makes them worth writing about. The engineering decisions that hurt a business are almost never the incompetent ones — those get caught. They're the reasonable ones whose cost arrives eighteen months later, in a different department, attributed to something else entirely.

The structure they share

Two properties, and both have to be present for the pattern to hold.

First, a long delay between the choice and the consequence. Long enough that the people involved have moved teams, and long enough that nobody would think to connect the two even if they remembered.

Second, an attribution failure. The damage surfaces as a lost deal, a headcount request, or a margin that won't expand — all of which are owned by someone who has no visibility into a two-year-old design review. Cook's seventh observation applies here as cleanly as it does to outages: the harm has several contributors, none sufficient alone, so picking one to blame reflects a social need rather than an understanding of what happened. If engineering decisions that quietly hurt growth needs to survive contact with a marketing team, XenGrowth has the operational side.

The cost is real, it is large, and there is no mechanism anywhere in a normal company that would route it back to the decision that caused it.

The specific ones

Decision

Why it's reasonable

What it closes

Delay

Single currency, hard-coded

You have one market and no plans

International expansion, until funded as a project

1–3 years

Two roles: admin and user

You have twelve customers who all trust each other

Every enterprise deal requiring granular access

12–24 months

Human-touch onboarding

Talking to customers is how you learn

Growth beyond hiring rate; CAC payback stops improving

9–18 months

Money as floating point

It works and nothing complains

Trust, via reconciliation discrepancies

Whenever someone reconciles

Single-tenant isolation

It answers the security questionnaire

Gross margin ceiling; the low end of the market

18 months–3 years

Timestamps without timezones

Everyone is in one office

Correctness for every customer elsewhere

First international customer

No audit log

Nobody asked for one

Regulated industries entirely

At the first compliance review

Two rows deserve more than a table cell, because they're the expensive ones and the ones most often decided by whoever happened to be free that week.

Money as floating point

Worth including because it is the one that damages something no dashboard measures. Binary floating point cannot represent most decimal fractions exactly, so sums of currency amounts drift by fractions of a cent, and the drift accumulates differently depending on the order operations happen in. Two code paths that should agree produce totals that differ in the last place.

Nothing crashes. No alert fires. What happens is that a customer's finance team reconciles your invoice against your usage report, finds they disagree, and asks. The engineering cost of the fix is moderate. The commercial cost is that a vendor whose numbers do not add up has a credibility problem, and credibility is not recoverable by improving uptime. This is the clearest case in the whole list of an engineering defect converting straight into churn without ever appearing as an incident.

Permissions

Shipping with admin and user is right at twelve customers who all know each other. The cost is that adding granularity later means re-deriving authorisation for every endpoint written since — and by then permission checks are scattered through the whole codebase, some of them implicit, several of them load-bearing in ways nobody documented. If the operations side of this is the part you are stuck on, The XenGrowth resource library is the better reference.

Worse, it isn't purely an engineering problem by then. Changing the model risks altering behaviour for existing customers, which turns a refactor into a migration with a communications plan attached. And enterprise buyers don't negotiate on granular access, because their own compliance obligations don't bend — so this arrives as deals you cannot close rather than as feedback you can act on.

Human-touch onboarding

The subtlest of the lot, because it starts as a genuinely correct decision. Early on, personally onboarding every customer is the highest-value research available — you learn what confuses people, what they actually wanted, which feature they ignore. For the AI agents and marketing automation angle, see XenGrowth on AI agents and marketing automation.

Nobody notices the moment it stops being research and becomes a bottleneck. It doesn't announce itself; growth just stops accelerating, and the diagnosis is usually 'we need more people in customer success'. Commercially it shows up as a CAC payback period that won't improve no matter what marketing does — Benchmarkit's 2026 median is 16 months, top quartile at 6, and self-serve activation is the main lever separating those two groups.

Why 'we'll fix it later' is usually false

Every decision in the table above is made with an implicit promise attached: this is fine for now, and we will revisit it when it matters. The promise is sincere and it is almost never kept, for a reason that has nothing to do with discipline.

The moment the constraint starts to bind is the worst possible moment to address it. A permission model becomes urgent during a live enterprise deal, with a deadline set by someone else's procurement calendar. Tenancy becomes urgent when margin comes under scrutiny, which is usually during a fundraise or a cost-cutting exercise — precisely when nobody wants to fund a year-long migration. Currency handling becomes urgent when a deal in another market is already signed. In every case the work is now blocking revenue, so it is done in a hurry, badly, by people under pressure, and it produces its own second generation of shortcuts.

There is a second reason, which is that the cost of the fix grows with exactly the thing that makes the fix necessary. You need granular permissions because you now have many customers and many endpoints; the number of customers and endpoints is what makes the retrofit expensive. Growth is simultaneously the trigger and the multiplier, so the work is never cheaper than it is today and never more clearly worth doing than it is tomorrow. That combination is the reason these items sit on backlogs for years.

Which is not an argument for building everything up front. Most of these constraints never bind, and a company that pre-solves all of them ships nothing. It is an argument for knowing which one you are carrying, telling somebody commercial that you are carrying it, and accepting that 'later' means 'under duress' rather than 'when convenient'.

What actually prevents this

Not more diligence. All of these were made diligently. What's missing is one question, asked at the moment the decision is cheap.

"What does this make impossible or expensive later, and who would have to pay for it?"

That's it. It takes thirty seconds, most of the time the answer is nothing, and the occasions when the answer is "the enterprise segment" or "our margin ceiling" are exactly the ones worth a longer conversation. The point isn't to make the cautious choice every time — often the fast decision is correct and the constraint never binds. The point is that the constraint should be a known, accepted cost rather than a discovery. XenGrowth on AI search, GEO and discovery covers the AI search, GEO and discovery side of this.

  1. Write the constraint down when you accept it. A one-line decision record saying 'single currency, revisit before any non-domestic customer' converts a future surprise into a scheduled decision, and costs nothing

  2. Name the trigger, not the date. 'Before the first enterprise deal', 'before the first customer outside this timezone', 'above 500 tenants'. Dates get missed; triggers are noticed by whoever hits them

  3. Tell someone commercial. The person selling should know that granular permissions do not exist yet, because otherwise they will promise them, and the gap between those two facts is where the worst quarters come from

  4. Sort by reversal cost, not by how likely the constraint is to bind. Permissions and tenancy are the two that cost a year to undo, which is why they deserve more thought than their probability alone suggests

  5. Revisit the list quarterly. Most items will still be fine. The value is entirely in the one that has quietly become urgent while nobody was looking at it

Symptom the business reports

Decision it probably traces to

"We keep losing enterprise deals late in the cycle"

Permission model, audit logging, or single sign-on

"Our CAC payback won't come down"

A human step in activation

"Gross margin isn't improving as we grow"

Per-tenant floor costs, or per-tenant scheduled work

"Finance keeps finding discrepancies"

Floating-point money, or timezone handling

"We can't sell into that region"

Hard-coded currency, tax, or address assumptions

"Support headcount grows with customers"

Product friction, which is an engineering cost recorded elsewhere

That table is the useful artifact here. If you hear something in the left column, there is a decision in the right column somewhere behind it — and being the engineer who makes that connection out loud is worth more than most of what you will ship this quarter.

Further reading from XenGrowth

Where this work meets go-to-market

XenGrowth's revenue operations work writes for the teams who have to run engineering decisions that quietly hurt growth day to day.

And if you are the one who inherited these rather than the one who made them, the same table is your argument for funding the repair — stated as a door that is currently closed, with the revenue behind it, rather than as a complaint about the code.

Which one is going to cost you?

Five scenarios, each a decision a competent engineer would make on a Tuesday. The question is which commercial door each one closes, and how long before anyone notices.

1 / 5
You ship with two roles: admin and user. What does this most likely block, and when?

Apply this article

How to turn insights into execution

A practical sequence for teams turning concepts into production outcomes.

ArchitectureBusinessGrowthEngineering ManagementCareersDecision Makingfinance

Audit your current state

Map the bottlenecks and constraints connected to the article’s core problem.

Choose one bounded change

Test the most useful recommendation on one workflow before widening the scope.

Measure what changed

Keep the parts that improve the work, document what failed, and make the next decision from evidence.

Next step

Need help applying this in your stack?

I can translate these patterns into a concrete implementation plan for your team.

Discuss implementationBack to blog

Replies usually within 24 hours.

Next Steps

Continue reading

How to Calculate the Business Value of Engineering Work

There are only four places business value can come from, and knowing which one you're claiming does most of the work. The commonest mistake isn't bad arithmetic — it's claiming a benefit in a category the work doesn't actually touch.

Navigate

ARR, MRR, CAC, LTV and Churn, Explained for Engineers

Not a glossary. Each of these is a rate, a ratio or a stock, they compose in specific ways, and most of the arguments you'll hear in a planning meeting are people disagreeing about a denominator. Including the famous 3:1 rule, which its own author says he explained badly.

Navigate

Technical Excellence Without Business Impact Falls Flat

This is not an argument that craft doesn't matter. It's an argument that craft is an input, and that engineers routinely present inputs as though they were outcomes — then conclude the business doesn't value quality when it declines to fund one.

Navigate

Why Do Reorgs Keep Happening, and What Actually Survives Them?

More than 80% of reorgs fail to deliver what they promised, by the estimate of the people who study them for a living, and companies keep running them anyway. The reason isn't that leaders ignore this. It's that a reorg is solving a different problem than the one it announces.

Navigate

Is Engineering a Cost Center or a Profit Center?

The label your finance department attaches to engineering isn't a technicality. It decides which budget line gets cut first in a bad quarter, who has to justify headcount every year, and whether a project needs a growth story to get funded at all.

Navigate
  • When Technical Debt Becomes Financial Debt

    The debt metaphor is better than the people using it realise. Debt has a principal, an interest rate, and a maturity — and the only one of those most teams ever discuss is the principal, which is the least important of the three.

  • What Unit Economics Means for Engineering Decisions

    Unit economics asks one question: does one more customer make you better or worse off? If the answer is worse, growth accelerates the problem — and the fastest way to be wrong about it is to average a cost that isn't evenly distributed.

  • How Much Revenue Can One Engineer Actually Influence?

    More than most engineers think and less than the 10x stories claim. The useful version isn't a multiplier — it's four specific channels, each with a formula, and knowing which ones your job actually gives you access to.

  • Every Engineer Should Know How Their Company Makes Money

    Not as a loyalty exercise. Because the revenue model silently determines which technical tradeoffs are correct — and two teams building identical features under different models should make opposite decisions about caching, uptime and cost.

  • What Actually Happens to Engineering Teams During a Cost-Cutting Cycle?

    Not an even trim. Cuts follow the accounting shape of the work, not its importance — which is why the reliability team can disappear while a customer-facing feature team barely notices, regardless of which one the company needed more.