It occurs to me that while programming is going to be the first job mostly replaced by AI, most programmers have such a poor understanding of what the actual job is that we’re going to have problems figuring out what the job is going to morph into for those of us still coding.
I’m not worried as much about Computer Science, or at least the pure theoretical part. Those guys are rare, and since they’re interested in how programming works, my feeling is that they’ve still got a lot left to do. My concern is for the practitioner, the person assigned to do something with computers that the customer can’t. It used to be that this “something” was anything involving instructing computers to do useful things. The new definition is that it’s the same as it used to be, but these things also have to be things the customer has tried on their own and couldn’t make work. In any situation I can imagine, this will involve a lot of pre-generated LLM code to show the previous struggles.
Does that mean that the New Programmer is going to have the legacy system from hell to maintain and update? Maybe. I suppose that’s where a lot of the work is going to start. My guess is also that we’ll see a humongous amount of competition and bullshit from people claiming that “Your problem is that you haven’t tried my magical model/sauce/recipe yet”
Long term, however, my mind is that we’re going to need to separate intent from execution. We did this back in the old structured programming and early coding days, but it’s fallen out of fashion. We also never did that good of a job at it, we never agreed on what made good work, and there were so many tools and practices that the actual value was lost in the noise.
What is intent and how is it different from execution? Intent is a flowchart, roughly. I want these things done in this general pattern. (It’s not an actual flowchart. I’m using the simplest example I can think of. If only it were so easy!) Execution is making that general shape of things happen to the degree that the person making the flowchart is happy with the result.
The person making the flowchart never thinks in the appropriate amount of detail for execution to happen automatically. There are maybe millions of common error patterns, however, and LLMs kick but at finding error patterns and applying solution patterns. This is why we’re not all still drawing flowcharts. It’s also why it all looks like magic.
My analysis goes on from there but yeah, I do think there’s a piece missing and I think programmers will have a job in the future, at least the really good ones. This does raise an interesting question, though: can models be so deep that virtually every error pattern humans make with expressing intent can be covered?
We’re already working on that. Let’s have the computer interview us before it writes code. Let’s have on model quality check another. (See my earlier post.) I’m amazed that we suddenly have so many experts online with so many seasoned opinions about LLM coding, something that’s really still coming into existence. Some of the advice is useful. Most people, however, that you read as part of a large public audience are people who in some fashion desire to speak to a large public audience. It’s about their motivations and how much people like/respect them. It has nothing to do with actual value.
There is value, and there is a way forward. Like always, however, there’s a lot of hype and noise that we’re going to have to sift through in order to find a useful signal.
