๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐ต๐ฒ ๐ฑ๐ถ๐ณ๐ณ๐ฒ๐ฟ๐ฒ๐ป๐ฐ๐ฒ ๐ฏ๐ฒ๐๐๐ฒ๐ฒ๐ป ๐บ๐ฎ๐ป๐๐ฎ๐น, ๐๐ถ๐ฏ๐ฒ, ๐ฎ๐ป๐ฑ ๐ฎ๐ด๐ฒ๐ป๐๐ถ๐ฐ ๐ฐ๐ผ๐ฑ๐ถ๐ป๐ด?
Long time ago we coded only manually, but then we started to vibe code. Yet, vibe code is something everyone defines differently.
The question is, can we take the best from both worlds and make something more useful. The answer is yes, and this is ๐๐ด๐ฒ๐ป๐๐ถ๐ฐ ๐ฒ๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ๐ถ๐ป๐ด.
Here is how they differs:
๐ญ. ๐ ๐ฎ๐ป๐๐ฎ๐น ๐ฐ๐ผ๐ฑ๐ถ๐ป๐ด
It means you write every line and understand every decision. Nothing is a black box. The bottleneck is your keyboard, which means it scales to exactly one engineer. For safety-critical systems where every line carries liability, it remains the right call. Everywhere else, it is too slow.
๐ฎ. ๐ฉ๐ถ๐ฏ๐ฒ ๐ฐ๐ผ๐ฑ๐ถ๐ป๐ด
This represents the overcorrection. You describe what you want, the AI decides the implementation, and you ship it. It feels fast at first. Then something breaks, and you are debugging code nobody on your team wrote or reviewed. Many vibe coded apps shipped with hype, but with security flaws, and even more increased technical debt, that their authors didn't understand. This is a very good example of a Dunning-Kruger effect. Unfortunatelly, many non-coders are in this group.
๐ฏ. ๐๐ด๐ฒ๐ป๐๐ถ๐ฐ ๐ฒ๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ๐ถ๐ป๐ด
Here you write a PRD before any code is written. Here you may have a few iterations of back-and-forth with agent. Then, the agent implements, opens PRs, and runs tests. You review the output, enforce architecture rules in code. The bottleneck shifts from writing speed to the quality of your own decisions. I except that we push more and more into this direction, recognizing different good paterns and best practices, as well as we did for manual coding.
These three ways of coding are a progression, and most teams are stuck in the middle one thinking they have already arrived.
Which one describes how your team works today?