What? Why? How?

In the insightful article Humans and Agents in Software Engineering Loops, Kief Morris explores the evolving role of humans within the ‘vibe coding’ paradigm. In this piece, I will revisit his core concepts through the lens of What, Why, and How.

In software development, we distinguish what a system does from why it is designed that way and how it is built. The ‘what’ encompasses product requirements, the ‘why’ defines the software architecture, and the ‘how’ refers to the specific implementation within a programming language and development environment.

The ‘infamous’ waterfall model treated these phases as distinct silos, attempting to address each in isolation. In contrast, Agile methodologies argue that these elements are inseparable, advocating for rapid feedback loops. In these cycles, requirements (what) are informed by the architecture (why), which is in turn shaped by the implementation (how)—creating a continuous flow where even technical constraints can redefine the original product vision.

The grander promise of LLMs in code generation is that they abstract away the ‘how’ and ‘why,’ allowing developers to focus exclusively on the what. In this model, the human defines the product, the AI handles the architecture and implementation, and the human simply iterates on the results. This is the essence of ‘vibe coding,’ where the barrier to entry drops low enough to potentially transform business experts into software developers.

A more grounded vision suggests that while the what and why feedback cycles remain, the developer never directly interacts with the source code. In this scenario, the how becomes irrelevant to the human; technical debt ceases to be a concern because the code is authored and maintained exclusively by the AI. Here, the developer’s role shifts to the why cycle—defining architectural constraints like performance and fault tolerance that the LLM must respect. In this paradigm, the software architect effectively becomes the new software engineer.

Lastly, if humans remain active in the how loop, code quality remains a primary concern. Whether by directly refactoring the source or instructing LLMs to follow specific style guides, the engineer’s actions are still governed by modularity, legibility, and long-term maintainability. In this scenario, the developer acts as a steward of the codebase, ensuring that the AI’s output meets human standards of excellence.