Concept

Software 1.0, 2.0, 3.0

concept software-paradigms programming karpathy-framework

Software 1.0, 2.0, 3.0

A three-paradigm framework for understanding the evolution of programming, articulated by Andrej Karpathy.


The three paradigms

Software 1.0 — explicit rules

Traditional programming: engineers write code specifying exact logic. Deterministic. The program exists in text files; its behaviour is constrained by what can be expressed in code.

Software 2.0 — neural networks

Programming shifts into curating datasets and training neural networks. The program is implicit in the weights; behaviour is shaped by the distribution of training examples, not explicit rules. Karpathy introduced this framing around 2017 in the context of Tesla Autopilot.

Software 3.0 — prompting

The programmer no longer writes code or curates training data. The LLM is the interpreter; the context window is the lever. The programming artefact is a prompt in natural language. Anyone who can write can now program — the language of programming is human language.


Key implication: some apps shouldn’t exist

In a Software 3.0 paradigm, intermediary code that exists purely to coordinate steps that an LLM could perform natively becomes spurious. Karpathy’s MenuGen example: an OCR pipeline + image generation API + web app, versus a single multimodal prompt that annotates the menu directly. The first is Software 1.0 overhead; the second is Software 3.0.

Pushed further: genuinely new capabilities now exist that could not have been built in Software 1.0. There is no traditional program that takes a document collection and compiles it into a wiki. An LLM can do this natively.


The neural computer endpoint

Extrapolating Software 3.0 to its logical limit: a device that takes raw audio/video as input, runs it through a neural network, and renders a UI customised to that moment — no OS, no app layer. CPUs become co-processors; the neural network is the host process.

Karpathy draws an analogy to computing in the 1950s–60s, when both the calculator path and the neural-network path were live options. The calculator path won. Now the diagram may flip: intelligence compute is already the dominant share of FLOPs. The endpoint is “extremely foreign.”


Relationship to vibe coding and agentic engineering

  • Vibe Coding is Software 3.0 in practice: natural language narration → agent produces software.
  • Agentic Engineering is the professional discipline of working in Software 3.0 while maintaining quality.

See also