You do ask hard questions up front, define boundaries, give lots of high level architectural guidance, declare interfaces, and bounds of abstraction... And then you ask the LLM to make it so, and it does. You give it the structure, and it fills in the implementation.
By this definition, anyone hired to be a code contributor, and not operating at the architecture level, isn't an engineer.
On the other side of that definition, engineering doesn't even require code, but would be architecture with deep technical understanding that allows you to create the tasks that you hand off to individual coders.
> A model can generate a login system in seconds. It will not ask if emails must be unique. That single missing requirement can collapse the system. LLMs cannot see the category of questions that keep software safe.
really? I am assuming here that the author means that the emails used when registering across users need to be unique. even mediocre models will do that for you.
even more to the point though, if you tell an LLM, hey I want to build this system, let's talk about the architecture, it will ask you all the relevant questions. this can really help with the engineering. sure, there's a rubber ducking aspect to it, but even so. telling an LLM to immediately implement an idea does not lead to great engineering. starting to code yourself has the same problem. doing some brainstorming with an LLM (like in the olden days with humans) is where they help with the engineering part.
It was already debated whether "software engineering" is engineering, even before LLMs. Even traditional software engineering looks nothing like other fields - in particular lacking a whole lot of discipline. I believe it is, because it's a process of creating complex artefacts to satisfy business requirements, despite the different medium - that definition still remains true when an LLM is used as one of many tools. But "vibe coding" means the LLM is the only tool. Is that still engineering? Well I guess, did you create an artefact that satisfied business requirements? Seems like you did. There's not a good clear line here.
I'm going to take this a step further. Software development is not engineering.
Software development is more like being a construction worker that uses engineered materials. The engineers, on the other hand, develop the structural components (steel beams, the actual dry wall), an architect designs the whole system, and a contractor manages it.
With vibe coding, you make yourself the contractor and turn agent into the other roles. You can choose to build a building without an architect (you or the agent) and without using engineered components (a proper database for example), which will likely lead to leaks or a full on collapse.
Frankly, this is no different to the franksystems build in midieval times.
The line I'd draw is accountability: who owns it in prod at 3am. Vibe coding is fine for throwaway and prototypes, and it becomes a problem when the prototype quietly turns into the system and nobody can explain how it works.
Don't get me wrong, there is a room for production systems coded completely with AI, it just needs to be more thoughtful in the way it is done.
26 comments
[ 2.8 ms ] story [ 51.7 ms ] threadThe days of Devs gatekeeping and shitting on good ideas because the syntax of a PR was not perfect are over.
You do ask hard questions up front, define boundaries, give lots of high level architectural guidance, declare interfaces, and bounds of abstraction... And then you ask the LLM to make it so, and it does. You give it the structure, and it fills in the implementation.
This is engineering, more or less.
By this definition, anyone hired to be a code contributor, and not operating at the architecture level, isn't an engineer.
On the other side of that definition, engineering doesn't even require code, but would be architecture with deep technical understanding that allows you to create the tasks that you hand off to individual coders.
I agree with this. Sadly, we're good at pushing working demos as the final product in corporate.
Who even puts forward such claims?
> A model can generate a login system in seconds. It will not ask if emails must be unique. That single missing requirement can collapse the system. LLMs cannot see the category of questions that keep software safe.
really? I am assuming here that the author means that the emails used when registering across users need to be unique. even mediocre models will do that for you.
even more to the point though, if you tell an LLM, hey I want to build this system, let's talk about the architecture, it will ask you all the relevant questions. this can really help with the engineering. sure, there's a rubber ducking aspect to it, but even so. telling an LLM to immediately implement an idea does not lead to great engineering. starting to code yourself has the same problem. doing some brainstorming with an LLM (like in the olden days with humans) is where they help with the engineering part.
Ive used it to write that terrible one-off powershell or bash script. You know the types: grunt work, boring, and you just need it done.
I can ask my local LLM to make it. Its done as fast as it takes to load up a console and vim. I spend a minute or 2 reviewing, and run in stage.
The tough stuff or API specific proprietary stuff; i still write and maintain. But the drudge work is getting automated.
who cares?
Software development is more like being a construction worker that uses engineered materials. The engineers, on the other hand, develop the structural components (steel beams, the actual dry wall), an architect designs the whole system, and a contractor manages it.
With vibe coding, you make yourself the contractor and turn agent into the other roles. You can choose to build a building without an architect (you or the agent) and without using engineered components (a proper database for example), which will likely lead to leaks or a full on collapse.
Frankly, this is no different to the franksystems build in midieval times.
write python to "Add user accounts to a website so people can log in."
The model generated a small, working Flask and SQLite example. That is acceptable for a demo but it did not ask about these five requirements:
Should emails be unique Should accounts be verified Should users reset passwords Should roles exist What is the security model? ”
Write a better prompt? I don’t think any software engineer would ever send that?