What is Software 3.0?
› 1.0 is how we typically think about software. The Software 1.0 programmer writes a set of instructions in a coding language, those instructions are converted into machine code by a compiler, and a computer reads and executes the machine code.
Software 2.0 is a term coined in a 2017 blog post by Andrej Karpathy. If code is the primitive for Software 1.0, then neural networks are the primitive for Software 2.0. To paraphrase Karpathy: The Software 2.0 programmer specifies some goal on the behavior of a desirable program, writes a rough skeleton of the code (i.e., a neural net architecture) that identifies a subset of program space to search, and uses the computational resources at their disposal to search this space for a program that works.
Software 3.0 is the future of software. The Software 3.0 programmer provides a set of instructions and a dataset, and an AI agent uses these inputs to generate a program. Though it will take a while to realize the full potential of Software 3.0, the building blocks are already here. Today, you can query ChatGPT for a piece of code, use GitHub Copilot to suggest code in real-time, or automatically debug your code with Codium. You can also give autonomous agents a goal written in natural language, and they will attempt to achieve it by breaking it down into subtasks. Sometime in the future, we may be able to prompt an agent to create an entire tool, workflow, application, and even a software platform with a high degree of accuracy and reliability.
For the purposes of this post, we won’t debate the details of Software 3.0 – the timeline, its precise capabilities, etc.
Instead, we will try to understand how Software 3.0 can impact the future of entrepreneurship. As mentioned, all entrepreneurs share the same two beliefs: (1) customers will use my product instead of building it themselves and (2) customers will use my product instead of my competitors’ products. But how well will these beliefs hold up in the era of Software 3.0?