Software 2.0
Software 2.0 is Andrej Karpathy's label for programs whose important behavior is represented by parameters learned from data rather than fully specified as hand-written instructions. A developer defines the architecture, objective, data and training process, and optimization searches for useful weights. The term names a programming paradigm, not a new programming language and not every application that merely calls a machine-learning model.
Origin and context
Karpathy published the Software 2.0 essay on 11 November 2017, contrasting explicit source code with neural-network weights and emphasizing the growing role of datasets, training infrastructure and evaluation. By July 2019, Michael Carbin used the same label in peer-reviewed programming-languages proceedings to describe a machine-learning application ecosystem. A 2021 ACM journal study then examined how developers use and evolve machine-learning libraries in Software-2.0 systems. That sequence supports adoption beyond the originating essay without turning the label into a formal standard.
Why it matters
The framing changes what teams must inspect and maintain. When behavior comes partly from training data and optimization, code review alone cannot reveal the complete program. Dataset provenance, labels, evaluation sets, model versions and monitoring become software-engineering concerns alongside source code. The idea also clarifies why failures can be statistical rather than deterministic and why updating a model may change many behaviors at once. It does not eliminate conventional software: data pipelines, training loops, interfaces, safeguards and deployment systems remain Software 1.0 components around the learned artifact.
Example
Consider an image moderation service. In a rules-only implementation, engineers encode explicit tests for pixels or metadata. In a Software 2.0 component, they collect labeled examples, choose a model and loss, train weights, and evaluate error slices. The learned classifier qualifies even though ordinary code still loads images and serves predictions. A fixed threshold around a hand-written score does not become Software 2.0 merely because the product is described as AI; the defining behavior must be substantially learned through optimization.
Maturity and evidence
Maturity is rated 4. The term has a stable, attributable origin and independent use in peer-reviewed programming-languages and software-engineering research. Empirical work treats Software-2.0 systems as an engineering population rather than one vendor's product. The rating is not 5 because this glossary reserves that level for terms established in law or regulation, and Software 2.0 remains an interpretive label whose exact boundary varies across authors.
Limits and open questions
The binary contrast can hide hybrid systems and substantial human design choices in architectures, objectives and data collection. Learned weights are not literally source code in every useful engineering sense, and the label does not supply a testing or governance method. Claims that Software 2.0 necessarily leads to later numbered paradigms are forecasts, not part of the 2017 definition. Use the term to identify where behavior is learned, then describe the actual system boundary and evidence separately.
Related terms
References
- Software 2.0Andrej Karpathy / Medium · 2017-11-11 · class A
- Overparameterization: A Connection Between Software 1.0 and Software 2.0Schloss Dagstuhl – Leibniz Center for Informatics · 2019-07-11 · class A
- Understanding Software-2.0: A Study of Machine Learning Library Usage and EvolutionAssociation for Computing Machinery · 2021-07-01 · class A
Last updated: 2026-09-04
This term is also covered in the Skills Atlas as model training skill.
This term is also covered in the Skills Atlas as classical machine learning skill.