Intent vs Process - the evolution of programming
I've been coding for about 35 years professionally. I've programmed through the eras of Mainframe, Desktop, Internet, Mobile, Cloud and now AI/Semantics.
Each of these eras had different patterns and building blocks. Databases evolved from structured to unstructured to distributed to vector and graph, developer workflows got more automated and went from waterfall to agile to CI/CD. This will happen again with the new world of AI, though we don't fully understand it yet - we will need new ways to store data, manage complexity, build programs, do testing and maintenance, etc.
So what are the patterns that we can pick out at a large scale, that help us understand where this might be going? One very large theme I think is the idea of mediation and intent.
What does that mean? Well, coding has always been a process of going from something we want (intent) to something the computer can do (execution). There is always some kind of mediation in that process - we started with the very basic one of describing how numbers would work in code, build simple programming and logic systems, then more advanced programming languages, applications, operating systems, and further abstractions. Each of these is a mediation, or an approximation of the intent, rendered as well as possible into what the machine can do at the time.
As this process goes on, it gets more abstract, and we get closer to pure intent. Sorting is a good example of this. We started with a very manual process and weak understanding of how to do sorts efficiently. If you were in school 30 years ago, you learned all of the different ways to do a sort, and probably spent a semester on data structures and sorting algorithms. Now, you usually just call ".sort" in the programming language of your choice and let the machine work out the details. You have gone from having to describe the process precisely (which kind of sorting algorithm) to just expressing intent ("I need this sorted").
领英推荐
AI has the potential to move us much farther, faster, into the world of intent. As these moves happen, typically both the market for software and the pool of people capable of something that can be considered development expands. Before I was a programmer, you had to have a fairly advanced engineering degree to do almost anything. For me, you still had to be fairly deep into math and the folks able to build desktop apps were fairly rare. But flash forward 30 years, and all kinds of folks can build all kinds of experiences in mobile, web, services, etc. And many don't even bother with implementation details that would have seemed like eldritch magic to me at the start of my career.
AI will do this again - now the machine, in the form of LLMs, can do much more of the mediation for us. We can go directly from intent to action in many cases. So this will change the definition of application, likely to continue along the trajectory of transient and smaller bundles of less fixed functionality. And it will change the definition of programmer again. It's likely that the next generation will look at the idea of programming in anything other than natural language to be as weirdly abhorrent and hard as I looked at assembly in my day - necessary sometimes but gross and unnatural if you didn't have to do it.
We have always been moving along this arc, getting closer and closer to just being able to express intent directly. Programming will never completely go away, but it will seem anachronistic and specialized. When natural language is what's used to "program", everyone will be a "programmer".
(I'll be out on vacation for a few weeks, see you later in June!)
Cloud | DevOps | SDLC | MLOps | AIOps
1 年I like the idea but what I struggle with the most is testing, how to test an outcome that is not deterministic
CEO Proactive Logic. Accelerate Value Creation With Fit-to-Purpose Tech Consultants
1 年Sam, I look forward to these every week. Appreciate them.