Every few years, a new abstraction arrives that makes the previous one feel embarrassing in retrospect.
Raw SQL gave way to ORMs. Callback hell gave way to async/await. Manual memory management gave way to garbage collection. Each shift wasn't just about writing less code — it was about thinking differently about the problem.
We're at one of those moments with AI.
The way we learned to talk to LLMs
Most AI-powered applications today follow the same pattern:
Write a prompt string
Interpolate some variables into it
Call the API
Parse the response (pray it's valid JSON)
Map it to your data model
Validate
Handle the cases where it isn't valid
Retry
This is prompt-centric thinking. The prompt is the program. The data model is just a container waiting at the end of a pipeline.
It works.…