AI tools have made it possible to build websites and web applications with very little manual coding. You can request a registration page, an administrator dashboard or even a database connection and get generated code within minutes.
This is what makes vibe coding attractive. A developer explains an idea in ordinary language, and an AI tool attempts to turn it into a working application.
But imagine using an application that allows students to view other students’ examination results simply because the developer forgot to configure access permissions. The application may work, but it has a serious problem.
That is where software engineering comes in.
**
A working application is not necessarily a good application
**
Software engineering involves the methods used to plan, develop, test and maintain software. It helps developers think about what could go wrong before users experience the problem.
Consider a school management system with three types of users: students, teachers and administrators.
Each user should have different permissions. Students should only access information meant for them, teachers should manage their assigned classes, and administrators should control the system.
If a developer simply asks AI to generate the entire application and accepts the result without checking it, these permissions may not be implemented correctly.
The interface might look complete, but the application could expose confidential records.
Where vibe coding becomes risky
There are several problems that can come from developing applications without proper engineering practices.
- Security weaknesses
Generated code may contain insecure database queries, weak authentication or missing access controls. These mistakes can expose user information.
- Errors that are difficult to trace
When a developer does not understand the code generated by AI, finding the source of a problem becomes difficult. Changing one part of the application may also affect another part.
- Poor performance
An application that works for a few users may struggle when many people use it simultaneously. Proper planning and performance testing help identify these problems.
- Data loss and incorrect records
Poor database design can result in duplicated information, missing records or incorrect updates. This is particularly dangerous for applications handling school, business or financial information.
- Lack of proper maintenance
Applications need updates and improvements. If the original code is poorly organised or undocumented, future developers may struggle to work on it.
What should developers do differently?
AI does not have to be removed from the development process. It simply needs to be used with care.
Before writing code, developers should understand the problem they are trying to solve. They should plan the application’s structure and decide how information will move between its different components.
During development, generated code should be reviewed instead of accepted blindly. Testing should cover normal situations as well as unexpected inputs. Git can also be used to track changes and make it easier to recover earlier versions of a project.
Security checks should happen throughout development, not just after an application has been completed.
My take
Vibe coding is a useful way to experiment with ideas and build prototypes. It can also help students understand how different parts of a web application fit together.
However, depending on it entirely creates a problem. A developer should be able to explain what their application does, understand its important code and identify possible weaknesses.
The goal of web development should not be to produce the most applications in the shortest time. It should be to produce applications that work correctly and can be trusted by the people using them.
This article was prepared with assistance from AI and reviewed by the author.