Vibe coding
- Jędrzej Dec

- Feb 11
- 9 min read

What is vibe coding?
To quote Wikipedia [2]:
Vibe coding is a chatbot-based software development approach in which a developer describes a project or task to a large language model (LLM), which generates code based on suggestions. The developer does not verify or edit the code; instead, the developer uses only the tools and results provided by the LLM to evaluate it and asks the LLM for improvements. Unlike traditional AI-assisted coding, the developer avoids code analysis, accepts AI-suggested additions without human review, and focuses more on iterative experimentation than on code correctness or structure.
In other words, we're talking about creating software where no human has ever seen, let alone understood, the source code. Could this be beneficial for companies? Of course it is. But it can also be harmful.
Why?
Before we delve into the potential benefits and risks, let's first consider why anyone would want to create and use custom apps.
From a large company's perspective, the benefits are obvious. They can have a tool that solves a problem, and implementing it takes days (or hours) instead of months. Best of all, it doesn't require a highly paid IT specialist. Anyone in the company can create an application that everyone can use. The application is ready in the blink of an eye, can be modified almost immediately, and the implementation cost was €0. Great, right?
Something similar is already happening; just think of VBA or Power Automate. Users can create their own automations for certain tasks. This is cool, but it requires some knowledge of the tool you're using. Not everyone understands how complex Power Automate can be and how difficult it can sometimes be to actually get it to do what you want. Unfortunately, VBA is even more difficult and requires appropriate programming knowledge.
With vibe coding, no skills are required. Just ask your LLM what you want, and they'll create it for you. Want something different? Just ask again. AI coding can accelerate your workflow, whether you're a developer or an average user. This seems like a boon for workers under constant pressure to deliver more with less.
Potential use cases
The potential applications are almost limitless. Just think of any repetitive task you perform every day. You can create an app for it.
Some simple ideas, probably possible to implement using Power Automate or just a bit of Python ;)
Prepare a daily stock report, put it into a company template and send it to your boss.
A corporate event registration app that includes a button to donate to charity.
Automatically generated business emails. You type your message, and the app places it on company stationery and sends it. This can include an activity tracking dashboard that lets you see how many people have opened your message.
The ideas are endless.
What is artificial intelligence?
Do you really know what AI is? Artificial intelligence, you say? Sort of. That's what AI means, but the tools currently being touted as AI tools have nothing to do with intelligence. They're called "Large Language Models" (LLMs). These are highly complex statistical models that predict which words should be displayed based on a query. They calculate the first word, then go back to the model to calculate the second, third, and so on. They're programmed to simulate human personality. Try typing something unpleasant into the ChataGPT command line, and the program will start apologizing.
The machine is not conscious or intelligent!
All LLMs have absorbed the entire knowledge of the internet. Every possible source of human-generated content is in their database. The answers you see are based on what the LLM has previously seen on some forum or website. This isn't an intelligent machine's response; it's a replica of human behavior, a simulation.
What are the risks?
By using LLM programs that aren't authorized by your company, you could inadvertently cause data leaks. Did you know that any information you submit to these tools will be used to train the model for all others? It could therefore answer someone's query using your top-secret documents. This applies not only to coding, but to all queries.
The code that LLM generates is someone else's code, only slightly modified to suit your purpose. LLM doesn't understand this. So what happens if the original author of the code finds out you're using their work? They could sue the company.
Is your application secure? Are you sure? How can you identify and track all the libraries LLM used to generate your application? How can you be sure they don't have security flaws? Since you've never written a single line of code, you have no idea whether the application is secure or not. Worse, you have no idea how to test it. One of the simplest problems is the login prompt and SQL injection attack. What would happen if I entered my username as TEST' OR 'x'='x and the same as my password? If the code were written using only basic SQL syntax, I would have logged in without knowing the login.
If your application uses an external API, is it secure? How do you know what information is being sent through that API? You might be sending data to an attacker, and LLM won't inform you because it doesn't understand the security context. This is called a "supply chain attack."
If your application ever grows and becomes critical to the company, management may decide to hire a real developer to maintain and develop it further. This person will need significant time to understand the potentially chaotic and undocumented code written by the LLM. This slows development and can lead to undetected security issues. I call this a "debugging nightmare."
Countermeasures
The whole topic of vibe coding is a serious problem for internal IT departments. It falls under the umbrella of "shadow IT," where users find clever ways to do things they shouldn't.
If you allow users to create their own applications and accept the risk, fine. However, I still recommend enforcing code review by internal IT. Conduct penetration testing, even simple ones like the SQL injection attacks described earlier. Limit the access you grant to the application. Run it on a secured network or in a secured virtual machine. Make sure you truly understand what the application does, what it sends, and where it goes. Inform users that they may inadvertently disclose data.
In my opinion, using LLMs to write code only makes sense if you write the code yourself and ask the AI for help with specific issues. But even then, you shouldn't just mindlessly copy and paste code. Take the time to read it, understand it, and make sure it doesn't do anything strange or unexpected. I do this every time I get stuck. LLMs have been very helpful in developing many small tools, both for myself and for company-wide applications. However, I always took the time to read the code provided, checking dependencies and libraries.
Summary
I'm not opposed to vibe coding if your company has the capabilities to implement the appropriate security measures. This process can certainly improve many processes within your company. However, you need to educate your users about the risks associated with using LLM for coding. If you're a developer yourself, I suggest using AI tools as a support, not a replacement. Remember to always write code with a "secure by design" approach.
Sources
[1] Globant and MIT Technology Review, Transforming software development with generative AI
Cytując Wikipedię [2]:
Vibe coding to podejście do tworzenia oprogramowania oparte na chatbotach, w którym programista opisuje projekt lub zadanie dużemu modelowi językowemu (LLM), który generuje kod na podstawie podpowiedzi. Programista nie weryfikuje ani nie edytuje kodu, lecz korzysta wyłącznie z narzędzi i wyników podanych przez LLM, aby go ocenić i prosi LLM o wprowadzenie ulepszeń. W przeciwieństwie do tradycyjnego kodowania wspomaganego sztuczną inteligencją, programista unika analizy kodu, akceptuje sugerowane przez sztuczną inteligencję uzupełnienia bez weryfikacji przez człowieka i koncentruje się bardziej na iteracyjnym eksperymentowaniu niż na poprawności lub strukturze kodu.
Innymi słowy, mówimy o tworzeniu oprogramowania, w którym żaden człowiek nigdy nie widział, a tym bardziej nie rozumiał, kodu źródłowego. Czy może to być korzystne dla firm? Oczywiście, że tak. Ale może być też szkodliwe.
Dlaczego?
Zanim zagłębimy się w potencjalne korzyści i zagrożenia, zastanówmy się najpierw, dlaczego ktoś miałby chcieć tworzyć i używać niestandardowych aplikacji.
Z perspektywy dużej firmy korzyści są oczywiste. Mogą mieć narzędzie, które rozwiązuje problem, a wdrożenie tego narzędzia zajmuje kilka dni (albo godzin), a nie kilka miesięcy. A co najlepsze, nie potrzeba do tego wysoko opłacanego informatyka. Każdy w firmie może stworzyć aplikację, z której będą mogli korzystać wszyscy. Aplikacja jest gotowa w mgnieniu oka, można ją modyfikować niemal od ręki, a koszt wdrożenia wyniósł 0 EUR. Świetnie, prawda?
Coś podobnego już się dzieje; wystarczy pomyśleć o VBA lub Power Automate. Użytkownicy mogą tworzyć własne automatyzacje niektórych zadań. To fajne, ale wymaga pewnej znajomości narzędzia, którego się używa. Nie każdy rozumie, jak skomplikowany może być Power Automate. Jak trudno jest czasami sprawić, by faktycznie robił to, czego chcemy. VBA jest jeszcze trudniejszy i wymaga odpowiedniej wiedzy programistycznej, niestety.
W przypadku vibe coding nie są wymagane żadne umiejętności. Wystarczy zapytać LLM, czego chcesz, a on to dla Ciebie stworzy. Chcesz czegoś innego? Po prostu zapytaj ponownie. Kodowanie AI może przyspieszyć Twój przepływ pracy, niezależnie od tego, czy jesteś programistą, czy przeciętnym użytkownikiem. Wydaje się to błogosławieństwem dla pracowników pod ciągłą presją, by dawać więcej za mniej.
Potencjalne przypadki użycia
Potencjalne zastosowania są niemal nieograniczone. Wystarczy pomyśleć o dowolnym powtarzalnym zadaniu, które wykonujesz każdego dnia. Możesz stworzyć do niego aplikację.
Kilka prostych pomysłów, prawdopodobnie możliwych do zrealizowania przy użyciu Power Automate lub po prostu odrobiny Pythona ;)
Przygotuj dzienny raport giełdowy, wrzuć go do szablonu firmowego i wyślij swojemu szefowi.
Aplikacja do rejestracji na imprezę firmową, zawierająca przycisk umożliwiający przekazanie darowizny na cele charytatywne.
Automatycznie generowane firmowe e-maile. Wpisujesz wiadomość, a aplikacja umieszcza ją na firmowym papierze i wysyła. Może to obejmować panel śledzenia aktywności, który pozwala podejrzeć, ile osób otworzyło Twoją wiadomość.
Pomysły są nieograniczone.
Czym jest sztuczna inteligencja?
Czy naprawdę wiesz, czym jest AI? Sztuczna inteligencja, mówisz? W pewnym sensie. To właśnie oznacza AI, ale narzędzia, które obecnie są reklamowane jako narzędzia AI, nie mają nic wspólnego z inteligencją. To tak zwane „Duże Modele Językowe” (z angielskiego Large Language Models, LLMs). To bardzo skomplikowane modele statystyczne, które przewidują, jakie słowa powinny zostać wyświetlone na podstawie zapytania. Obliczają pierwsze słowo, a następnie wracają do modelu, aby obliczyć drugie, trzecie i tak dalej. Zostały zaprogramowane tak, aby symulować ludzką osobowość. Spróbuj, wpisz coś niemiłego w wiersz poleceń ChataGPT, a program zacznie Cię przepraszać.
Maszyna nie jest świadoma ani inteligentna!
Wszystkie LLMy wchłonęły całą wiedzę internetu. Każde możliwe źródło treści stworzonych przez człowieka znajduje się w ich bazie danych. Odpowiedzi, które widzisz, opierają się na tym, co LLM widział wcześniej na jakimś forum lub stronie internetowej. To nie jest odpowiedź inteligentnej maszyny; to replika ludzkiego zachowania, symulacja.
Jakie są ryzyka?
Korzystając z programów LLM, które nie są autoryzowane w Twojej firmie, możesz niechący powodować wycieki danych dane. Czy wiesz, że wszystkie informacje, które prześlesz do tych narzędzi, zostaną wykorzystane do trenowania modelu dla wszystkich innych? Może on zatem odpowiedzieć na czyjeś zapytanie, korzystając z Twoich ściśle tajnych dokumentów. Dotyczy to nie tylko kodowania, ale wszystkich zapytań.
Kod, który generuje LLM, to kod kogoś innego, tylko nieznacznie zmieniony, aby pasował do twojego celu. LLM tego nie rozumie. Co się więc stanie, jeśli pierwotny autor kodu dowie się, że korzystasz z jego pracy? Może pozwać firmę.
Czy Twoja aplikacja jest bezpieczna? Jesteś pewien? Jak możesz zidentyfikować i śledzić wszystkie biblioteki, których LLM użył do wygenerowania Twojej aplikacji? Skąd możesz mieć pewność, że nie ma w nich luk bezpieczeństwa? Ponieważ nigdy nie napisałeś ani jednej linijki kodu, nie masz pojęcia, czy aplikacja jest bezpieczna, czy nie. Co gorsza, nie masz pojęcia, jak ją przetestować. Jednym z najprostszych problemów jest monit logowania i atak typu SQL injection. Co by się stało, gdybym wpisał swoją nazwę użytkownika jako TEST’ OR ´x´=´x i to samo jako hasło? Gdyby kod został napisany przy użyciu tylko podstawowej składni SQL, właśnie bym się zalogował, nie znając loginu.
Jeśli aplikacja korzysta z zewnętrznego interfejsu API, czy jest on bezpieczny? Skąd wiesz, jakie informacje są przesyłane przez ten interfejs? Możliwe, że wysyłasz dane do atakującego, a LLM nie poinformuje Cię o tym, ponieważ nie rozumie kontekstu bezpieczeństwa. Nazywa się to „atakiem na łańcuch dostaw”.
Jeśli Twoja aplikacja kiedykolwiek się rozrośnie i stanie się mega ważna dla firmy, kierownictwo może zdecydować o zatrudnieniu prawdziwego programisty do jej utrzymania i dalszego rozwoju. Taka osoba będzie potrzebowała dużo czasu, aby zrozumieć potencjalnie chaotyczny i nieudokumentowany kod napisany przez LLM. To spowalnia rozwój i może prowadzić do niewykrycia problemów bezpieczeństwa. Nazywam to „koszmarem debugowania”.
Przeciwdziałanie
Cały temat vibe codingu to poważny problem dla wewnętrznego działu IT. Podpada on pod „shadow IT”, gdzie użytkownicy znajdują sprytne sposoby na robienie rzeczy, których nie powinni robić.
Jeśli pozwolisz użytkownikom na tworzenie własnych aplikacji i akceptujesz ryzyko, w porządku. Nadal jednak zalecam wymuszenie weryfikacji kodu przez wewnętrzny dział IT. Przeprowadź testy penetracyjne, nawet te proste, jak opisane wcześniej ataki typu SQL injection. Ogranicz dostęp, jaki przyznajesz aplikacji. Uruchom ją w zabezpieczonej sieci lub na zabezpieczonej maszynie wirtualnej. Upewnij się, że naprawdę rozumiesz, co robi aplikacja, co wysyła i dokąd. Poinformuj użytkowników, że mogą nieumyślnie ujawniać dane.
Moim zdaniem, korzystanie z LLM-ów do pisania kodu ma sens tylko wtedy, gdy sam taki kod napiszesz i poprosisz sztuczną inteligencję o pomoc w określonych kwestiach. Ale nawet wtedy nie powinieneś po prostu bezmyślnie kopiować i wklejać kodu. Poświęć czas na jego przeczytanie, zrozumienie i upewnienie się, że nie robi niczego dziwnego ani nieoczekiwanego. Sam tak robię to za każdym razem, gdy utknę. LLM-y były bardzo pomocne w rozwijaniu wielu małych narzędzi, z których korzystam tylko ja, ale także w aplikacjach obejmujących całą firmę. Zawsze jednak poświęcałem czas na przeczytanie podanego kodu, sprawdzanie zależności i bibliotek.
Podsumowanie
Nie jestem przeciwny vibe codingowi, jeśli Twoja firma ma możliwości wdrożenia odpowiednich zabezpieczeń. Ten proces z pewnością może usprawnić wiele procesów w Twojej firmie. Musisz jednak edukować swoich użytkowników o zagrożeniach związanych z używaniem LLM do kodowania. Jeśli sam jesteś programistą, sugeruję korzystanie z narzędzi AI jako wsparcia, a nie ich zastępstwa. Pamiętaj, aby zawsze pisać kod zgodnie z zasadą „secure by design”.
Źródła
[1] Globant and MIT Technology Review, Transforming software development with generative AI

Comments