Here’s an AI-generated podcast on this article…
I've been the engineer, asked to "just make this change quickly" while silently calculating how many layers of engineering I'd have to untangle to make it work. And I've been the commercial lead, promising a new pricing plan to a partner, only to be told it would take "three sprints" because the code wasn't built to flex.
Those moments crystallize the fundamental tension between technical and commercial realities. They expose the cost of technical debt is not just in code, but hidden in the drag on commercial velocity. Having worn both hats, I've come to see that the friction between engineering and business isn't about personalities or priorities. Its from building businesses that are more rigid than the environments they serve.
Most companies build for today's feature set, not for tomorrow's growth or the inevitable change in conditions or behavior. They create their own handbrake - inflexible code that becomes the technical debt that slows them down precisely when speed matters most. Then, when scale comes knocking, they discover they’ve been driving with the handbrake on, wondering why growth feels so hard.
The question becomes: how do you build systems that accelerate instead of constrain?
The companies that scale fastest aren't the ones with the best initial product—they're the ones whose systems can pivot as quickly as their business strategy. These are the principles I've come to see as non-negotiable. They are as much about commercial flexibility as they are about clean engineering.
The Principle: Every core function should be designed as an API, even if it's initially for internal use.
At Migo, engineering built lending functions as APIs from day one. This meant we could integrate into ANY customer touch point without touching the core logic. What looked like over-engineering early on became our unfair advantage because it is still the only digital lender that borrowed over USSD, web, its own app, multiple partner apps…at one point we trialed presenting loans at ATMs.
What this looks like in practice: Stripe's payment processing started as internal APIs, but this foundation let them become the infrastructure layer for thousands of companies. When you visit any e-commerce site from Shopify stores to enterprise platforms, you're likely interacting with Stripe's APIs without knowing it.
💡 Commercial friction removed: You don't have to tell your business team, "We'll need to rebuild this to connect to a partner." APIs make your features plug-and-play, ready for customers and partners you haven't even met yet.
Impact:
Easy integrations with partners
Ability to swap out frontends (web, mobile, chatbot) without changing backend logic
Faster scaling into new products
The Principle: Wrap every major new feature in a toggle, so you can turn it on—or off—without shipping new code.
What this looks like in practice: Facebook (now Meta) famously uses feature flags for everything from UI changes to algorithm updates. When they test a new feed algorithm, they can expose it to 1% of users, monitor the impact, and either expand or kill it within hours—not weeks.
💡 Commercial friction removed: Sales teams can experiment without fear. You can say, "Let's test this pricing tier with 5% of users" and if it fails, no one's left cleaning up a mess.
Impact:
A/B testing becomes standard practice
Gradual rollouts reduce risk
Instant "kill switch" for broken features
The Principle: Complex logic—pricing, eligibility, workflows, even site color schemes—should live in configurable rules engines, not buried in code.
In a way, this is the business-facing version of “Don’t Repeat Yourself.” Instead of embedding the same rules across multiple parts of the codebase and updating each one manually every time something changes (and risking the chance of breaking something), you centralize the logic in one place.
What this looks like in practice: Amazon's pricing engine is legendary for this. During Prime Day, their business teams can adjust pricing rules, promotional logic, and inventory thresholds in real-time without a single developer touching code. The result? They can respond to competitor moves or inventory changes within minutes, not days.
💡 Commercial friction removed: The business side stops hearing "We'll put that in the next sprint." They can adjust policies and pricing instantly, without waiting for a developer.
Impact:
Instant updates to criteria and logic
Different markets/regions can have their own rules without branching code
Business teams move at market speed, not development speed
The Principle: Use metadata and schemas to define forms, tables, and data models rather than hardcoding them.
What this looks like in practice: Salesforce built their entire empire on this principle. When a sales team needs to track a new customer attribute or add a field to their pipeline, they don't file a ticket with IT—they just add it through the interface. This configurability is why Salesforce can serve companies from 10-person startups to Fortune 500 enterprises with the same core platform.
💡 Commercial friction removed: Teams can adapt to market or regulatory changes in hours instead of weeks. You don't need to explain to a regulator that you can't add that new field they're requesting.
Impact:
Dynamic UI forms that adapt to business needs
Flexible data models that grow with the business
Regulatory compliance becomes a configuration change, not a development project
The Principle: Design systems around events—"order_placed," "payment_received"—instead of tightly coupled workflows.
What this looks like in practice: Uber's entire platform runs on events. When you request a ride, that single action triggers dozens of independent services: driver matching, price calculation, ETA estimation, notification systems. When they want to add a new feature, like carbon offset tracking, they just subscribe to existing "trip_completed" events. No rewiring the core ride system.
💡 Commercial friction removed: New features don't break old ones. You can say yes to "Can we add notifications?" without dreading the domino effect on the rest of the system.
Impact:
Adding new automations becomes as simple as "listen for an event and act"
Different teams can build new features without breaking existing flows
Third-party integrations become plug-and-play
The Principle: Keep user interface, business logic, and data access strictly separated.
What this looks like in practice: Headless commerce platforms like Shopify Plus exemplify this. Brands like Allbirds and Gymshark can completely redesign their customer experience: new checkout flows, mobile apps, even voice commerce, while their inventory, pricing, and order processing logic remains unchanged. The result? Website redesigns that take weeks instead of months.
💡 Commercial friction removed: Marketing can change the user experience without derailing engineering. Engineering can refactor the backend without blocking a product launch.
Impact:
Swappable frontends (new web app or mobile UI)
Backend logic reusable for future products
Marketing and engineering teams can work in parallel
The Principle: Structure your code around business concepts, not whatever is easiest to code at the moment.
What this looks like in practice: Spotify's code is organized around music concepts that everyone understands: playlists, tracks, artists, users. When they discuss adding a new feature like "collaborative playlists," both engineers and product managers immediately understand what systems are involved. There's no translation layer between business requirements and technical implementation.
💡 Commercial friction removed: Commercial teams stop hearing "We can't do that because of how the code works." Everyone is literally speaking the same language.
The Principle: Define your servers, databases, and networks as code, version-controlled like everything else.
What this looks like in practice: Netflix can spin up entire data centers programmatically. When they launch in a new country, they don't spend weeks manually configuring servers—they run code that provisions everything from content delivery networks to recommendation engines. This is how they expanded to 190+ countries without proportionally scaling their infrastructure team.
💡 Commercial friction removed: You can launch pilots, demos, or new markets without asking engineering for weeks of manual setup. Speed becomes default, not a miracle.
Impact:
Faster setup of test/staging environments
Easy rollback if something breaks
New market launches become predictable, not heroic
The Principle: Break systems into independent modules with clear boundaries.
What this looks like in practice: Amazon's "two-pizza teams" philosophy extends to their technical architecture. Each service is owned by a small team that can deploy independently. When the Prime team wants to add a new benefit, they don't need to coordinate with the shopping cart team, the payment team, or the recommendation team. Each system talks to others through well-defined interfaces.
💡 Commercial friction removed: Different teams can move at different speeds. Sales can pitch new features without worrying that engineering will spend months untangling dependencies.
Impact:
Business units (e.g., payments, notifications) can ship updates at their own pace
Reduced risk of changes breaking unrelated systems
Easier to scale teams without communication overhead
The Principle: Build logging, monitoring, and audit trails from day one.
What this looks like in practice: Datadog built their entire business on this principle, but the best example might be how they use it internally. When a customer reports an issue, their support team can trace exactly what happened across dozens of services, down to individual database queries. They often resolve issues before customers even finish explaining the problem.
💡 Commercial friction removed: No more "we're investigating" calls to partners. You know what happened, when it happened, and who did it…..because the system tells you.
Impact:
Safer, faster iteration because you can see exactly what changed and why
Regulatory compliance becomes automatic documentation
Customer support transforms from guessing to knowing
These technical preferences are the difference between systems that flex with growth and systems that break under it.
The companies that scale fastest didn't get there with better initial products. They got there with systems that could evolve as fast as their opportunities. When a partnership opportunity emerges, they can integrate in days, not months. When market conditions change, they can adapt pricing and features in hours, not quarters.
The businesses that struggle aren't failing because they lack vision or market opportunity. They're failing because their systems can't bend without breaking.
Scale isn't just a sales problem, it's an engineering philosophy problem too. The best CEOs, CCOs and CTOs need to really get this.
If you want to build for true scale, start with code that can bend without breaking. Because when growth comes (and it always comes faster than you expect) you might not get a second chance to catch up.
For the builders who get this—who design with APIs, events, and flexibility from day one—the real magic happens when these systems start talking to each other. That's where individual features become platforms, and platforms become ecosystems.