What GenAI Applications Should Look Like
Drawing from my own experience as a builder and user of GenAI applications over the past two years.
Speaking of GenAI applications, programming is the first thing that comes to my mind.
My first serious experiment to use LLM for programming was in Feb 2024, when I built my first Android App for collecting a to-read list. The next month I built another Android App which I used for several months with my kids - a flash card App for reviewing Chinese characters that allows multiple participants.
At that time, LLM was like a knowledgeable colleague sitting next to me. It gave me code snippets to implement features that I asked for and explained to me how it worked. It helped me debug problematic code - though not always successful. Switching between IDE and chat was tedious but the interaction got me serious about learning Android programming and accelerated my learning. The Android Studio was very helpful in that process too. Its wysiwyg features for editing layouts and step by step workflow for adding various components helped me understand what I was doing and how it fit to the whole system. By the end of March, I truly felt that I knew something about Android programming.
Fast forward to 2025. LLMs can do a much better job at tutoring me with some new programming techniques than a year ago, but these days “vibe coding” is the cooler kid in town. The internet is full of demos where a prompt in one shot creates a cool physics simulation, but the reality is not that sexy. But still, with multiple iterations on my lengthy prompt and some good luck, I was able to create a simulation of algorithmic probability. Given that I have almost zero experience in js programming and given the complexity of the concept and scarcity of related resources, this is actually quite remarkable.
You can check out my lengthy final prompt here and the simulation I built here, and another visualization of the transition function of a k-tape Turing Machine, as part of my bigger project.
Now, here is my problem with vibe coding - for languages or techniques that I am not familiar with, I didn’t learn and it was hard for me to engage. I either got my thing done luckily or I failed helplessly. LLM generates blobs of text which I don’t want to read, and I have to respond to it with text as well which, in complicated cases, is very inefficient and ambiguous. When humans work together, we rely a lot on visuals to keep everyone on the same page. The whole text/chat based experience is simply inhumane.
What could the future of AI aided software engineering look like? GenAI will remain a good tutor for extending engineers’ knowledge and auto-complete tool for improving proficient engineers’ productivity, but to become an integrated part of software engineering, the underlying LLM has to get better at working with visuals - understanding visuals, drawing visuals and manipulating visuals, because good visualizations are the most effective and intuitive form of human communication. The application layer then has to leverage those visualization capabilities to make the development workflow natural to humans and bring humans along the development process. If we can get there, the AI aided software engineering experience would be a revolutionary one and one that is much more pleasant to work with.
Human Centric AI
“My question is, well, is anyone actually falling behind for not using AI then? Because if the interface is going to change so greatly that all of your habits need to fundamentally change … have I actually fallen behind at all? Or will the next gen actually just be so different from the current one that, you're over there actually doing punch-card AI right now. And I'm going to come in at compiler-time AI, so different that it's like ‘what's a punch card?’”
“Obviously an open question… I personally think, yes, you're falling behind… because the thing I'm doing with the prompts is you're learning. You're building up this intuition about how AI works. You're understanding its strengths and weaknesses. Not even the current version, but the next version and so on. What does it mean to teach an AI system about the world? What kind of information does it need to make effective decisions? I think that does transfer to smarter and smarter models. You'll need to make less rigorous and specific in details instructions over time, but you still have to have that kind of thing.”
The above is an exchange between ThePrimeagen, a well recognized programmer, and Lex Fridman, a famed podcaster, in one of his podcasts (link to the YouTube video). ThePrimeagen gave up using Github Copilot after trying it out for months, because he didn’t find it engaging or helpful for his productivity. The two had a debate whether ThePrimeagen was falling behind by giving up AI.
Whether one will be falling behind by not using AI is a hot topic. I am with ThePrimeagen on this one. Lex is not wrong here too - the different perspectives came from why they are using GenAI - one is for exploration and simple tools, while the other is to aid something that is important for his career and life.
I remember sometime ago I saw someone saying this on the internet: “in the future, not knowing how to use AI is like not knowing how to drive.” The person was trying to pump up AI, but ironically, he was pointing out exactly why one may not need/want to use AI as well. Firstly, not everyone needs to drive a car. Secondly, driving a car is so easy to pick up that there is no reason to feel fallen behind if you don’t know how to drive one yet.
If GenAI lives up to its promise, it should be as intuitive as driving a car. Or, if/when it can’t be as intuitive as driving a car, it should be steerable, predictable and debug-able as programming a computer. Or, if/when it can’t be intuitive, steerable, predictable or debug-able, it should be accountable, negotiable, relatable like a reasonable human. Unfortunately, most of today’s GenAI applications that are more sophisticated than simple text paraphrasing do not really meet the bar.
This is not a criticism of GenAI itself, but a call for us as consumers and creators of the technology to act. By setting a high bar on how the technology should interact with humans, we open up a vision for building better products that can make our life higher quality and more fulfilling.