No-code is a loan.
You drag four nodes onto a canvas, wire up a welcome email and a Slack ping, hit save. Ten minutes, no deploy, no PR. It fires. You move on.
Eight months later a support ticket lands: new customers aren't getting the email. You open the canvas. Nobody remembers building half of it. No test failed, because there was never a test. You found out from a customer.
That gap, between "it fired on Friday" and "I heard about it from a customer," is the whole problem with no-code once it stops being glue and starts being load-bearing.
The speed is real. At the edge (an internal notification, a nightly sync, the thing that can fail at 3am and nobody feels it) it's a genuine gift. But nobody decides to run the business on a drag-and-drop canvas. It happens one node at a time, until the convenience becomes the only path, and you don't notice the day it crosses over.
I'm cleaning up exactly this at Phoneware right now: customizations scattered across per-customer JS bundles and app backends stranded in n8n flows. The fix wasn't more flows. It was pulling the logic out of code and glue and into data, a manifest API that cascades reseller to domain to role, in one TypeScript monorepo. A customer's configuration is a value now, not a fork. Changing it is a pull request a compiler and test suite see before any customer does.
There's a second bill on that loan most people miss. A fleet of agents can reason over a typed monorepo: read the manifest, follow the cascade, change a value, let CI tell it the blast radius. It cannot reason over a canvas. Wire your core logic into a drag-and-drop builder and you've hidden it from the one thing that was going to make you faster.
I'm not here to trash no-code. It fits the edge. The moment a customer can feel it, or your business stops if it stops, it's not glue anymore. It's infrastructure, and infrastructure earns a repo, a test, and a diff.
Full piece:
https://lnkd.in/gKCgBbCs