When I was growing up in Pakistan, my teacher used to tell me to copy text from my textbook into my notebook. And by writing, I mean physically writing with a pen and paper (yes, paper that comes from trees).
I never understood the point of this exercise. The text was already printed in the book, so why did I have to write the same text in my notebook?
I eventually realized that writing the text helped me actively learn and understand the concepts better. I strongly believe the same is true for programming.
I am always surprised when developers reveal that they have not written a single line of code manually in the last 3 to 6 months. When I ask them how they know whether the code is high quality, they tell me that sometimes they review the generated code, and sometimes they don’t even look at it.
If you are working on small personal projects where the stakes are low and the blast radius is nonexistent, then there is nothing wrong with vibe coding your entire app.
Reviewing AI generated code is not the same as writing it yourself. When you write code, you constantly make decisions about design, architecture, and implementation. But when you review code that already works, there is a tendency to accept the existing solution instead of exploring better alternatives. Just because the code works does not mean it is well designed.
But I think the biggest disadvantage of letting AI write all the code for you is that you give up an opportunity to learn and understand the code. You choose short term gains (working code) at the expense of long term learning, potentially leading to what some might call brain rot.
Just like your body can deteriorate if you don’t exercise, the same can happen to your brain. You need those moments of struggle when you make your brain work.
When I am working on projects, I tend to use AI as a reference, much like Google. But I think even that is causing me to miss out on learning opportunities because AI is very quick at providing answers and removes many of the hurdles involved in finding solutions myself.
Keep in mind that exploring all the different solutions that did not work can be just as important as finding the one that did. Using AI tools can remove that struggle, which in turn can lead to missed learning opportunities. Even if I struggle for 15 to 20 minutes, that experience can be far more valuable than getting the answer in mere seconds.
I am not suggesting that you write every single line of code by hand or stop using AI tools. I use AI myself, and I recognize the enormous productivity benefits it provides.
But I also believe that not every struggle needs to be eliminated. Sometimes, spending 20 minutes trying to solve a problem teaches you more than getting the correct answer in 20 seconds.
When I was growing up, I thought my teacher was wasting my time by asking me to copy text that was already printed in a book. Looking back, I realize that the goal was never to produce another copy of the text. The goal was to learn and understand it.
I think the same is true for programming.
AI can write the code for you, but it cannot do the learning for you.