DEV Community

Aaroophan Varatharajan
Aaroophan Varatharajan

Posted on Originally published at blog.stackademic.com on

From Classical RAD to Low-Code and AI-Assisted Development: Why Faster Software Keeps Moving the Complexity?

How rapid development tools evolved from shorthand syntax to AI prompts, shifting human effort into governance, architecture, and context

A technical look at how rapid application development evolved from classical RAD to executable mockups, low-code, model-driven engineering, citizen development, and AI-assisted software development.
"A technical look at how rapid application development evolved from classical RAD to executable mockups, low-code, model-driven engineering, citizen development, and AI-assisted software development."

The obvious idea is almost impossible to argue with.

Software takes too long, users change their minds, requirements arrive half-formed, and by the time everyone agrees on what to build, the thing they wanted has already moved.

So build ✨faster✨

That instinct sits underneath Rapid Application Development. Classical RAD aimed at high-quality systems, fast development and delivery, and lower cost, using mechanisms such as DSDM, Joint Application Design, timeboxing, user participation, and iterative prototyping.

Simple enough.

Until “faster” starts asking what we are willing to move out of the way.


Classical RAD: The Deadline Stays, the Scope Gets Nervous

The tempting mental model is that RAD is ordinary development with the speed slider pushed to maximum.

Same requirements process. Same architecture. Same delivery model.

Just… quicker.

But classical RAD is doing something more uncomfortable than that. It changes where certainty is expected to come from.

Instead of assuming requirements become trustworthy because somebody documented them early, RAD gives User Participation and Incremental Prototyping much more authority. Users see working versions, react, correct assumptions, and shape the next increment. JAD concentrates that interaction. DSDM gives the process structure. Timeboxing stops the schedule from quietly expanding every time scope gets ambitious.

The Timebox is the least sentimental character here.

It does not promise that everything will fit.

It promises that time will remain bounded.

And that reveals the deeper model: RAD is not primarily trying to make developers type faster. It is trying to shorten the distance between an assumption and the moment reality gets to disagree with it.

That is why prototyping matters.

That is why users matter.

That is why visible progress matters.

The seductive mistake is assuming rapid delivery means the engineering constraints also became rapid.

They did not.

Even early RAD research was cautious about treating the method as universally suitable. Its empirical grounding came from multiple RAD case studies, and the authors explicitly questioned how broadly practitioner claims could be generalized.

So the first lesson appears earlier than expected.

Speed is useful when it accelerates learning. Speed without learning is just faster confidence.


Executable Mockups: When the Prototype Stops Being a Sketch

Requirements create a particularly nasty version of this problem.

A written requirement can look precise while two people are imagining different systems.

Everyone nods.

Everyone leaves.

The disagreement is still there, just hydrated with meeting notes.

The natural response is prototyping. But a static mockup still asks the user to imagine behavior.

The next step is Executable Mockups.

Now the prototype can be operated. A user can move through screens, interact with workflows, and discover that what sounded correct in conversation feels wrong when it becomes behavior.

That is the reasoning behind Kroki, a model-driven environment investigated for rapid functional requirements elicitation in enterprise applications. Ten joint sessions with domain experts produced prototype specifications containing seven to twenty screen mockups with accompanying domain models within two-hour sessions. The prototypes were also intended to remain reusable later in development rather than becoming disposable sketches.

The Executable Mockup is basically the Prototype after it gains a voice.

Instead of saying, “Imagine this workflow,” it says, “Use me.”

That is much harder to misunderstand.

But then the boundary appears.

Executable mockups are strongest around functional requirements and business interaction. They do not magically settle performance, security, scalability, architecture, or other non-functional concerns. The approach explicitly separates those concerns from the functional mockup process.

And this is where visible progress starts lying to us a little.

Not maliciously.

A working interface simply looks more complete than the underlying engineering actually is.

The UI is alive. The buttons work. The workflow moves.

Meanwhile, the non-functional requirements are standing outside the room wondering why nobody invited them.

The system is not broken.

Our definition of “working” was too small.


Low-Code/No-Code: What If the Platform Just Builds the Boring Parts?

Once rapid prototyping works, the next question is almost inevitable.

Why stop at the prototype?

If screens, workflows, data structures, and repeated application patterns are predictable enough, why keep implementing them manually?

Enter Low-Code.

Low-code development uses visual development tools, predefined components, and automation to reduce reliance on manual coding. It also allows people with limited programming expertise to participate more directly alongside IT professionals, shrinking the translation distance between business requirements and software.

This is classical RAD’s dream with better tooling.

  • User involvement? Closer.
  • Iteration? Faster.
  • Reusable components? Already waiting.
  • Workflow construction? Visual.
  • Deployment friction? Often reduced.

For a moment, it feels like complexity has finally been mugged in a parking lot.

Then it turns up at the next meeting wearing a platform administrator badge.

Because Low-Code does not delete complexity.

It relocates it.

The developer writes less repetitive code because the platform has already made decisions about components, data structures, execution models, integrations, deployment, and extension points.

That is wonderful while your system agrees with those decisions.

Then one requirement arrives sideways.

Then an integration does not fit.

Then the abstraction needs an escape hatch.

Then the escape hatch becomes half the application.

The comprehensive low-code literature identifies both the attraction — visual development, reusable components, automation, faster delivery, and closer business/IT collaboration — and the challenges that accompany platform-based development.

The shortcut was real.

So were its boundaries.


Model-Driven Engineering: The Character Doing the Heavy Lifting Backstage

Low-Code gets most of the attention because it is visible.

Drag this.

Configure that.

Generate the application.

But the deeper technical question is more interesting:

Why can the platform generate so much in the first place?

This is where Model-Driven Engineering walks quietly into the story.

MDE changes the level at which developers describe the system. Instead of manually encoding every implementation detail, important parts of the application are represented through higher-level models and abstractions that tooling can interpret, transform, or execute.

A multi-vocal systematic review of low-code development specifically examined its relationship with MDE, identifying modelling and model-driven techniques as central to understanding low-code development rather than treating it as glorified drag-and-drop.

The Model is demanding in a different way.

It says:

“Tell me what this thing means.

Stop making me watch you rebuild the plumbing.”

When the domain fits the abstraction, this is absurdly powerful.

Repeated structure disappears into automation. Visual models become executable behavior. Platform services absorb implementation work. Developers operate closer to business concepts and further away from boilerplate.

But an abstraction is a contract.

The system gets speed by agreeing to speak the platform’s language.

When the domain speaks that language fluently, everybody looks brilliant.

When the domain develops a heavy accent, things get expensive.

And now the real source of rapidity becomes visible:

RAD gets faster by moving work upward, from implementation detail toward reusable knowledge.


Productivity: The Number That Looks Like It Ends the Argument

This is normally where someone asks the dangerous question.

Fine.

How much faster?

The NexusBRaNT comparison gives the kind of answer that can accidentally end a meeting too early.

A traditional implementation required 888 hours.

The low-code implementation required 47.5 hours.

A reported 94.63% reduction in effort.

That is not a subtle difference.

It is the kind of difference that makes hand-coding look personally irresponsible.

But context immediately starts tapping the microphone.

The comparison involved a specific information and workflow system, a specific low-code environment, particular abstractions, and developers with different experience conditions. The result demonstrates that enormous effort reductions are possible when the problem aligns with the platform — not that every system contains a hidden 94.63% discount code.

This distinction matters.

Because the seductive wrong conclusion is:

Low-code is faster.

The useful conclusion is:

Low-code can be dramatically faster when the platform already understands enough of the problem that developers do not have to rebuild its recurring structure manually.

That is a much more interesting claim.

And a much less marketable one.


Citizen Development: Easy to Build Is Not Easy to Own

Once platforms reduce the amount of programming expertise required, another boundary starts moving.

Who counts as a developer?

The Citizen Developer has domain knowledge, a local problem, and suddenly a tool capable of turning that knowledge into software without waiting for the traditional development queue.

This sounds like RAD reaching its final form.

The people closest to the problem can build the solution.

What could possibly go wrong?

Governance clears its throat.

Research across 24 organizations adopting low-code/no-code citizen development found that successful adoption involves far more than access to tooling. Security, compliance, organizational change, architecture, strategy, policies, training, and coordination all become part of the problem.

The Citizen Developer wants to solve today’s workflow.

Governance wants to know who owns the application next year.

The Citizen Developer sees a local optimization.

Governance sees an application portfolio.

The Citizen Developer sees speed.

Governance sees security, compliance, duplication, maintenance, retirement, and the faint outline of Shadow IT waving from across the building.

Neither is wrong.

They are looking at different lifecycles.

This reveals one of modern RAD’s more uncomfortable rules:

The easier software becomes to create locally, the more deliberate organizations must become globally.

Ease of development is not ease of stewardship.

Low-code democratizes construction.

It does not democratize consequences away.


Lean Startup: Building Faster Does Not Tell You What Deserves to Exist

There is still a larger failure mode.

Suppose the process is rapid.

The prototypes are executable.

The platform is productive.

The team can generate working software almost offensively quickly.

And the idea is wrong.

Now what?

Early-stage software startups make this constraint impossible to ignore because they operate under high uncertainty. The challenge is not merely implementing a known solution efficiently; it is discovering whether the problem, customer, solution, and product direction are worth pursuing at all. The Early Stage Software Startup Development Model applies lean principles around idea exploration, validation, and learning in precisely that environment.

Here, Speed finally gets demoted.

Learning becomes the authority.

A prototype is valuable because it tests an assumption.

An MVP is valuable because it exposes reality.

An iteration is valuable because it changes what the team knows.

Otherwise, rapid development simply lets us become wrong at higher throughput.

Fast delivery to the wrong problem is not a RAD success.


AI-Assisted Development: The Shortcut Starts Writing Back

Then we reach the newest acceleration layer.

Low-Code reduced how much implementation developers had to express manually.

AI-assisted development asks whether some of that remaining expression can come from natural language.

The AI Assistant is ridiculously fast.

It can suggest code, recall syntax, generate tests, help with refactoring, and support documentation-heavy tasks.

Developers surveyed about AI programming assistants reported motivations such as reducing keystrokes, completing programming tasks quickly, and recalling syntax. But the same study found major reasons for rejection: generated code may fail functional or non-functional requirements, and developers can struggle to control the assistant into producing the intended result.

That combination is the entire AI-assisted RAD tension in miniature.

It is fast.

Then context matters.

It is helpful.

Then authority matters.

It produces code.

Then correctness asks who approved it.

The AI Assistant is not exactly lying to us.

It is more like an extremely confident colleague who sometimes joins the conversation halfway through.

The deeper model is the same one that keeps appearing throughout this journey: reducing artifact-production effort does not remove the need to understand the system.

It changes where human effort goes.

Less typing.

More framing.

More context.

More review.

More validation.

More deciding whether the result actually belongs in the architecture.


The Hidden Constraint Was Never Development Speed

Now the pattern becomes difficult to ignore.

Classical RAD shortened the feedback cycle.

Executable mockups shortened the distance between requirements and something users could operate.

Low-Code shortened the distance between models and applications.

MDE shortened the distance between abstraction and implementation.

Citizen development shortened the distance between business expertise and software construction.

AI shortened the distance between intent and generated artifacts.

Every generation removed friction.

And every generation exposed another boundary.

Maintainability.

Integration.

Governance.

Non-functional requirements.

Architecture.

Reliability.

Context.

The mistake is thinking the next tool finally removes software engineering from software development.

It does not.

It moves the engineering attention toward whatever even The Origami Software Engineer cannot safely leave to the tool.

That is why there is no universal “best RAD tool”.

A workflow-heavy internal system may align beautifully with low-code.

A requirements-heavy business application may benefit enormously from executable mockups.

A model-intensive information system may fit MDE-backed automation.

A citizen-development program may work only when governance grows alongside participation.

A startup may need rapid experimentation more than rapid production.

A developer-led system may benefit from AI assistance precisely where the tasks are bounded enough to review.

The architecture starts making sense once we stop asking which tool is fastest and start asking which constraints the tool is allowed to hide.


RAD Did Not Disappear. It Kept Changing Where the Work Lived

Classical RAD began with a remarkably durable idea:

Get working software in front of reality sooner.

Everything that followed kept finding new ways to do that.

The Prototype became executable.

The Tool became a platform.

The Platform became model-driven.

The User became a Citizen Developer.

The coding assistant became conversational.

And each step looked, briefly, like the old complexity had vanished.

It had not.

It had moved.

From implementation into abstraction.

From construction into governance.

From syntax into context.

From producing artifacts into deciding whether those artifacts are correct, maintainable, secure, and worth building at all.

That is the part of rapid development that survives every generation.

Not “go faster”.

Learn sooner, automate what has become predictable, and keep human attention on the constraints that have not.

That’s not failure.

That’s evolution.


The “I liked this” Starter Pack:

Don’t let your fingers get lazy now.

  • Like : It tells me this was worth writing.
  • A Comment: Tell me your thoughts, your favorite snack, or a better title for this blog.
  • Boost it: Especially with that one developer who definitely needs this.

Thanks for being here. It genuinely helps more than you know!

— Aaroophan Varatharajan

Find me elsewhere:

Before you go

  • Please take a moment to like the post and follow the writer!
  • Did you know that over 400,000 developers share what they’re building, learning, and discovering across our platforms every month? Learn how you can contribute here .

Top comments (0)