Digital orphans
Disclaimer: this article IS NOT generated by AI although the picture is.
Classic approach
When we create software in a classic approach it takes time. During this time our software evolves. We write every line of it. We often rewrite it. We know every line. When we encounter an issue we often know immediately what it is and how to fix it. During the months of design and development we develop a relation to our software.
It becomes something like our child.
When we vibe code an app
Just to clarify: “vibe code” means we do not write the code but tell AI to create it, deploy it, test it and run it.
This is a completely new world when you can create an app without being expert at programming in 1-2 days for 20 dollars. Sounds great! So what is the problem here?
Easy come. Easy go.
Because we receive an app in a short time we think it is not very valuable because it was so easy to create it. Just like when somebody wins a lot of money in a casino. This money will not have the same value for the receiver as earned in for example long and difficult project engagement.
Digital orphans
When we vibe code an app we get an app in hours or maybe 1-2 days. We are not very familiar with how it is working because whatever we told AI it may have been understood in a different way or maybe even ignored. Certainly we have not seen the code, maybe some parts of it. But it works. Somehow.
We do not have any relationship with it. It is certainly not our child.
It is an AI's child.
Recommended by LinkedIn
There is usually a huge difference between how parents care about their own children vs the children of others.
Here the situation is very similar.
Vibe coded apps are orphans and the difficulty of maintaining and extending them with new features etc is similar to working on abandoned legacy projects where no human being can tell us how they work.
Even if the quality of generated code gets better still it does not change the fact that there is no relation nor familiarity between creators and the creation.
Security
As always security is the most tricky part here. Generated apps usually create multiple attack surfaces and the creators do not see nor understand them. As always in security we jump from “I do not know” to big trouble. When we finally know it - it is usually too late.
Generated legacy?
Still I would say vibe coding whole apps can be great for prototyping, creating an MVP, quick demo for clients or generating a simple UI for some existing backend component.
The issues with security, maintainability and lack of understanding are not blockers in this context.
The question is: will they ever go to Production in mainstream app development?
Seems like now productionizing it would introduce something very similar to legacy software starting from version 1.0.
If this is correct the issue with generated apps is not technical but very human centric.
What do you think?
Here it goes: https://maciejmalecki.github.io/why-dont-i-feel-emotional 1) vibe coding is perhaps one of the most misunderstood terms on this hype cycle 2) humans does mistakes too, perhaps even more than AI 3) human-written code in enterprise code base is most likely orphaned as well
Well, I would need to respond with a whole article, give me few hours 😉
The approach of 'I'll vibe code something-or-other quickly and thoughtlessly for $20' is fine if you want to set up a website with funny cats. Could we replace 'Vibe coding' with a more professional term, e.g., 'Superficial LLM-Facilitated Heuristic-Driven Prototyping via Unvalidated Solution Synthesis'? 😀 OK. Enough jokes. Yes, the problem lies with the human operator of the LLM. A Software Engineer is responsible for the code, regardless of whether they are emotionally attached to it or how it was generated. We must remember that the client pays and expects us to deliver a product that is not only functional but also secure and reliable. In complex domains like banking, where we work on gigantic distributed systems, we are problem solvers; code generation itself is only part of the job. I use LLMs to generate code, but I always check what has been generated. Regardless of whether an LLM or a classic framework generated the code, I have to know how it operates. Even with the use of LLMs, a responsible approach ensures we can still deliver high-quality products to our clients and business partners.
Jonathan Zittrain coined the concept of intellectual debt, which Neil Lawrence has significantly extended - describing it as the gap between our ability to use AI systems and our understanding of how they work, or more precisely: the inability to explain your software system. It is going to be interesting to see how our industry deals with this issue and what price we will all have to pay until we figure this out.
It works... somehow. That tells everything.