I’ve been living in the low-code-for-internal-tools space for about 18 months now, and I have thoughts. Buckle up.
The Promise (Which Is Real)
Platforms like Retool, Superblocks, and Appsmith promise a 50-70% reduction in development time for admin panels, dashboards, and internal workflows. And here’s the thing — they actually deliver on that promise. Our ops team went from “can engineering build us a tool to manage refund requests?” (estimated: 3 sprints) to “we built it ourselves in Retool last Tuesday” (actual: 2 days). That velocity is real and it’s genuinely impressive.
When your engineering team has a 6-month backlog of internal tooling requests and business teams can self-serve on 60% of them, that’s a massive unlock. I was a believer.
The Reality (Which Is Complicated)
Then we hit The Incident.
Our ops team built 15 internal tools on Retool in 6 months. Fifteen! Incredible velocity. Customer lookup dashboards, refund processors, subscription managers, metrics trackers — you name it. The team was shipping faster than engineering ever could.
Then one tool — a “quick fix” for updating customer subscription tiers — had a bug in its data validation logic. Or rather, it had no data validation logic. Someone ran a batch update that accidentally modified 3,000 customer records. Billing was wrong. Tier assignments were scrambled. Customers were getting charged incorrect amounts.
The worst part? Nobody knew who owned the tool. The person who built it had moved to a different team. There were no tests. No monitoring. No alerts. We discovered the problem because a customer support rep noticed the billing discrepancies — three days later.
The “Citizen Development” Trap
This is the core tension. “Citizen development” — business users building their own tools — sounds fantastic in a vendor pitch deck. Empower your teams! Democratize development! Reduce engineering bottlenecks!
But nobody mentions what happens when those citizen-built tools handle production data, make write API calls to your core systems, and have zero testing, zero monitoring, and zero defined ownership. You’ve essentially created shadow IT with a friendlier interface.
The Governance Paradox
So we added governance. Approval workflows before tools go live. Code review requirements. Mandatory testing. Ownership tracking. Audit logging.
And you know what happened? The low-code tools became almost as slow to ship as regular code. We’d replaced “wait 3 sprints for engineering to build it” with “wait 2 sprints for engineering to review and approve it.” The speed advantage compressed dramatically.
This is what I call the governance paradox: the whole point of low-code is speed, but the governance required to make it safe at scale erodes that speed advantage significantly.
The Middle Ground: “Governed Citizen Development”
We’ve landed on what I’m calling “governed citizen development” — a framework where business users build the tools, but engineering sets the guardrails:
- Read-only access by default. Want to display data? Go wild. Want to write data? That requires engineering-approved API endpoints with built-in validation
- Mandatory data validation on all write operations, enforced at the API layer, not the UI layer
- Audit logging for every data modification, automatically
- Defined ownership — every tool has a named owner, reviewed quarterly
- Escalation paths — when a production issue hits, there’s a clear runbook for who to call
My Current Framework
| Risk Level | Approach | Examples |
|---|---|---|
| Low (read-only) | Full low-code, minimal oversight | Dashboards, reports, data lookups |
| Medium (CRUD with gates) | Hybrid — low-code UI, engineering-approved APIs | Customer management with approval workflows |
| High (write operations) | Traditional development | Billing modifications, data migrations, bulk operations |
It’s not perfect. It’s slower than pure citizen development. But it’s faster than building everything from scratch, and we haven’t had another Incident.
Question for the community: How does your team handle internal tooling? Full low-code? Custom-built everything? Some hybrid approach? I’m especially curious about how you handle the ownership and governance piece — that seems to be where everyone struggles.