Charity Majors, who once helped keep the utterly tangled spaghetti of Second Life's servers operational back in the day, and now puts that wisdom to practice as co-founder/CTO of observability service HoneyComb, has a pretty thought-provoking post on how large language models are changing the nature of programming:
You can make a surprising amount of improvements to an LLM based product without even touching any prompt engineering, simply by examining user interactions, scoring the quality of the response, and acting on the correctable errors (mainly data model mismatches and parsing/validation checks). You can fix or handle for these manually in the code, which will also give you a bunch of test cases that your corrections actually work! These tests will not verify that a particular input always yields a correct final output, but they will verify that a correctable LLM output can indeed be corrected.
You can go a long way in the realm of pure software, without reaching for prompt engineering. But ultimately, the only way to improve LLM-based software is by adjusting the prompt, scoring the quality of the responses (or relying on scores provided by end users), and readjusting accordingly. In other words, improving software that uses LLMs can only be done by observability and experimentation. Tweak the inputs, evaluate the outputs, and every now and again, consider your dataset for representivity drift.
Her surprising conclusion (at least I'm surprised) is she sees a near future were programmers will regularly use LLMs as part of their everyday toolchest:
I hypothesize that over the course of the next decade, developing with LLMs will stop being anything special, and will simply be one skill set of many, alongside mobile development, web development, etc. I bet most engineers will be writing code that interacts with an LLM. I bet it will become not quite as common as databases, but up there. And while they’re doing that, they will have to learn how to develop using short feedback loops, testing in production, observability-driven development, etc. And once they’ve tried it, they too may become extremely unwilling to go back.
In other words, LLMs might ultimately be the Trojan Horse that drags software engineering teams into the modern era of development best practices. (We can hope.)
Emphasis hers (and mine). Her unique argument, coming from her unique perspective as head of an observability company, is that the sheer unpredictability of LLM output is richly suited for how software actually operates in the modern world. While I'm still skeptical about the feasibility/desirability of LLMs for the creation of cultural content (books, articles, etc.), Charity's case for LLMs in development is pretty strong.
Leave a comment