I am Java developer, and I don’t understand how exactly JVM works, for example. I’m not sure, how much my app will consume memory and CPU resources. I don’t know when garbage collector will do their work. I even don’t know what JIT and AOT compilation. And this doesn’t prevent me from doing good, effective and useful things. May be they are not the best. Maybe writing them on C or assembler will be more optimized and effective. But anyway, I am OK with that and trying to accept vibe coding same way, as I accept myself and my job.
Difference is that vibe coding doesn’t create 20% more CPU usage or 30% more RAM usage because it doesn’t understand the underlying mechanics (or, it could but that is not the important part). LLMs will happily provide you with solutions that consists of plain text password storage, leaking personal information through open APIs, and business crushing vulnerabilities. A sharp developer should be able to catch that, but if you’re reviewing 5000+ line PRs daily that’s been spat out by LLMs it’ll be impossible to catch all failures. And for someone who doesn’t know all those nonfunctional requirements that a business absolutely must have it’ll become a nightmare for the receiver of the code.
So to be clear: For functional requirements LLMs are a bit better but still needs hand holding. For nonfunctional requirements they’re dog shit as that’s the part that more often than not has to explicitly be mentioned. And being able to identify nonfunctional requirements and when they’re not met is the difference between a junior dev and a 10+ year lead.
Slow app? Just add resources. Vulnerable app? Actual compliance and business risk.
I am Java developer, and I don’t understand how exactly JVM works, for example. I’m not sure, how much my app will consume memory and CPU resources. I don’t know when garbage collector will do their work. I even don’t know what JIT and AOT compilation. And this doesn’t prevent me from doing good, effective and useful things. May be they are not the best. Maybe writing them on C or assembler will be more optimized and effective. But anyway, I am OK with that and trying to accept vibe coding same way, as I accept myself and my job.
Difference is that vibe coding doesn’t create 20% more CPU usage or 30% more RAM usage because it doesn’t understand the underlying mechanics (or, it could but that is not the important part). LLMs will happily provide you with solutions that consists of plain text password storage, leaking personal information through open APIs, and business crushing vulnerabilities. A sharp developer should be able to catch that, but if you’re reviewing 5000+ line PRs daily that’s been spat out by LLMs it’ll be impossible to catch all failures. And for someone who doesn’t know all those nonfunctional requirements that a business absolutely must have it’ll become a nightmare for the receiver of the code.
So to be clear: For functional requirements LLMs are a bit better but still needs hand holding. For nonfunctional requirements they’re dog shit as that’s the part that more often than not has to explicitly be mentioned. And being able to identify nonfunctional requirements and when they’re not met is the difference between a junior dev and a 10+ year lead.
Slow app? Just add resources. Vulnerable app? Actual compliance and business risk.