Vibecoding: How to program a good application with AI
August 13, 2026I have been actively working with artificial intelligence since 2023 as a user, I use it in applications and for the last year I have also been programming with the help of AI. And in this article I will share my experience with AI and above all I want to share real experience from software development with the help of AI.
In 2023 I originally used AI, specifically ChatGPT, only for fun or as a search engine that could quickly give me an answer to a brief question.
Today, however, AI can also handle longer material well.
The images that AI generated in 2023 were comical; today, in 2026, AI generates images that match a graphic designer or reality in quality.
I recorded all these past experiences in the article about AI from 2023
Even back then it was possible to connect to AI and their language models programmatically. How to do it is described in my article with a guide for using the OpenAI API in the Python programming language. It is therefore possible to use your own AI or third-party AI models. Thanks to that I also carried out a sample implementation of a project with AI: Automatic generation of understandable medical reports
Today, in 2026, it is possible to run AI locally as well, although such models are slower and their outputs are of lower quality. Large models with additional tools, however, make it possible to program efficiently today. The process where the code is not written by the programmer but by AI is called vibecoding.
What is vibecoding
Vibe coding, or written in short vibecoding, is a way of programming where the programmer no longer writes code line by line and instead becomes the one who specifies the assignment, the director and the editor, communicating their visions in natural language with advanced AI tools (such as Cursor, Claude or Replit Agent). The whole process rests on the ability to describe what is to be created and how, and the AI generates the specific code and often also creates the specific architecture, logic and appearance. It is a process in which the specific technical implementation moves into the background and it is more important to be able to specify the requirement well - what should be done and how. A person can thus focus more on creativity, on inventing new features, and not deal so much with the specific implementation. It is even possible that non-programmers are able to create simple applications or prototypes.
AI tools
Which AI tool to use? First of all, you will choose the tool according to whether you are a real programmer or whether you are a non-programmer and want to create a program.
For non-programmers there are tools that focus on the appearance and have the technical solution preset and prepared in advance and leave it in the background, because a layman does not understand it and is not even interested in it. You can try out, for example, https://stitch.withgoogle.com. Personally I tried the project https://lovable.dev, which uses AI to create a project written in JavaScript/TypeScript and uses the Supabase database as storage. It quickly generated an application for me according to the assignment, which I could use right away and which was accessible on the Internet. Some of its functions worked, some did not. However, I did not examine in more detail why it did not work and whether it could be fixed easily or with difficulty.
For programmers and technicians, the suitable tools are Claude Code or Cursor. For trying it out, the advantage is that Cursor also has a free mode. I subscribed to Cursor, so I now use it every working day for the development and programming of applications.
What Cursor looks like in real use you can see here:
Claude Code is a console tool. Cursor is a graphical application that works as an IDE. In the end I subscribed to Claude Code as well and now I primarily use mainly Claude Code.
This is how you work with Claude Code:
Programming with AI I also use for existing projects. Today I devote myself exclusively to the development of quality projects with good architecture and a minimum of legacy code. As for web applications, in most cases they are programmed in the robust PHP framework Symfony. And thanks to that the AI finds its way around the project source code well and the AI is able to modify the project with quality.
I have also carried out one project completely on a greenfield and I did the development from the beginning with the help of AI. It is my video e-learning platform itdevlearn.cz.
For ordinary work with text, for queries and for generating images I use Gemini, because it has a good interface and I thus have one AI for both desktop and mobile. Gemini today also has image generation integrated, so I generate images through it.
What I have noticed about code generated with AI
Code from AI looks good at first sight, works and even has comments. But when you read it as a developer who is going to maintain it for several years, you come across recurring bad habits:
- AI duplicates code. Instead of using an existing service or method, the AI writes the same logic again in another place. With good instructions, however, the AI can be forced to limit this classic bad habit.
- AI generates modern complicated constructions, in which it is then hard to find your way. My opinion is that it is better to create easily readable code. That is why I have such hard-to-read code rewritten into something simpler.
- AI tries to add a lot of new technologies and dependencies that the project does not need and that someone then has to maintain and update.
- Or, on the contrary, AI writes everything itself. Where a good, simple and debugged library exists, it is typically better to use the library than to let the AI create more of its own code that you will then have to maintain.
- AI generates complicated tests or tests silly things As a result there are a lot of tests, they run for a long time, but they do not reveal a real error. That is why the tests also need to be analysed and it needs to be defined in a targeted way what is to be tested.
- AI does not use the possibilities of the framework. Typically it generates its own code for validation, while it would be enough to use an annotation (attribute). In the case of the PHP framework Symfony, an entity property can be carried all the way to the form using annotations, and there, thanks to the annotation, the input form fields are then validated automatically.
- AI takes inspiration from the code in the project even where it does not make sense. It creates code that is similar to the surrounding code, but in the given function it is not needed, for example it passes variables that are normally directly available.
And above all: AI is willing to program anything. So it will happily program something for you that is wrong or does not make sense, if you specify it that way. It will not tell you "this is nonsense", but will obediently do it.
What is needed for AI to do a good job
AI does not do miracles, but it multiplies what is already in the project. On a good foundation the result is excellent, on a bad foundation the problems only multiply. So you need:
- A quality design of the application architecture and good source code.
- Robust technologies For example the PHP framework Symfony, which keeps both the developer and the AI within clear boundaries.
- A capable developer who knows how to use version control (that is git), has technical and logical thinking and understands the technologies used.
AI needs access to what it is supposed to work with: access to the source code, to the files and ideally to the database. I categorically do not give AI access to the production server. After all, I do the development on a local computer and I run the application in docker. It is necessary to use git, thanks to which you can return to a working version and compare changes. It is a necessity to have tests that will ideally be run automatically. Thanks to the tests you verify that the application still works the same.
My recommendation
Here is my recommendation on how to assign tasks to the AI agent that programs the application for you.
- Assign small, precisely defined tasks. The bigger and vaguer the assignment, the greater the probability that you will throw the result away.
- It is not enough to describe only what the result should be, but also how it should work technically.. The logic can well be devised by the AI, but you should understand and subsequently confirm how the given functionality is supposed to work.
- Use version control and commit often. Before every larger intervention by the AI have a clean state of the repository, so that you have somewhere to return to.
- Use open source technologies. Projects based on open source technologies have an advantage, because thanks to the available documentation and examples the AI understands them much better.
- Do not let AI loose on a bad project. Modifying spaghetti code with AI, for example a website written in PHP without a framework, is a certain risk.
- Have the AI write unit tests for you. That is work which is rewarding for AI and will save you a lot of time.
- Always read and review the code after the AI. The responsibility for the result still lies with the human.
If you have a well maintained project in PHP/Symfony and you keep strict standards, then the AI will completely create the basis of similar functionality for you in 15 minutes, while at other times it would have taken you, say, two days. Then it is only necessary to fine-tune and check the program. That does take some time as well, but if you want to be sure, you have to invest that time.
Risks
Security
AI is able to carry out an analysis of typical errors in a program that can endanger the stability or security of the application. However, security is also determined by the correct definition and implementation of roles and access rights. The AI will program it for you the way you need it and so that it works. But are you sure that nobody, in any situation, has access to data they are not supposed to see? Various restrictions are made for security reasons, but on the other hand they restrict the user. It is then often simpler to make the data more accessible than exactly as it is defined for the process according to which access to the data is supposed to be governed.
Performance
Performance depends on the quality of the code and on the performance of the server. You can strengthen servers a lot, but not infinitely, and it will cost you money. It is better to invest in quality code. AI is able to deliver quality code, but not always, and that is why an experienced developer should review the code. Moreover, an experienced IT specialist is able to pick out the places that can be simplified without limiting the functionality and further modifications of the application, and thereby also speed up the development. At the same time, an experienced IT developer will program performance-optimised code where it makes sense.
Scalability
Do you think you will deploy the application to the cloud and suddenly you will be able to scale it? Then you are mistaken. For an application to be scalable, it has to be well designed for it. Typically you design such an application as microservices, but with microservices your complexity grows and new potential problems are added. And at that moment the business question comes again: do you want to quickly deliver a working application that fulfils the main needs, or do you want to build something scalable? You cannot want everything at once and with complexity the risks grow, including the risk of failure.
Practical use of AI even outside writing code
- Proofreading of text, whether it is documentation, an e-mail or an article.
- Explanation of a term or abbreviation that you come across in someone else's project.
- Brainstorming over ideas. The output, however, needs to be critically analysed and evaluated, because the AI will readily offer you paths that do not make sense as well.
- Generating images and graphic materials.
Limits of the tools and organisation of work
Claude Code has a limit in the form of a five-hour window and, on top of that, a daily limit. For someone who works in the mode of a classic office eight-hour day in one go, that can be a problem. I personally get up early in the morning. I do a chunk of work in the morning. Before noon I return to work and the window resets for me in the meantime. Then again in the early evening. If I work a lot and long in the evening and thereby exceed the limit, the limit window again manages to reset for me.
How I assess the entry of AI into the software development segment
AI will change the development market. Will programmers lose their jobs? If someone's job was only to hammer out code, then such a person will lose their job. The job description of a developer is, however, not only to produce code, but to analyse the assignment, design the architecture and above all to decide what should be done and how, and direct responsibility for the quality of the code, which is then used by a real person and on whose running the whole company or even the whole state depends.
The quality of code generated with AI is often very good, especially if it is modifications on a well maintained project. The problem, however, may be a badly created assignment or insufficient precision in the specification of how the application is supposed to work.
The quality of future applications that reach us users will thus depend mainly on managerial decisions about whether speed, price or trouble-free functionality will be preferred.
For a beginner, AI can mean producing better code than they would write themselves. For an experienced programmer, AI will on the contrary mean the production of code that will not be as good as the one they would write, but will still be sufficient.
I expect that nocode and lowcode tools will be in decline, because today it is simple for a layman to make an application directly with AI. As for quality from the point of view of security, in my opinion that will be a problem. Not because AI does not take security into account, but because people do not want to deal with security. Security mostly restricts them, after all. Another advantage is that with programming with the help of AI you are able to deliver much more complex functionality than on a pre-prepared solution. An application implemented by a layman with the help of AI can in the end be taken over by an experienced programmer, so as to gradually turn the botch-up into a working and secure solution that can be maintained and developed.
Conclusion
Vibecoding is a real way of working which I use every working day and which saves me a lot of time. It does not mean, however, that a programmer would stop being needed, only their role and the requirements placed on them are changing. AI is an excellent and fast executor, but the decision about what should be done and how, and the responsibility for the result, remain with the human.
Articles on a similar topic
How to speed up the web
Rector: upgrade PHP application
Go programming language
Analysis of assignment and pricing of software project development
Python program to control Docker using the API
How to use MailCatcher to test emails
Python OpenAI API
Creating a WebSocket web application and setting up a proxy
Project management: agile software development
How to run old PHP applications
What a good programmer should know
Rust programming language
NodeJS: development, server configuration
Nette security bug CVE-2020-15227
How to compare two identical databases?
REST API: platform API
Custom web and mail hosting with ISP Config software
Programming in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: secure web
NoSQL database Mongo DB
Connecting to Microsoft SQL Server from Linux
What is the job description of a programmer
Python application localization
Which mail and web hosting to choose
Digispark - Program Atmel ATtiny microcontroller with Arduino IDE
Development for ARM processors with Arduino IDE
How to program the ESP8266 WiFi processor
Comparison IQRF vs Wireless Arduino
What platform should I choose for my e-shop? For example, Prestashop
Development kits and gateways for wireless platform IQRF
OpenStreetMap and GPS routes in the map on the web
Quickplay
Java Card OpenPlatform Contact and Contactless Chip Cards
Open smartphone with Linux - Openmoko Neo FreeRunner
Development for wireless modules with PIC processor under GNU/Linux - IQRF
Newsletter
If you are interested in receiving occasional news by email.
You can register by filling in your email
news subscription.
+