New Engineering Paradigm

Assisted Pro-Coding

It's not Low-Code. It's not No-Code. It's the drastic reduction in time between an engineer's technical decision and production code.

One major thing has changed in software development over the past few years.

It wasn't the language. It wasn't the compiler. It wasn't the release of yet another JavaScript framework.

It was the cost of transforming a technical decision into code.

The Great Shift in Development

"For decades, a considerable portion of an experienced programmer's work sat right between those two points: knowing what ought to be done and spending hours turning that decision into code, documentation, boilerplate, tests, adaptations, and minor integrations."

Before Hours writing boilerplate and mechanical integrations
Now Aggressive acceleration of implementation by AI
The Focus Architecture, boundaries, review, and diagnosis

Artificial Intelligence changes this equation.

But there is a fundamental difference between using AI to program and simply asking AI to "create software".

That difference is what I call Assisted Pro-Coding.

It's not Low-Code. It's not No-Code. And it's not handing off control to an agent to write thousands of lines while the developer prays it works.

It's something else entirely.

The developer remains solely responsible for the architecture, technical decisions, choice of abstractions, system boundaries, bug diagnosis, and code review. AI enters as an extremely aggressive acceleration layer over that process.

Code remains real code.

And when the programmer knows exactly what they are doing, the velocity difference can be brutal.

The Flux File Manager as a Case Study

A prime example of this is the Flux File Manager, a Linux file manager built in Rust.

On the surface, Flux's pitch is simple: be fast, minimalist, and efficient.

However, a modern file manager quickly ceases to be a simple project once you examine what happens beneath the interface.

The tech stack combines native programming, concurrency, async operations, and persistent data storage:

Rust GTK4 Libadwaita Relm4 Tokio Rayon SQLite
📦 Async VFS

VFS layer capable of working with compressed archives like ZIP, 7z, TAR, and ISO images.

🌐 Networks & GVFS

Integration with GNOME GVFS for network protocols including SMB, SFTP, WebDAV, and FTP.

🔒 LUKS & Kernel

Support for LUKS encrypted volumes and udisksctl directly from the system kernel.

💻 PTY / VTE & Testing

Built-in VTE terminal (PTY/POSIX), async thumbnailing, and integration tests with fuzzing.

This is not a CRUD application.

It is not a form hooked up to a REST API.

It is software that must communicate with the OS, filesystems, devices, network protocols, processes, threads, event loops, GPU, native C libraries, and distinct I/O models.

And this is precisely where AI discussions become far more interesting.

Because generating code is not the main bottleneck.

Understanding the system is.

Six Months vs. an Entire Organization

Flux was built solo in approximately six months using the Assisted Pro-Coding paradigm.

In isolation, this fact doesn't mean "one developer is ten times better than ten developers".

That would be a simplistic takeaway.

The meaningful comparison lies elsewhere.

Productivity Math

6 Months Solo vs. Traditional Corporate Structure

Traditional Team ~10 People • Up to 2 Years
  • High communication and handoff overhead
  • Endless meetings to align API boundaries
  • Fragmented context across isolated modules
  • Strict penalty from Brooks's Law
Assisted Pro-Coding 1 Engineer • 6 Months
  • Zero external communication friction
  • 100% unified architectural vision
  • Aggressive AI-driven implementation speed
  • Ultra-fast feedback loop: think → review → test
Brooks's Law Re-examined: "Adding firepower to a complex software project does not produce linear acceleration. More people mean $N(N-1)/2$ communication channels, more shared context to sync, and higher organizational friction."

In a traditional corporate setup prior to AI assistance, a project of this scope might demand a multidisciplinary team spanning backend, UI, QA, and systems engineering specialists.

A realistic estimate for such a scenario would be around ten engineers working for up to two years.

This is a comparative baseline, not a controlled experiment.

And there is a clear reason why the velocity gap is so massive.

The cost of software development was never just writing code.

It is the cost of communication.

One engineer must explain to another what they are doing. A specialist must explain to the UI engineer how an API behaves. QA encounters an edge case that needs reproduction. The module owner tries to reproduce it. Someone modifies an abstraction. Another component breaks.

And the investigation begins.

This is where Brooks's Law remains deeply relevant: adding people to a complex software project does not scale linearly.

More people mean more communication channels.

More context must be continually synchronized.

More decisions need consensus.

In AI-assisted development, you operate under a radically different paradigm.

A single engineer can hold the entire architectural mental model in their head.

There are no meetings to explain the architecture to another developer.

No handoffs.

No "let me consult the owner of that module".

The developer decides.

The AI implements.

The developer reviews.

The AI refines.

The developer tests.

And when something breaks, the same individual possesses the required end-to-end context to diagnose it immediately.

Eliminating communication overhead can be just as impactful as the automatic code generation itself.

Pro-Coding Is Not Low-Code

A recurring misconception persists regarding AI productivity.

Many imagine the future as a variant of Low-Code with a text box replacing drag-and-drop widgets.

It is nothing like that.

Pro-Coding vs Low-Code

Low-Code / No-Code

Attempts to reduce code volume through visual abstractions and pre-built components, but severely restricts architectural control.

Assisted Pro-Coding

Preserves the ability to dive as deep as needed (Rust, Tokio, Rayon, VFS, syscalls, lifetimes, locks). AI acts as an auxiliary cognitive workforce.

Low-Code attempts to minimize written code by erecting visual guardrails and pre-built blocks.

Assisted Pro-Coding does the exact opposite.

It preserves full access to low-level engineering.

You still choose Rust.

You still choose Tokio.

You decide where concurrency is introduced.

You choose when to employ Rayon.

You define the VFS architecture.

You determine how errors propagate across layers.

You inspect ownership, lifetimes, locks, channels, processes, and syscalls when required.

The difference is you don't manually type every single line.

AI functions as an auxiliary cognitive workforce.

It can draft initial implementations.

Turn ideas into boilerplate.

Generate test suites.

Look up API signatures instantly.

Propose alternative designs.

Refactor dozens of files in seconds.

Analyze stack traces.

Make a first pass at locating bugs.

However, there is a vast gulf between producing an implementation and knowing whether that implementation is correct.

That judgment remains strictly the domain of the engineer.

AI Accelerates Those Who Already Know How to Program

AI tools exhibit a curious trait in software development.

They do not distribute productivity gains uniformly.

A novice developer might prompt:

"Create an async parallel file processing system."

And receive hundreds of lines of convincing code.

The trouble begins when that code deadlocks.

Or suffers from resource starvation.

Or race conditions.

Or blocks the async runtime executor.

Or holds an arc/mutex reference too long.

Or introduces a blocking syscall inside a thread that must remain reactive.

At that point, generating code is no longer enough.

You must understand what is actually taking place.

⚠️

The Engineering AI Paradox

"The more deep technical knowledge a developer possesses, the exponentially more powerful the tool becomes."

Technical knowledge doesn't disappear—it shifts roles. Instead of being spent purely on writing syntax, it is used to steer, evaluate, and correct the code generated by AI.

An experienced engineer inspects the architecture, identifies the execution model, analyzes concurrency guarantees, and systematically narrows down the issue.

AI can assist throughout that diagnostic process.

But it cannot replace the need for someone to ask the right questions.

This is perhaps one of the greatest paradoxes of AI-assisted engineering:

The deeper your domain knowledge, the more leverage the AI provides.

Knowledge doesn't vanish.

Its application evolves.

Previously, knowledge was spent typing syntax.

Now, it is spent steering, evaluating, and correcting AI output.

The developer transitions from being merely an executor to acting simultaneously as Architect, Tech Lead, Debugger, and Code Reviewer.

The Real Challenge Isn't Generating Code. It's Judging Code.

An AI can write a perfect function.

It can also write a function that merely looks perfect.

The second scenario is vastly more dangerous.

AI-generated code frequently succeeds on the happy path.

The defects manifest in edge cases omitted from the prompt:

An unmounted filesystem mid-operation.

A dropped socket connection.

A file deleted while being indexed.

A thread awaiting a lock that is never released.

A channel closing out of expected sequence.

A lock acquired in one architecture and freed in another.

A synchronous blocking call hidden inside an async flow.

An architecture-specific bug.

This is where experience proves decisive.

During Flux's development, such issues could not be solved by casually asking:

"Why doesn't this work?"

The inquiry must be surgical:

Which thread is executing?

Who owns this resource?

What is the object lifecycle?

Where is the bottleneck blocking?

Which executor handles this task?

Is backpressure applied?

What is the precise sequence of events?

Is the defect deterministic or a race condition?

Which assumption was invalidated by the test?

The quality of AI output directly reflects the precision of the engineer's investigation.

The tool accelerates the investigation.

It does not replace the investigator.

The End of Dead Time

This shift is easily underestimated.

For decades, programming entailed spending huge amounts of time on tasks that required little deep reasoning:

Writing getters and setters.

Declaring structs and interfaces.

Setting up UI layout constraints.

Adapting type definitions.

Writing repetitive test boilerplate.

Consulting API docs for exact method signatures.

Mapping data formats.

Writing glue code.

Performing mechanical refactoring.

There is nothing intellectually stimulating about typing the same boilerplate fifty times.

Yet it consumes hours.

AI eliminates a huge chunk of that toil.

And the ripple effect is profound.

Eliminating Dead Time

Think ➔ Implement ➔ Test ➔ Observe ➔ Fix

The engineer formulates a solution. Instead of spending 2 hours translating it into syntax, they express intent, receive an initial implementation, and immediately review it within the same flow state.

The developer remains locked in high-level architectural focus.
It shrinks the dead time between decision and execution.

The engineer conceives a design.

Previously, turning that design into code took hours.

Now, they state their intent, receive a working draft, and immediately begin reviewing.

The feedback loop collapses:

think → implement → test → observe → fix.

All occurring within a single cognitive flow state.

No context-switching to explain ideas to team members.

No waiting for PR reviews on minor tasks.

No internal backlog of mechanical pre-requisites before tackling the core problem.

The engineer stays focused on architecture.

Accumulated over six months, that velocity multiplier is staggering.

Context Is the Ultimate Force Multiplier

There is another critical factor.

Large projects carry immense context.

Historical design choices.

Conventions.

Edge-case workarounds.

Dependencies.

OS-specific quirks.

Code patterns that look odd but exist for a specific hardware or kernel reason.

As teams scale, this context becomes fragmented across docs, meetings, and individual minds.

Knowledge gets lost.

In a solo AI-assisted project, a different dynamic emerges.

The same engineer holds the entire global context.

The AI doesn't replace that mental model—it operates underneath it.

This is the core strength of the model.

The AI doesn't need to "know how to build all of Flux".

It simply needs to assist the engineer in building each component while the engineer maintains the global vision.

It is an asymmetrical partnership:

The machine provides raw production speed.

The human provides architectural leadership and accountability.

What This Means for the Industry

This poses a challenging question for software engineering as a whole.

If an experienced engineer can produce in six months what traditionally required a full team, how should we define productivity going forward?

For years, software productivity was measured by headcount, lines of code, tickets closed, story points, and sprint velocity.

AI renders those metrics obsolete.

A developer can generate thousands of lines in minutes.

That doesn't mean they were productive—it just means they generated lines of code.

Real productivity remains the ability to ship correct, maintainable, and effective software.

The difference is that the cost to produce that software has dropped dramatically.

This heavily rewards engineers with deep foundations.

The engineer who understands architecture can delegate implementation.

The engineer who understands concurrency can review parallel code safely.

The engineer who knows Linux detects when an AI snippet violates OS execution models.

The engineer who knows Rust sees when an abstraction fights the borrow checker instead of leveraging it.

The engineer who understands systems formulates precise hypotheses for intermittent bugs.

AI provides raw speed.

Experience provides direction.

The Developer of Tomorrow Isn't the One Writing the Most Code

The most valuable engineers in the coming years won't be those who type syntax fastest.

Machines already do that effortlessly.

The key differentiator will be the engineer who can look at a complex system and say:

"No. This approach is wrong."

And explain precisely why.

That engineer will define the architecture, decompose problems, craft abstractions, anticipate failures, guide AI agents, review implementations, and solve subtle bugs that never appear in standard AI training prompts.

That is Assisted Pro-Coding.

It's not handing development over to AI.

It's using AI to eliminate the mechanical friction between an engineer's mind and running software.

In the case of Flux File Manager, six months of solo development demonstrate the power of this model when guided by deep technical domain knowledge.

AI didn't build the system alone.

It made translating engineering decisions into code dramatically faster and cheaper.

And that is the transformation we are only beginning to grasp.

The Future of Development

The future doesn't necessarily belong to the developer who knows how to ask AI to write code.

"It belongs to the developer who knows when the code written by AI is wrong—and can pinpoint why before the AI itself realizes it."