Will AI replace software engineers?
The above title is a much heard saying. I don’t believe it will come that far. At the moment AI is still at a level where it is a junior developer, which needs guidance and direction. But even if AI becomes much better at all the different tools a senior software engineer has, it simply can’t replace software engineers fully.
The current situation
Like I described above, currently AI operates as a junior software which needs a lot of guidence. With a human in the loop who checks all the steps AI mades, we make small changes, test them and check them in. Actually the same as we normal do during software development, but then possibly faster because AI comes up with the code.
Given that, we must adopt AI as software developers as we adopted before syntax high lighting, IDE’s that do for example the refactoring for us and program languages that abstracted away complexities so we can concentrate on the program itself. AI is just another wave in improving our work.
Since AI can quickly come up with solutions we ask or find bugs quickly in code, it can be our companion that makes it possible to deploy software faster and with less people.
It just follows the happy path
One big issue when vibing code is that it only follows the happy path. It doesn’t have the creativity to think of all the nudges and edges that software has when users actually using it. A user might perform some actions in the application, AI didn’t think of at all. Even if it has a really big context of all possible scenario’s which can happen during the type of application you are writing, it might miss some trivial cases. With the experience of a senior software engineer changes are less. The engineer sits together with other engineers, the architect and think on which all kind of cases they should think of.
Most of the things will also just show up when testing and using. This is something a vibe code tooling doesn’t do. It generates code and tell’s you “This fixes the problem, the issue is solved!”.
Lack of using creativity
I already mentioned above, the lack of using creativity is an issue. When you want to vibe a certain kind of software solution, most of the times it will come up with a solution that looks almost each time identical to another session where you ask to build the same kind of software. UI also looks familiar. That isn’t a big surprise. AI can only do that what it is trained to do. Even if the LLM contains a lot of different examples of a kind of application, it can only create applications that it is aware of in its LLM.
Lack of a solid architecture
AI just creates a program it is asked to create for you. It doesn’t have any plan in mind to come up with some solid software architecture. Having no software architecture will be a problem when you want to extend or debug your application. Then even AI will create a bigger mess of your application and it will take you more time to review, understand and test the generated code.
Concurrency
AI is bad at concurrency. Not sure if that will be better in the future. But for now this is an issue. Most of the times it will just create a sleep, and tells you this fixed the issue. But we as senior software engineers know better.
Costs
Maybe this is something that will be solved in the future, but for now AI costs a lot. The number of tokens that it cost you to build a steady commercial ready application with AI will probably cost you a lot more that if you build that application with the help of software engineers.
So the future?
I won’t foresee AI will take over the jobs of software engineers. Given the above examples that are either hard to solve in AI or never will be solved, we must see AI as a tool that helps us software engineers to develop faster and make our lives easier. We can create more time so we can work on those projects we like, and let AI give some hints what might be the issue of a bug that was found. Since software that doesn’t contain bugs doesn’t exists, even with AI, we still need software testers and software engineers to keep an eye on the quality.