Since there’s a very broad spectrum of different kinds of computer programs with different constraints and desiderata, I think the transition will be very gradual. Consider the following things that are all computer programming tasks:
Helping non-technical people set up a simple blog.
Identifying and understanding the cause of unexpected behavior in a large, complicated existing system.
Figuring out how to make a much cheaper-to-run version of an existing system that uses too many resources.
Experimenting with a graphics shader in a game to see how you can make an effect that is really cool looking.
Implementing a specific known cryptographic algorithm securely.
Writing exploratory programs that answer questions about some data set to help you understand patterns in the data.
I have no doubt that sufficiently fancy AI can do or help human programmers do all these tasks, but probably in different ways and at different rates.
As an experienced programmer that can do most of these things well, I would be very surprised if my skillset were substantially obsolete in less than 5 years, and somewhat surprised if it was substantially obsolete in less than 10 years. It seems like GPT-3 and GPT-4 are not really very close to being able to do these things as well as me, or close to being able to help a less skilled human do these things as well as me.
One and a half years later it seems like AI tools are able to sort of help humans with very rote programming work (e.g. changing or writing code to accomplish a simple goal, implementing versions of things that are well-known to the AI like a textbook algorithm or a browser form to enter data, answering documentation-like questions about a system) but aren’t much help yet on the more skilled labor parts of software engineering.
Since there’s a very broad spectrum of different kinds of computer programs with different constraints and desiderata, I think the transition will be very gradual. Consider the following things that are all computer programming tasks:
Helping non-technical people set up a simple blog.
Identifying and understanding the cause of unexpected behavior in a large, complicated existing system.
Figuring out how to make a much cheaper-to-run version of an existing system that uses too many resources.
Experimenting with a graphics shader in a game to see how you can make an effect that is really cool looking.
Implementing a specific known cryptographic algorithm securely.
Writing exploratory programs that answer questions about some data set to help you understand patterns in the data.
I have no doubt that sufficiently fancy AI can do or help human programmers do all these tasks, but probably in different ways and at different rates.
As an experienced programmer that can do most of these things well, I would be very surprised if my skillset were substantially obsolete in less than 5 years, and somewhat surprised if it was substantially obsolete in less than 10 years. It seems like GPT-3 and GPT-4 are not really very close to being able to do these things as well as me, or close to being able to help a less skilled human do these things as well as me.
One and a half years later it seems like AI tools are able to sort of help humans with very rote programming work (e.g. changing or writing code to accomplish a simple goal, implementing versions of things that are well-known to the AI like a textbook algorithm or a browser form to enter data, answering documentation-like questions about a system) but aren’t much help yet on the more skilled labor parts of software engineering.