Skip to main content

AI Assisted Development - Vibe coding is good, when done right

Vibe Coding. - Wikipedia explains, it is a software development practice assisted by artificial intelligence, so that would mean, just like the auto complete features on the modern IDE the code is completed for you. But the level of completion you get out AI-assisted development is much more than just a syntax completion. 

I remember, when I first got my hands on GitHub copilot, it was merely just a code completion at scale, if I start writing a function, it suggest me the next few lines, and mostly the entire function, Ah... good old days.  But from there where we are now is what most people are "scared" about.

Unlike the syntax completion or the early tab completion, now a days the AI assisted development has evolved to a level where it can autonomously write an entire operating system from scratch, I mean how about that!

AI Assisted Development

Let take a quick detour on what is really is AI-assisted development. AI(LLMs) are good at predicting what comes after a sequence of text, so I the phrase is "Sun sets in ____" the AI can complete the sentence with the word "West." because of the vast amount of data it was trained on. Now you can see the similarity, it is just like syntax competition, but the syntax or not just encoded by rules, but are mostly semantic. Because of this an LLM can write the next line of code before you even think about it. 

In the beginning it was only a Chat window, where we ask it write a piece of code, then copy paste it to out IDE - like we did with stack overflow. And if there is any error we copy paste the error message to the chat window again get an updated code, and the cycle continues until we get the result we expected.

Now comes the big picture, we gave the LLMs, the ability to call a function, and that is where the game changed forever. 

In a nutshell, it is similar to the syntax competition again, when you type on IDE, say a class name like `class Car` and the IDE will trigger a function to get all the methods/functions in the class Car. Just like that when you ask the AI to write a code, instead of replying to you in chat, it will call the functions necessary to understand your code base and write the code to a file where it seems appropriate.

There is no black magic here. Lets take out sun set phrase  as an example, in that phrase the next possible and likely token is "West.", like wise, whenever you prompt (tell/ask) the LLM to write code for finding a mean between list of integers, It consider the prompt and process it in two parts, the "write code" part will trigger it to call the function which would save a file, and that file would require the lines of code to be saved as part of the file, so it calls the function with required code and save it as a file.

And if we do this at a large scale, now you have successfully because the AI-assisted developer. 

Agentic IDEs

Lets have a closer look at what we have today, we have tools like, Google Antigravity, Gemini CLI, Claude Code and Codex . These are the few I have tried out, but there are a lot others, so tell me which one is your favorite and why. 

You open your codebase with these "Agentic IDEs", and then you just chat with it, you say, "write a function to do X", "optimize the function" and you can even say, "Build me a expense tracker application" - this is where the trouble starts.

When you say simple things like "write a function to do X" it is easy for both you and the AI, because mostly it is going to be a couple of lines of code, and if that function is 100 lines of code, you need to learn SWE principles first then playing with Agentic IDEs - vibe coding tools.

"Build me a expense tracker application" - the real trouble, as I mentioned before. When it comes to building an app from scratch is actually an easy one for the LLMs, because they can develop the entire operating system from scratch without a sweat, well they will remotely burn a lots of tokens and get the job done. 

The Review Debt

However, the real problem lies in the between code, because we cannot process 100 lines of code across 1000 files in a single stretch, I'm not saying we (as in Humans) will never be able to do it, we certainly can do, but the amount of time it requires is bit longer when compared to LLMs.

To put this in perspective, lets take out expense tracker application as an example, if we where to build an app for tracking expense, it would roughly take use somewhere between a week to a month, complete scratch and production quality code with architecture and testing.

Whereas, in an AI-assisted development environment we can build the same app with the similar "quality" in a day. The "quality" here mostly lies in the way we prompt. 

The review debt, now that the LLM has generate over 100 files in a spawn of few hours it is your responsibility to review the code and accept it. See where I'm going with this.

I remember seeing some post online, not sure about the source, if you could point me that would be helpful. I reads as - Humans are the bottleneck of AI assisted development. 

Now how can we address this?, well I will give the pointers here and will discuss about it in the upcoming posts in detail.

These are the immediate points that comes to mind, I'll write more in detail about these in the upcoming posts.

Comments

Popular posts from this blog

Unit Tests can help AI Assisted Development from code breaks

Code Breaks are the unspoken enemy of the Software Development Cycle. When you are writing code for a new feature there is a chance you might break an existing working functionality. Well, this can often come from code smells, remember Formatting and Linting, in that article we briefly touch based about about code smells. The irony here is, code breaks can sometimes introduced because of fixing code smells, lets look at an example, say, you want to ask the user for feedback after they tried a feature for certain number of times. For that you may put a number in constant as "ASK_FEEDBACK_AFTER_COUNT" so here this constant means, you have to ask the user about feedback after X count, the count is tracked as either as an action the user performs or the page transition. Now, you add a new feature, and here you can the user's feedback after a different count, lets say after 10 action, so instead of introducing a new variable, you edit the previous one. This is where the code b...

Templates gives a guidance to AI Assisted Development tools when generating code - Vibe Coding

Templates are a useful pattern holders that guide Agentic IDEs on how to structure the output. If I know one thing, that, LLMs, AIs are getting increasingly good at following instruction or pattern. Say, you give it a passage or a paragraph, with some extra spacing and indention, and ask the AI agent to follow the same spacing and indention, and create a new paragraph, at most it can maintain the same, after all that is how they learn about everything. Now, look at this from programming perspective, there are number of programming languages available, and each one of the has its own unique syntax, like a line in Java must end with a semicolon whereas in Kotlin we don't have to worry about that.  The key idea here is, Large Language Models, at the time of training were fed enormous amount of data to learn the pattern, and they identify them, in the above case, every time they see a Java code they "learn" there is a semicolon at the end of the line, but when they see a simi...

Formatting or Linting - Helps a lot in AI Assisted development - Vibe Coding

 I'm from Android background - but that doesn't really matter anymore since the "invention" of Vibe Coding. So, In my previous post, I have briefly touch based about AI Assisted Development - Vibe Coding, if you missed it do checkout at :  AI Assisted Development - Vibe coding is good, when done right Now why I choose this title, Vibe coding is good when done right, because, when you are vibe coding with the Agentic IDEs, it generates more code in a spawn of minutes then a human can process. We are already seeing these Agentic IDEs, develop an operating system from scratch over night. In reality it would take about more than month, so the amount of code that is being written is larger than the amount code we can safely accept and understand. This is one of the concerns of Vibe coding, some talk about all the time and some doesn't care at all, and shows their app running localhost. But as a sensible developer like some, I'm also going to take advantage of these...