Skip to content
Home » Andrej Karpathy: Software Is Changing (Again)

Andrej Karpathy: Software Is Changing (Again)

Read the full transcript of computer scientist Andrej Karpathy’s keynote at AI Startup School in San Francisco, June 18, 2025.  

Listen to the audio version here:

SPEAKER: Please welcome, former director of AI, Tesla, Andrej Karpathy.

ANDREJ KARPATHY: Wow, a lot of people here. Hello. Okay, yeah, so I’m excited to be here today to talk to you about software in the era of AI. And I’m told that many of you are students, like bachelor’s, master’s, PhD and so on, and you’re about to enter the industry. And I think it’s actually like an extremely unique and very interesting time to enter the industry right now. And I think fundamentally the reason for that is that software is changing again.

And I say again because I actually gave this talk already, but the problem is that software keeps changing. So I actually have a lot of material to create new talks. And I think it’s teaching quite fundamentally, I think, roughly speaking, software has not changed much on such a fundamental level for 70 years. And then it’s changed, I think, about twice quite rapidly in the last few years. And so there’s just a huge amount of work to do, a huge amount of software to write and rewrite.

The Map of Software

So let’s take a look at maybe the realm of software. So if we kind of think of this as like the map of software, this is a really cool tool called Map of GitHub. This is kind of like all the software that’s written. These are instructions to the computer for carrying out tasks in the digital space. So if you zoom in here, these are all different kinds of repositories, and this is all the code that has been written.

And a few years ago I kind of observed that software was kind of changing, and there was kind of like a new type of software around. And I called this Software 2.0 at the time. And the idea here was that Software 1.0 is the code you write for the computer. Software 2.0 are basically neural networks, and in particular the weights of a neural network. And you’re not writing this code directly, you are more kind of like tuning the data sets, and then you’re running an optimizer to create the parameters of this neural net.

And I think like at the time neural nets were kind of seen as like just a different kind of classifier, like a decision tree or something like that. And so I think it was kind of like, I think this framing was a lot more appropriate. And now actually what we have is kind of like an equivalent of GitHub in the realm of Software 2.0. And I think the Hugging Face is basically equivalent of GitHub in Software 2.0. And there’s also Model Atlas, and you can visualize all the code written there.

In case you’re curious, by the way, the giant circle, the point in the middle, these are the parameters of Flux, the image generator. And so anytime someone tunes a LoRA on top of a Flux model, you basically create a git commit in this space, and you create a different kind of image generator.

From Software 1.0 to Software 3.0

So basically what we have is Software 1.0 is the computer code that programs a computer. Software 2.0 are the weights which program neural networks. And here’s an example of AlexNet, image recognizer neural network.

Now so far, all of the neural networks that we’ve been familiar with until recently were kind of like fixed function computers, image to categories or something like that. And I think what’s changed, and I think is a quite fundamental change, is that neural networks became programmable with large language models. And so I see this as quite new, unique, it’s a new kind of a computer. And so in my mind, it’s worth giving it a new designation of Software 3.0.

And basically, your prompts are now programs that program the LLM. And remarkably, these prompts are written in English. So it’s kind of a very interesting programming language.

So maybe to summarize the difference, if you’re doing sentiment classification, for example, you can imagine writing some amount of Python to basically do sentiment classification, or you can train a neural net, or you can prompt a large language model. So here, this is a few-shot prompt, and you can imagine changing it and programming the computer in a slightly different way.

So basically, we have Software 1.0, Software 2.0, and I think we’re seeing, maybe you’ve seen a lot of GitHub code is not just like code anymore, there’s a bunch of like English interspersed with code. And so I think kind of there’s a growing category of new kind of code.

So not only is it a new programming paradigm, it’s also remarkable to me that it’s in our native language of English. And so when this blew my mind a few, I guess, years ago now, I tweeted this, and I think it captured the attention of a lot of people, and this is my currently pinned tweet, is that remarkably we’re now programming computers in English.

The Tesla Autopilot Evolution

Now when I was at Tesla, we were working on the autopilot, and we were trying to get the car to drive. And I sort of showed this slide at the time, where you can imagine that the inputs to the car are on the bottom, and they’re going through a software stack to produce the steering and acceleration.

And I made the observation at the time that there was a ton of C++ code around in the autopilot, which was the software 1.0 code, and then there was some neural nets in there doing image recognition. And I kind of observed that over time, as we made the autopilot better, basically the neural network grew in capability and size, and in addition to that, all the C++ code was being deleted, and kind of like was, and a lot of the kind of capabilities and functionality that was originally written in 1.0 was migrated to 2.0.

So as an example, a lot of the stitching up of information across images from the different cameras and across time was done by a neural network, and we were able to delete a lot of code.