And learned the most important lesson about vibe coding along the way.
I believe in learning at least a little bit of the local language of wherever I live – even if it means suffering through embarrassingly broken conversations. To my surprise, people have usually been super supportive of my attempts rather than laughing at my faults.
So, when my move to Germany became certain, I started learning Deutsch. I racked up a 500+ day Duolingo streak and thought I could clear the A1 exam with no sweat.
Then I tried a mock test. Failed miserably. Turns out, I’d gotten into the habit of logging in for 1-2 lessons a day just to keep the streak alive – without actually progressing enough to pass anything. The gamification had done its job too well: I was playing the game of rewards, not the game of learning.
This isn’t just hindsight. I extensively studied gamification during my elective at IIM Bangalore and gamification of IIMB’s e-learning app was literally my final project. I understand the merits of gamifying learning. But there’s a line where over-gamification kills the joy of learning and turns education into a dopamine slot machine. Duolingo had crossed that line for me.
The Search for Something Better
I needed a tool that was:
– Gamified enough to keep me hooked
– Aligned to the CEFR curriculum so I’d actually pass the exam
– Able to bookmark words and phrases that just wouldn’t stick despite seeing them multiple times
– A tutor I could ask custom questions to
– Exam-oriented: covering all four sections of a German exam (Hören, Sprechen, Lesen, Schreiben) after every chapter
Professional online courses bored me fast. So, I began the quest of finding a better interesting way of language learning (preferably free😉) . I had the luck of finding a bunch of AI-powered language sites, but I couldn’t maintain consistency with any of them
So, I thought: why not build it myself using claude code? One that is personalized to my needs and tastes.
The 5-Line Prompt Disaster
I fired up Claude and gave it a roughly 5-line description of what I wanted. Told it to “ask me 3 questions and take whatever assumptions it needs” and build me a web app.
And Claude did build something. Really scrappy. Poor UX. Barely functional.
I kept giving more generic instructions: “do this,” “I want all these implemented” only to get slightly different UIs with different broken elements each time. I was going in circles.
I was about to give up. Moved on to other tasks. And then it hit me.
The Epiphany
As a software engineer, I used to program every bit of instruction with precise syntax that came from detailed documentation, from managers, from specs. And as a PM, I wrote those docs PRDs and TRDs with every workflow thought through, every edge case covered, in excruciating detail.
What miracle was I expecting from a 5-line prompt with “take your own assumptions”?
That question changed everything.
The 3-Hour Brainstorm
I went back to the drawing board. This time, I told Claude: “… This is my idea. Interview me using the AskUserQuestion tool. Let’s build the PRD and TRD together. Do not write code yet.”
What followed was three hours of answering one question after another — the same excruciating detail I’d put into any product spec, just not in programming syntax or even specific PRD formats. In just plain English, I kept answering until Claude rate-limited me, then I waited impatiently for the window to reopen.
Every question forced me to think through trade-offs:
– If I use this database, what happens? do I need this server?
– Could I make it fully front-end and skip a backend?
– What about voice? (Thanks to my professional experience, I understood the complexity and cost of real-time voice agents – TTS, STT, the whole stack – so I decided to skip the Sprechen section for the prototype.)
– I had already collected enough free A1 curriculum resources from my own prep. Fed it all in.
Et voilà. The first real prototype was functional, professional, had solid UI/UX, and actually did what I asked.
Does it have bugs? Yes. Are there sections that need more attention? Absolutely. But the gap between the broken toys Claude gave me before and the functional product we built together after that brainstorming session was miles apart.
The Real Lesson About Vibe Coding
Here’s what I got wrong about AI-assisted development:
The trade-off decisions, the tech stack choices, the UX decisions; all of it still requires the same painstaking detail that a PM needs to think through and an engineer needs to implement. What disappeared is the pain of remembering syntax. What disappeared is being limited by framework knowledge. I could just converse in plain English.
What didn’t disappear — what can’t disappear — is the thinking. LLM coding agents (Claude code, Gemini CLI, Codex etc.) are not there for outsourcing the thought process but helping think better & consider way more options than you normally would.
These tools turned the process from solo problem-solving into a two-way brainstorming session with a mentor-like collaborator that helps you understand the impact of every decision. You still make every call. You make sure all the puzzle pieces fit together. You just make them through conversation instead of code.
That was a pivot in my vibe-coding journey: not a realization that AI replaces thinking, but a profound understanding of exactly where I stay relevant as a PM and engineer – and where AI removes the friction.
The price of building software has plummeted; the era of truly personalized software is here. And is here to stay!
The German Buddy along with a summarized version of my marathon conversation threads with Claude, if you want to see the brainstorming in action.
Note: I am still working on ironing out some bugs & issues. I’ll try to fix them & publish on Github. I’ll also try to host the app soon for people to try it out.
P.S. That was only a mock test (which I didn’t clear). Happy to say I did pass my German A1 with this buddy’s help and I’m now onto A2.
Leave a Reply