Entuzjasta: Czy znacie określenie „vibe coding”? Ten termin pojawił się w lutym 2025 r. i błyskawicznie zdobył popularność. To określenie na tworzenie programów bez… programowania. Dzięki modelom GenAI możemy po prostu podać kilka instrukcji dla modelu językowego i w rezultacie otrzymać działający program. Sprawdzamy efekt i piszemy dalsze instrukcje: co trzeba dodać, zmienić czy poprawić. W ten sposób iteracyjnie docieramy do ostatecznej wersji aplikacji.
Manager: Tak, rzeczywiście. W YouTube znalazłem bardzo efektowne przykłady tej metody. Aplikacje, których przygotowanie wcześniej zabrałoby tygodnie, mogą powstać w ciągu kilku godzin czy nawet minut…
Zastanawiam się, czy to jest w praktyce kolejna generacja języków programowania? Zaczęliśmy od kodu maszynowego, gdzie programista dosłownie składał program z zer i jedynek. Dzisiaj większość czasu spędzamy, pisząc w językach tzw. trzeciej generacji (Java, C#, czy JavaScript) lub 4GL jak SQL, ABAP. W kilku liniach kodu uzyskujemy to, co następnie przełoży się na kilkaset instrukcji dla procesora.
Mamy też od dawna obietnicę języków piątej generacji (np. Prolog), które miałyby polegać na opisywaniu problemu i warunków do spełnienia, bez zastanawiania się nad algorytmem implementacji. Jednak niewiele słychać o ich realnych zastosowaniach biznesowych. Może więc właśnie obserwujemy spełnienie założeń 5GL, tyle że innymi środkami?
Entuzjasta: Myślę, że to trafna analogia. Andrej Karpathy (autor określenia vibe coding) stwierdził między innymi, że wkrótce najbardziej popularnym językiem programowania będzie… angielski.
Sceptyk: Zgadzam się, że AI skutecznie wspiera pracę programistów, a efekty działania LLM-ów (Large Language Models) są naprawdę imponujące. Jednocześnie uważam, że z ostatnich postępów w tej dziedzinie wyciągamy zbyt daleko idące wnioski.
M: Ale to nie są tylko moje wnioski. Prezes Nvidii Jensen Huang w 2024 radził, żeby już nie uczyć się języków programowania. A Mark Zuckerberg w wywiadzie z początku 2025 stwierdził, że do końca tego roku AI zastąpi nie tylko juniorów, ale nawet średnio doświadczonych deweloperów.
S: Wspomniane filmy na YT – np. z konferencji OpenAI i Google – prezentują wąskie, sprawdzone scenariusze, które są „skazane na sukces”. Nowa interpretacja gry Snake lub Tetris, lista „to do” czy inny prosty formularz zapisujący rekordy w bazie danych. Faktycznie, w tym przypadku w kilka minut z dobrze napisanego prompta możemy uzyskać działający program. Ale w zdecydowanej większości to nie będą aplikacje gotowe do poważnych zastosowań. Kompetentny programista powinien zawsze sprawdzić ich kod – pod kątem bezpieczeństwa i prawidłowej logiki przetwarzania danych. W przeciwnym razie ryzykujemy poważne kłopoty. Część funkcji może okazać się tylko atrapami – ładnym interfejsem użytkownika, pod którym nie ma prawidłowego przetwarzania danych. Mogą też gromadzić dane użytkowników w sposób niezapewniający ich poufności.
Po drugie, kiedy aplikacja staje się nieco bardziej skomplikowana – dodajemy do niej kolejne funkcje i komponenty – szybko zmniejsza się skuteczność takiego podejścia. Coraz częściej będziemy napotykać „halucynacje”, np. próby wywołania nieistniejących serwisów i bibliotek. Ogólna architektura rozwiązania też pozostawi wiele do życzenia, jeśli nie nadzoruje jej deweloper. Vibe coding może działać, ale pod warunkiem, że znamy dany język programowania, dobre praktyki budowania aplikacji i od czasu do czasu interweniujemy, kierując pracę na właściwe tory.
E: No więc zgadzasz się, że GenAI jest pomocne i przyspiesza tworzenie oprogramowania?
S: Oczywiście. Natomiast hiperoptymistyczny ton wokół zastosowań LLM-ów to dla mnie wielka przesada. Obiecujemy przyszłość „programowania bez programistów”, która według mnie nie jest realistyczna. To tak jakbyś zapewniał kogoś, że taksówka zabierze go pod wybrany adres (i w związku z tym nie musi znać miasta ani mieć prawa jazdy), jednak w połowie drogi kierowca zaczął się gubić i pytać o wskazówki, a pod koniec stwierdził, że jednak bezpieczniej będzie, jeśli pasażer sam pokieruje pojazdem.