Hey! This is my first attempt at opening a discussion thread. The idea is that we can all share our thoughts on a common topic. So I thought for today, given all the craze about language models, ChatGPT, Copilot, Code Whisperer, etc., to post this question for you:
What do you think the future of coding looks like, in the next 5 to 10 years?
Hit that reply button and let’s talk!
The biggest limitation now on it being useful for code is the context limit. Code is a holistic thing, at least when you're writing any more than a trivial application. It's not easy to context switch either. One thing I think we may be able to do is summarize whole systems, and fit different summaries of the systems (or sub-systems) into stored contexts that can be recalled from an offline store... that could make it possible for a 'main idea' agent to keep these summaries loaded/unloaded as needed, and the 'worker' using its context to generate/edit/evaluate a particular file or part of a file that does fit in context. It'll be quite a while, I'm guessing, before all of this is transparent enough for non-programmers to construct full systems, but indeed I think the day is rapidly approaching when nobody will need to remember 'syntax' anymore to get things done.
I think (or hope, more precisely) that coding will be a part of the apparatus of thinking that kids get exposed very early to, and perfect more as students in high schools and college.
In a way, I expect coding to be what writing is today. I teach critical thinking and I plan to have students write some basic code to exercise argument-making.
I think we'll see a new paradigm open up - one which we're already seeing the beginnings of with "prompt engineering", which I see as the early days of a new assembly language for AI systems.
Since programming languages in the general sense can be seen as abstractions over hardware instructions, I suspect we'll come to see abstractions within the AI domain which translate natural language input into domain-specific prompts.
In essence, I think what we'll see is an emerging market for AI tools to comprehend your input and convert it to "model friendly prompts", rather than users trying to engineer prompts directly themselves.
The primary problem with AI will remain (for a long time, imo) comprehension: understanding what the user is actually trying to do. Tools which take natural language input, analyse the target models / systems, and generate domain-specific prompts for those models - that's an area where a lot of effort will be spent imo. Basically a compiler for human language, where the output targets some subset of models / systems.
If by coding you refer to the act of writing the code, I think it will be an order or magnitude different on a scale where we are shifting more to write prompts for tools like ChatGPT instead of writing it from scratch. There is no reason to think otherwise if you can get your code written faster. This will probably be also defined by how the industry accepts it as a skill in new hirings, I see it as a skill people will display in resume and interviews to get hired.
If by coding you refer to the act of reasoning about a problem or a system in order to produce a solution to it, I think the usefulness of AI tools will be less, because most of such reasoning are not stored in a form that can be used to train those AI tools. The apparent reasoning these tools can produce today and will probable produce in the next 10 years or so, is by extrapolating the training data and the capacity of generating valid ideas will be limited to a combinatorial suffle of what it has seen in the training data.
Probably will happen that a natural selection of some sort will occur over time in the programming field, prepared programmers will probably get better using these tools, and could probably dominates the industry as companies sees the values of the programmer + AI combos, over unprepared programmers that with or without AI tools won't be enough. Just, make sure to know your stuff, people! 😄
In general, it will change, by how much will depends on a multitude of factors, including how people will learn. This is where teachers and educators like you comes in, in thinking and designing how people will learn in the next 5 to 10 years, so no pressure 😁.
More and more applications are no longer standalone. Most are in facts distributed systems. Actually many programs working together to provide a service. Being able to think holistically and how to recover from errors will be important. I don't know how it will look like concretely.
Great idea (discussion). For a start, already now the barrier for entry are lower. Learning the fundamentals takes you a lot further today then it did six months ago. That's the first biggest change that's already here