← Perspectives To code or not to code is no longer the question
Research

To code or not to code is no longer the question

📅 May 29, 2026 📖 6 min read

How AI Is Breaking 6 Assumptions in SDLC

For most of the history of software engineering, the bottleneck was obvious. Humans wrote code slowly.

Everything in the Software Development Life Cycle evolved around this constraint. Requirements clarified what to build. Architecture controlled complexity. Code reviews ensured readability. Testing caught mistakes.

In other words, the entire discipline was optimized around human limitations.

AI-assisted development changes the equation.

Today a developer can generate hundreds of lines of working code in seconds. Entire functions, modules, and tests can appear from a prompt.

But this does not make software easier to build.

It changes the problem.

When code becomes abundant, the real challenge shifts to something else: trusting the behavior of the system that emerges from it.

And that shift quietly breaks several assumptions embedded in how we practice software engineering today.

This article explores six of them. (Will deep dive later into each of them in subsequent articles)

Assumption 1: Code is the primary unit of value.

Traditional development practices implicitly assume that writing code is the most expensive and difficult part of building software. Requirements, design reviews, architecture diagrams, and testing frameworks all exist to support the process of implementing functionality.

For decades, the hardest step in building software was converting an idea into working code.

AI disrupts that premise.

Code can now be generated rapidly, often in multiple variations. A developer can experiment with several implementations in much less time than it previously took to write one.

As a result, code production is no longer the primary constraint.

The scarcity moves elsewhere.

The difficult problems increasingly lie in defining the problem clearly, designing the right system boundaries, and verifying that the resulting system behaves correctly.

In other words, the center of engineering effort shifts from producing code to validating systems.

Assumption 2: Humans are the sole authors of software.

Traditional engineering models assume that developers write, understand, and ultimately take responsibility for the code they produce.

AI-assisted development introduces a new dynamic: software becomes co-authored.

Code may now emerge from a mixture of sources—developer prompts, AI-generated suggestions, automated refactoring tools, and human edits layered on top of generated outputs.

This raises questions that existing development practices do not fully address.

Who authored the logic that ultimately runs in production?

Who takes responsibility for errors embedded in generated code?

How should teams track the origin of artifacts created collaboratively by humans and AI tools?

The notion of software authorship becomes less clear when machines participate in the creation process.

Assumption 3: Traceability is linear and orderly.

Traditional SDLC frameworks emphasize traceability chains. Requirements lead to designs, designs lead to implementations, and implementations are validated through tests.

This linear model supports governance, auditing, and maintainability. Even when we iterate, we do so circularly.

AI-assisted workflows often behave differently.

A requirement may lead to a prompt. That prompt generates code. The developer modifies the result. The AI regenerates a variation. The developer refactors it. The process may repeat several times before a stable implementation emerges.

The path from requirement to final code may be iterative, fragmented, and partially automated.

The artifacts that explain how a system evolved—prompts, intermediate outputs, regenerated versions—are rarely captured in traditional traceability structures.

This raises a fundamental question: should prompts and AI interactions become first-class engineering artifacts?

The answer is still emerging. Your views welcome.

Assumption 4: Human readable code guarantees maintainability.

For decades, readability has been considered a cornerstone of good engineering practice. Code must be understandable because other humans will eventually maintain it.

But AI introduces a new possibility.

Machines can now explain code, refactor it, generate documentation, and rewrite implementations automatically. In some cases, AI may interpret code more efficiently than humans can.

This creates a subtle shift in emphasis.

Code may increasingly be written in ways that machines can analyze, restructure, and regenerate efficiently, while human understanding is supplemented by AI explanations.

That does not eliminate the need for readable systems. Software often survives for decades, and human maintainers will still be responsible for critical decisions.

But the relationship between readability and maintainability may evolve as machines become more active participants in understanding and transforming code.

Assumption 5: Effort predicts delivery.

Many planning models in software engineering rely on the idea that development effort correlates with output.

Teams estimate work using story points, velocity, or engineering hours. These methods assume that writing software requires significant human effort.

AI disrupts this relationship.

A single developer using modern AI tools may generate far more code than previously possible in the same amount of time.

However, increased output does not necessarily mean faster delivery.

Debugging generated code may take longer. Integration across multiple generated components may introduce new complexity. Architectural mistakes may propagate quickly through rapidly produced code.

The uncertainty in software delivery begins to shift away from coding effort and toward system verification and integration.

Traditional estimation methods may need to adapt to this new reality.

Assumption 6: Quality Engineering exists primarily to catch human mistakes.

Historically, testing frameworks evolved to detect errors made by developers: incorrect logic, edge cases, integration failures, and unintended side effects.

AI-generated code introduces different risks.

Models may hallucinate APIs that do not exist. They may generate plausible but subtly incorrect algorithms. Security flaws may appear in generated implementations. Dependencies may be referenced inaccurately.

Validation becomes less about catching typographical mistakes and more about validating the behavior of generated systems.

As code generation accelerates, verification becomes the central engineering activity.

In a world where software can be produced quickly, confidence in system behavior becomes the true bottleneck.

Conclusion

It is tempting to interpret these changes as the end of traditional software engineering practices. That would be a mistake.

The core goals of engineering remain unchanged: reliability, maintainability, accountability, and predictable system behavior.

What changes is where the engineering effort moves.

When humans wrote every line of code, engineering discipline focused heavily on producing correct implementations. Code reviews, documentation standards, and development methodologies evolved to support that effort.

When code can be generated instantly, those practices do not disappear. But they shift in emphasis.

Engineering effort moves from writing software toward governing how software is produced and how systems behave.

Architectural clarity and adherence becomes more important than implementation. Testing becomes more important than coding. Observability becomes essential for understanding how systems actually behave in production.

In other words, the center of gravity in software engineering begins to move.

Not away from discipline—but toward new forms of it.

Looking Ahead

The changes discussed in this article are not theoretical. They are already visible in teams experimenting with AI-assisted development tools.

But the implications for engineering practices are still unfolding.

In the rest of this series, we will explore how each stage of the Software Development Life Cycle may evolve when AI becomes a regular participant in software development.

The next articles will examine how requirements must change when systems can generate their own implementations, why architecture becomes the primary mechanism for governing complexity, how developers and AI tools begin to co-author software, why Quality of Service becomes the central engineering discipline, how observability and runtime feedback become essential to managing AI-generated systems, and how the role of software engineers may evolve as a result.

Software engineering has always adapted to new tools and abstractions—from assembly language to compilers, from monoliths to distributed systems.

AI-assisted development may represent the next shift.

The question is not whether the Software Development Life Cycle will change. It is how deliberately we choose to evolve it.

The Complete Series

Scroll to Top