Quaintitative

Reflections: Finding the right 'vibe' with LLMs for coding

· 2 min read
coding ai reflection

Some reflections from building Annotated Notes, an app that helps you refine your presentation delivery, understand your content deeply, and engage your audience more effectively.

A short reflection on vibe coding.

LLMs have advanced significantly in their coding capabilities.

Two or three years ago I only trusted them for code completion; today they’re not just writing code for me - they’re teaching me new things everyday.

Some context. I’m competent with Python for designing and training AI models, semi-competent on backend frameworks like Django, Flask and FastAPI, but pretty incompetent when it comes to Javascript and frontend frameworks like React.

I have a really long list of ideas for apps that I have never managed to work on due to this capability gap. LLMs for coding have finally allowed me to scratch these itches.

A personal habit that I am trying to build this year is to challenge myself to regularly move app ideas from my to-do list to (almost) real working prototypes over a weekend, i.e. no more than 2-3 days.

And Annotated Notes, an app to help with presentation delivery (see app.annotatednotes.com) is the first in (hopefully) a series.

Based on this my experience building this app, some reflections on what people refer to as ‘vibe coding’ these days.

Vibing with my mental state

I can’t vibe with LLMs when they are in agent mode. Letting them loose autonomously on my codebase gives me anxiety attacks.

Using them in edit mode, or for code explanations and suggestions, vibes better with me. More deliberate, much better for my mental state.

Vibing with my level of clarity

I vibe best with LLM when I have a clear idea of the problem’s component tasks (like what I mentioned in my Thinking in AI series), and have them mapped out in my head.

In this context, the LLMs are competent colleagues helping me on well defined pieces of work.

Vibing with the right tool at the moment

Sticking to just one LLM, or just one LLM tool or interface isn’t my vibe. I vibe best when I LLM hop. From LLMs in integrated IDEs (like Cursor) for more targeted edits, to directly using Gemini or Claude in their chat interface for big picture planning and coding. This helps me understand what’s happening better. The context switching means I cannot just copy and paste wholesale, or blindly accept suggested edits. And it often helps me address stubborn bugs.

Vibing with my capabilities

Vibing with LLMs requires different approaches for different coding domains, based on my personal skill level. For areas I am familiar with, like Python or backends like Django or FastAPI, LLMs are best used for quick lookups and specific code snippets.

Using them to do a monolithic piece of code in this context is usually counter-productive as I find myself spending more time than necessary troubleshooting and cleaning up the code.

But for areas I am not so good at, such as frontend and React, getting LLMs to help with the whole is actually better than the parts. But it needs a more deliberate effort - planning before coding, testing more, and much more git commits.

Structured Vibing

Letting LLMs just do their thing can quickly get out of hand. A structured approach that vibes better with me is to constantly (using LLMs again) document and test logical code components.

The documentation and testing of past components also helps with future features, as you can just feed them into the LLM as context. Way better than just dumping codebases into LLMs.

Interestingly, getting the app 90% there with LLMs was amazingly fast – the backend in a day, most of the frontend in 1.5. But one silly bug in mobile view due to a rogue Tailwind class had me going round in circles for another day. Repeated efforts didn’t work. Neither did trying different LLMs. Once I managed to identify the offending class manually, the LLM instantly solved it.

My core reflection. Focus more on finding out how we personally ‘vibe’ with LLMs when using them for coding, rather than just ‘vibe coding’, and hoping and praying everything works (and not knowing how and when it may break).

How are you all ‘vibing’ with LLMs in your coding? Drop your best “vibe” tip in the comments.

#AI #LLM #DeveloperExperience