End-User Programming with LLMs
Interfacing with machines initially been a static experience. There's defined inputs, defined outputs, and the computations and the way you go to them are deterministic.
Computers were the first ones to break this mold - with the advent of the digital display, you could now have dynamic interfaces. You could have buttons that change color when you hover over them, or text that changes when you click on it.
Yet, programs were still static - they were compiled and when ran behaved the exact same way every time. When interfacing with a application, you could expect the same experience to be shared by everyone else.
ERPs, CRMs, and other enterprise software were the first to break this mold. They were dynamic - you could integrate plugins, extend them, and modify them to fit your needs.
However, this required expensive consultants and developers to modify the software and took a long time.
This is end-user programming - the ability for non-technical users to modify and extend software. Since the 60s, this concept has been dreamed of, iterated in various ways, but never fully met the expectations of its creators.
LLMs are the next iteration of this concept and possibly represent end-user programming in its most ideal form. The ability for LLMs to author small bits of code that can be executed in the context of a running program or as stand-alone applications means a few things:
- One-off scripts - you can write a small script to automate a task, and run it in the context of the application you're using. A mixture of low and no-code workflow builders are working on this and many have solutions that are pretty solid.
- One-off GUIs - you can create a small GUI to automate a task. Retool and other low-code tools are working on this already
- Customizations - you can modify the behavior of an application to fit yhttps://www.inkandswitch.com/end-user-programming/our needs. This hasn't been as much of a thing in web-software - but companies like Figma are defining isolated execution environments for plugins.
- Extensions - you can add new features to an application without needing to modify the source code. This is the most powerful use-case of LLMs - and one that I don't think any company has figured out yet.
Most of these problem spaces are very nascent and the only ones touching them in-depth tends to be the low and no-code space, but I hope to see a day where I can use language to author an extension to my CRM in real-time all within-app.