Software Engineering / AI
From Chatting to Agentic Coding: A New Way to Build Software
AI is changing how we write software. The real breakthrough isn't just generating code, but changing how we interact with the entire development process.
It started with chatting. Ask an AI a question, explore an idea, or get an explanation of something unfamiliar. Then came the next step: pasting code into a conversation, asking for improvements, and copying the result back into the editor.
Useful, but still very manual. The developer remained the bridge between the model and the codebase. Every change required context switching, copying, reviewing, and integrating the result.
Agentic coding changed that workflow. Instead of only suggesting code, AI tools could work with repositories, modify files, execute commands, run tests, and iterate on their own changes. The interaction shifted from asking for snippets to delegating tasks.
The moment it clicked
One of the biggest productivity shifts for me happened while developing backend software. I was already using agents to implement backend functionality when I realized they could also implement the client side.
That sounds obvious in retrospect, but it changed how I approached development. Instead of treating the client as a separate, entirely manual implementation task, I could describe the desired behavior and let an agent build a first version that I could review, test, and refine.
The impact wasn't that the AI suddenly produced perfect software. It was that more of the implementation process could happen within one workflow. A larger portion of a feature could move from an idea to a working prototype with less manual effort.
Are we approaching another programming paradigm shift?
There is an interesting historical parallel. Early programmers worked close to the machine, writing assembly and managing details that higher-level abstractions later made easier to express. Compilers enabled developers to work in languages that described computation without manually translating every instruction into machine code.
AI may introduce another layer of abstraction. Instead of expressing every implementation detail directly in a programming language, we increasingly describe intent in human language. An LLM translates that intent into code, which is then processed by the familiar toolchain: compilers, runtimes, libraries, and operating systems.
The analogy isn't exact. Natural language is ambiguous, LLMs can make mistakes, and generating code is not the same as proving that a program is correct. But the broader direction is compelling: the interface between humans and machines may become more conversational, iterative, and intent-driven.
Development is becoming less of a bottleneck
When implementation gets faster, other constraints become more visible. Understanding the problem, choosing the right architecture, validating assumptions, maintaining quality, and reaching users become increasingly important.
Distribution is a good example. Building a product has never guaranteed that anyone will use it. If more people can build functional software with less effort, getting the right product in front of the right audience becomes an even more important differentiator.
This also creates a risk: flooding the world with software nobody needs. If generating another application becomes cheap, the temptation is to build more instead of building something better. AI-generated output can look convincing while still being poorly designed, insecure, difficult to maintain, or simply unnecessary.
A powerful tool, not a replacement for judgment
Agentic coding already represents a significant step forward in developer productivity. But the results are still only as useful as the requirements, context, architecture, and verification surrounding them.
Agents can misunderstand requirements, introduce subtle bugs, choose inappropriate abstractions, or confidently complete the wrong task. Human judgment remains essential for deciding what to build, reviewing the result, and determining whether the software is actually good.
The most effective approach is neither to reject these tools nor to trust them blindly. Use them to accelerate implementation, automate repetitive work, explore alternatives, and shorten feedback loops. Keep tests, reviews, and engineering discipline in place.
Less time writing code, more time creating value
We may be entering a period where programming becomes less about manually expressing every implementation detail and more about describing, directing, and verifying what a system should do.
That doesn't make software engineering less important. If anything, it raises the value of good judgment, technical understanding, product thinking, and the ability to distinguish useful software from output that merely looks impressive.
When code becomes cheaper to produce, knowing what deserves to be built—and making sure it works—becomes even more valuable.