Software 3.0: how AI changed the way we develop software
Since 2020 we’ve been experiencing a paradigm shift that has been consolidating since the 1980s with AI-driven development. We’ve gone through different “eras” in which the way we deliver software has changed drastically.
Today we’ll take a look at how software development, code writing and delivery speed culminated in what Andrej Karpathy now calls Software 3.0.
Who is Andrej Karpathy?
Andrej is a researcher, educator and PhD focused on convolutional and recurrent neural networks and their applications in computer vision and language processing. He was a co-founder of OpenAI in 2015, joined Tesla in 2017 to lead AI, and returned to OpenAI in 2023.
Andrej Karpathy has established himself as one of the most relevant minds of this transformation. In 2024 he founded Eureka Labs, a school that aims to be “AI Native”.
Evolution of development
In a recent interview at the AI Ascent event last month, Andrej talked about how he sees this evolution over time and how it transformed his development work as well as development in general.
In the context of software development, he says we went through different eras. Software 1.0, widely used, was how we all learned to develop.
In that scenario, the developer is an active actor both in architecture and implementation. They do everything manually and bureaucratically; they are the brain of the operation and also the one who implements it.
Era 2.0 rose to prominence around 2020, when AI agents began to take shape. Still very early, development was hybrid.
LLMs were impressive but lacked the robustness to have the necessary autonomy. Developers architected and, together with agents, developed the software.
As models and features became more integrated into the development space, agents began to gain more ground. Copilot, Cursor, Claude: a new era has become increasingly evident.
Models have been delivering increasingly impressive results. They are increasingly able to make decisions, assess scenarios, identify edge cases and deliver complete features. The agent becomes central to development, being guided by humans.
Software 3.0
From autocomplete to chat, from chat to planning agent, from agent to an entire stack of agents. Development changed again. Code “editors”, if we can still call them that, have become orchestrators of agent workflows.
The first major player to implement this logic was Cursor, with Cursor 3.0. VS Code has an Agent mode and, more recently, Antigravity 2.0 has also caused a stir with this choice.
In Software 3.0, the developer architects and plans, but the agent develops. Contact with the code is much more distant. Often, using the CLI, we don’t even see the result anymore, relying on acceptance criteria and tests.
Because of this, Karpathy says that the agents’ context window is a fundamental point in building software, because it is where all software development lives.
Today, the developer, through a well-structured prompt, refines requirements, describes implementations and “programs” via the prompt. Therefore, the current job is to learn how to optimize the context window so it contains as much relevant information as possible while spending as few tokens as possible.
He also comments on how applications built before this era quickly become obsolete because of how they were constructed.
With agents, building new systems should be more concise, simple and direct, with less boilerplate. But even so, Andrej comments on the inconsistency of models.
From vibe coding to agentic engineering
Even if state-of-the-art models can deliver excellent code, refactoring large system modules, they still sometimes fail at something trivial.
Because of this inconsistency, Karpathy talks about the shift from vibe coding to agentic engineering. The developer starts to care more about architecture to deliver consistent results.
Spec definitions and system design play a fundamental role in keeping the model on track, since agents can execute excellently but do not possess intent.
And he closes with an excellent quote that sums up our moment:
“You can outsource your thinking, but you cannot outsource your understanding.”



