#63 – Vibe coding - Hit czy kit?
W tym odcinku omawiam nowy trend ostatnich miesięcy, czyli vibe coding, a także wskazuję kiedy warto z niego skorzystać.
Transkrypcja odcinka
Cześć, nazywam się Krzysztof Rychlicki-Kicior i witam cię serdecznie w podcaście „Software z każdej strony”, w którym dowiesz się, jak łączą się ze sobą świat biznesu i IT.
To jest odcinek sześćdziesiąty trzeci - Vibe Coding. Hit czy kit? Witam wszystkich ponownie po przerwie natomiast, jak mam nadzieję, mieliście okazję zaprezentować, śłyszeć, może bardziej czytać, chociaż ta promocja nam wyszła, myślę, całkiem nie najgorzej jak na pierwszy raz. Sporo uwagi na początku tego roku poświęciliśmy zorganizowaniu webinaru.
Przyznam szczerze, że to jest całkiem spore wyzwanie organizacyjne, nawet bardziej niż merytoryczne, bo webinar najpierw trzeba było ogarnąć od strony takiej technicznej, gdzie skorzystaliśmy z platformy GetResponse. Były też kwestie jakby formalne, regulaminy, procedury, no a potem jeszcze trzeba było się merytorycznie przygotować.
Trochę czasu na to zeszło, natomiast myślę, że efekt końcowy jest bardzo fajny. Udostępnię link do nagrania żeby każdy mógł się zapisać i sobie posłuchać w dowolnym momencie, natomiast biorąc pod uwagę bardzo pozytywny odzew, myślę, że będą kolejne edycje webinaru. W sumie nie wspomniałem na jaki był temat, nam chodziło o zasady wdrażania AI czy w chmurze, czy na przykład we własnej infrastrukturze.
Natomiast nie da się ukryć, że ta przerwa w nagrywaniu odcinków wyszła o tyle nie najgorzej, że przez te parę miesięcy, nie takie duże parę miesięcy, dużo nowych inspiracji się nazbierało, więc teraz myślę, jak to u mnie, trochę... Spokojniejszy powiedzmy czas, przynajmniej pod kątem zaangażowania na uczelni, bo semestr się kończy, zajęcia się kończą, będzie trochę czasu, żeby częściej nagrywać. Natomiast dzisiaj chciałem się zająć tematem, który to właśnie wypłynął tak naprawdę teraz w 2025 roku, na Wikipedii znalazłem informację, że właśnie to pojęcie po raz pierwszy zostało użyte w lutym 2025 roku, bieżącego, więc jest bardzo świeże, a bardzo zyskuje na popularności, no mianowicie chodzi o tytułowy vibe coding i chciałbym dzisiaj pochylić się nad tym.
Miałem puścić post na Linkedinie i może w ramach promocji tego odcinka to zrobię, natomiast spotykam się z oczywiście dwiema odrębnymi postawami i jak to u mnie bywa, no te dwie postawy to tylko dodam, że no oczywiście jedna bardzo pozytywna, druga... Bardziej negatywna. Jak to u mnie bywa, rzadko opowiadam się bardzo mocno po jednej ze stron.
"To zależy" to bardzo taka widoczna u mnie cecha. Postaram się krótko przejść przez pewne argumenty przemawiające za vibe codingiem, ale też i przeciw, czyli tak naprawdę nie tyle stawiam się w sytuacji w której to jest złe czy dobre, a raczej kiedy jest dobre. No ale zacznijmy może od definicji bo jednak nie każdy musi żyć w mojej banieczce.
Jest to jednak wciąż nowy termin, więc dla porządku... Vibe coding to nic innego jak tworzenie no głównie oprogramowania, czy elementów oprogramowania przez opisywanie ich w języku naturalnym, czyli po polsku, po angielsku, bez co do zasady specjalistycznej wiedzy czy terminologii technicznej, chociaż tu też można oczywiście się spierać, po to, żeby na podstawie takiego opisu w języku naturalnym otrzymać działający produkt, czy jakąś funkcję, jakiś mechanizm, otrzymać kod oprogramowania, który pozwoli na uzyskanie takiego działającego efektu.
I oczywiście tym narzędziem które ma umożliwić taki vibe coding jest AI, jest generatywna sztuczna inteligencja, są modele, wielkie modele językowe. I teraz... Tutaj jest to oczywiście taka definicja można powiedzieć, mało encyklopedyczna. Można się spierać czy typowy vibe coding to samo formułowanie problemu w języku naturalnym czy mogą pojawiać jakieś elementy techniczne.
Natomiast założenie jest takie, jest to w pewnym sensie spełnienie pewnego rodzaju marzeń. Ja jeszcze pamiętam jak sam uczyłem się programować na ogólnie podstaw informatyki i było stwierdzenie, że w sumie w idealnym świecie nie musielibyśmy w ogóle znać języka programowania, tylko byśmy określali problem, jaki jest do rozwiązania, a komputer sam wybierałby metodę jego rozwiązania. I teraz oczywiście obecna sytuacja jest taka, że z jednej strony mamy ludzi, którzy poszli w to, którzy promują to podejście, którzy starają się w ten sposób zarabiać na życie i mamy oczywiście też grupę osób, które są przeciwko.
Do pierwszej grupy można by tutaj też zaliczyć dwie podgrupy. Jak wiecie ja lubię systematykę. Natomiast tak faktycznie jak to wygląda, patrząc po osobach które się wypowiadają, miałem trochę dowód anagdytyczny, ale jednak... Z jednej strony mamy osoby techniczne, które po prostu traktują ten vibe coding jako pewien trend, do którego warto się podłączyć, natomiast są to osoby, które wcześniej programowały, tworzyły oprogramowanie.
Z drugiej strony mamy osoby nietechniczne, które po prostu zyskały możliwość faktycznie stworzenia czegoś, co działa, natomiast nie jest to techniczne. Nie jest to też taki wytwór który oni są w stanie takie osoby nietechniczne dobrze zweryfikować, więc rodzi to pewne ryzyka, rodzi to pewne niebezpieczeństwa.
Wśród przeciwników raczej dominują już istniejący programiści, programistki, ogólnie specjaliści od oprogramowania, inżynierowie oprogramowania, którzy wytykają z reguły słusznie rozmaite problemy, rozmaite braki, wynikające ryzyka też przede wszystkim wynikające z niewłaściwego stosowania możliwości vibe-codingu.
Także powiem tak, tak jak już zespoilowałem wcześniej, że jest to pewna technika, która ma swoje przede wszystkim zastosowania, natomiast zanim przejdę do tego meritum, chciałbym tutaj właśnie zaadresować jedną rzecz, na którą nigdy się nie zebrałem w poście na LinkedInie, ale może łatwiej będzie mi to powiedzieć, czyli pewne nieporozumienie w zakresie tego, że sztuka programowania rozwijała się przez lata, której mam wrażenie osoby spoza świadka technicznego programowania nie wiedziały i która teraz jest niby takim objawieniem, a tak naprawdę moim zdaniem wcale nie jest to wielka rewolucja. Dobra, przejdźmy do rzeczy, bo próbuję coś wprowadzić i mówię cały czas naokoło.
Chodzi przede wszystkim o to, że osoby nietechniczne mają takie przeświadczenie, że wcześniej to programowanie to była taka totalna czarna magia jak posługiwanie się hieroglifami. Kompletnie jakaś taka starożytna technika, do której trzeba było się bardzo długo uczyć i potem można było w niej za jej pomocą pracować.
Prawda jest taka, że programowanie... Owszem w tych latach powiedzmy 50, 60, no powiedzmy bardziej 70 może, programowanie jakichś wielkich komputerów które zajmowały całe pomieszczenia. Faktycznie pisanie tak zwanym kodem maszynowym było czymś co... No nie jest przyjemne w odbiorze. Tak się składa że mój tata, chociaż nie jest programistą, nie był, nie pracował, to kończąc studia na Wydziale Elektrycznym naszej Łódzkiej Politechniki pisał właśnie taki program na taką maszynę i pamiętam że jak ja już programowałem jako tam młody chłopak, zajrzałem w ten kod, który był treścią jego pracy, był zawarty w jego pracy magisterskiej i mało co byłem w stanie też zrozumieć. Od tego wyszliśmy i z biegiem lat coraz bardziej wysokopoziomowo mogliśmy programować, aby rozwiązywać problemy. Instrukcje, kod programu, stał się coraz mniej taki właśnie techniczny maszynowy, a coraz bardziej przypominał to w jaki sposób my komunikujemy się za pomocą języka naturalnego.
Co więcej, ostatnie dajmy na to 20 lat, ja pamiętam jeszcze czasy sprzed tej zmiany, natomiast ostatnie 15-20 lat, myślę, można tak powiedzieć, to rozwój przede wszystkim bardzo wielu źródeł w internecie. To rozwój wielu mechanizmów, wielu komponentów, z których można korzystać tworząc oprogramowanie, więc również i wiedza taka na temat pewnych tajników komunikacji sieciowej, chociażby algorytmiki, nie jest, nie była w ostatnich latach taka kluczowa, bo żeby na przykład w pisanym programie umieć na przykład posortować liczby albo imiona i nazwiska, albo na przykład rozwiązać problem wyszukiwania ścieżki w grafie, czyli mówiąc po ludzku, jak zrobić wyszukiwanie tras, takie jak w Google Maps, prawda, w nawigacji. Kiedyś trzeba było to wszystko umieć zaimplementować ręcznie, a teraz są do tego gotowe narzędzia. Też trzeba z nich w pewien sposób umieć z nich skorzystać. Natomiast to nie jest tak że teraz... Ci wszyscy programiści i programistki musieli to wszystko tak naprawdę umieć od zera. To była raczej umiejętność łączenia różnych, czasem trochę skomplikowanych i oddalnych od siebie, ale jednak gotowych kropek.
I teraz dochodzimy do momentu w którym wchodzą wielkie modele językowe. I te wielkie modele językowe, bazując na tych gotowych komponentach, bazując na tym, że w internecie jest masa wiedzy na temat rozwiązywania pewnych problemów w zakresie tworzenia oprogramowania, są serwisy takie jak Stack Overflow, gdzie programiści wymieniają się wiedzą i rozwiązaniem konkretnych problemów w stylu no właśnie, jak w języku Python, no chociażby właśnie znaleźć najkrótsze połączenie między dwoma punktami czyli przy implementowaniu nawigacji. Ktoś bardzo możliwe że pokaże rozwiązanie. Owszem, laik nie byłby w stanie skorzystać z takiej wskazówki żeby napisać cały program, ale ktoś kto zna podstawy jest w stanie skorzystać z takiego źródła, ma już ogromny krok do przodu. I teraz wielkie modele językowe tak naprawdę czerpią z tego, one w pewnym sensie upraszczają ten proces, upraszczają przede wszystkim łączenie wiedzy z różnych źródeł, ale to nie jest tak, że tej wiedzy wcześniej nie było.
Bo pamiętajmy że wielkie modele językowe nie tworzą rzeczy z niczego, one korzystają ze źródeł, które już są, są w stanie je adaptować do pewnych sytuacji to prawda, natomiast to nie jest taka prawdziwa inteligencja. Także kiedy ktoś mówi, że teraz nagle wielkie modele językowe zaczęły generować kod, który wcześniej trzeba było bardzo, jak to się mówi, rzeźbić, tworzyć w bardzo wyrafinowany skomplikowany sposób od zera, no to tak po prostu nie było.
Ja myślę, że tutaj kluczowym problemem czy kwestią jest to, że osoba która nie miała technicznej wiedzy nie była w stanie pokonać tej bariery wejścia jeszcze 2-3 lata temu, trzeba było mieć pewną wiedzę na temat programowania. A teraz faktycznie, co do zasady, da się pewne, no właśnie pewne, ale nie wszystkie problemy, obejść de facto nie mając jakiejś tam istotnej wiedzy technicznej czy na temat programowania.
No dobrze, po takim wstępie, może trochę przydługim, zastanówmy się więc, gdzie ten vibe coding faktycznie może się nadawać. Przede wszystkim wszędzie tam, gdzie chcemy mieć wyniki szybko. Niekoniecznie w pełni poprawnie, niekoniecznie w pełni bezpiecznie, ale szybko chcemy uzyskać potwierdzenie pewnych propozycji, pomysłów, idei, hipotez.
Także jeżeli mamy sytuację w której na przykład mamy jakiś startup albo nawet nie tyle pełny startup, co po prostu chcemy zrobić jakąś taką szybką rundkę zebrania informacji zwrotnej od potencjalnych użytkowników, o może w ten sposób, wpadł nam pomysł biznesowy i chcemy go zweryfikować, to faktycznie zdecydowanie prościej jest vibe-kodować jakąś aplikację, stworzyć ją na przestrzeni nawet paru godzin, sprawdzić zweryfikować jak ona działa, no i potem zastanowić się co dalej. To jest niezwykle istotne, bo oczywiście przy rozwijaniu startupów uzyskanie nawet prostego proof of concept tradycyjnymi metodami, no to jest czas i koszt no większy, większy parędziesiąt, sto paredziesiąt godzin.
Wiele rzeczy można zrobić, jak to się mówi, na sznurek, natomiast nie ukrywajmy, że jeżeli byśmy chcieli rozwijać jakieś tam nawet najbardziej podstawowe rozwiązania, z których mogliby skorzystać użytkownicy od podstaw, no to niestety to po prostu zajęłoby normalnie więcej czasu. Tutaj oczywiście wiele zależy, nie każdy pomysł biznesowy da się aż tak szybko vibe-kodować, im bardziej są to takie standardowe funkcje na zasadzie jakiegoś przetwarzania powiązanych ze sobą danych z bazy danych, jakieś takie podstawowe standardowe funkcje, nie wiem, czy płatności, czy właśnie zarządzania użytkownikami, coś co po prostu, krótko mówiąc funkcjonuje w takim obiegu, z takimi funkcjami spotykamy się na co dzień w różnych aplikacjach, tym większa pewność, że to będzie dobrze wygenerowane, bo po prostu modele językowe mają szansę znać ten koncept.
Jeżeli będziemy próbowali zrobić startup z bardzo nietypowym procesem biznesowym, na przykład opartym o jakieś obliczenia techniczne czy naukowe, no to tutaj oczywiście szansa, że to będzie dobrze zaimplementowane, dobrze wdrożone, nawet na etapie proof of concept są bardzo niewielkie. I tak naprawdę... To właśnie jest moim zdaniem kluczowe zastosowanie do Vibe Codingu.
Natomiast podstawowy problem jest taki, że oczywiście im dalej w las, tym po pierwsze trudniej jest dorabiać kolejne funkcje do istniejącej podstawy. Są kwestie bezpieczeństwa o które trzeba zadbać, są kwestie wydajności, o które trzeba zadbać. I tutaj po prostu nie jest to takie oczywiste, że to, co zaproponuje model językowy, będzie optymalne.
Można się spotkać z sytuacjami też, w których generowany kod nawet nie tyle jest złej jakości, co jest go bardzo dużo. To znaczy czasem rozwiązania prostych problemów, jakaś jedna, dwie funkcje w aplikacji zajmują tysiące linii kodu. Co oczywiście samo w sobie może wam niewiele mówić, natomiast to jest bardzo dużo. Parę tysięcy linii kodu to czasami nawet niejeden projekt komercyjny nasz miał pełny. Mówimy oczywiście o tym kodzie, który sami tworzymy. Natomiast do jednego widoku, jednego ekranu, no brzmi to bardzo bardzo źle. Także na przykład rozwój długotrwały oprogramowania, które byłoby vibe-kodowane, no niestety jest to rzecz, z którą nie chciałbym się mierzyć.
Oczywiście jest tu też kwestia weryfikacji poprawności działania. Oczywiście ten problem występuje też przy programowaniu tradycyjnym, natomiast możemy pisać testy, jakby każdy powinien pisać jakieś testy, weryfikować też to, co jest tworzone i powinniśmy mieć odpowiedni stopień tak zwanego pokrycia kodu, czyli jaka część aplikacji jest weryfikowana automatycznie, jaka część jest weryfikowana ręcznie.
W przypadku takiego Vibe Codingu możemy mieć błędy wszędzie. To też jest ważne, że to nie jest kwestia tylko sprawdzenia czy na przykład no nie wiem, weryfikujemy czy hasła wprowadzone w formularzu rejestracji są identyczne. Natomiast pamiętajmy, że każdy najprostszy fragment kodu może mieć w sobie błąd. Taki błąd, którego nawet młody programista by nie popełnił. I to jest spory problem. Są oczywiście narzędzia, które mogą automatycznie nam weryfikować, czy takie błędy nie występują, ale tutaj może nawet nie chodzi o to, czy gdzieś jest właściwie postawiony przecinek czy średnik, natomiast są takie aspekty funkcjonalne, czy aplikacja robi to, co chcemy i też pytanie czy nie robi na przykład czegoś więcej.
W programowaniu klasycznym naturalnie spotykamy się z błędami, które popełniamy, ale rzadko zdarza się sytuacja, że robimy za dużo. Tutaj musimy zweryfikować czy naprodukowany, wygenerowany kod, te tysiące linii zawierają to, co chcemy. Oczywiście też jest to, co jest generowane przez Vibe Coding, przez to można powiedzieć że generuje ogromny dług technologiczny.
Mówimy oczywiście o tym stanie, który jest teraz, bo kto wie, co będzie za rok, za dwa, natomiast póki co trudno sobie wyobrazić taki projekt, w którym vibe-kodowanie będzie miało miejsce przez dłuższy czas. Czyli tak, podsumowując powoli, chcemy zrobić prototyp szybciutko żeby sprawdzić odbiór, super. Chcemy zrobić MVP startupu, projektu, natomiast chcemy wyjść z tym już publicznie, no, cytując klasyka "no tak średnio bym powiedział", trzeba by to na pewno porządnie przeaudytować i powinien się tym zająć ktoś z doświadczeniem, ale powiedzmy że jest możliwe.
Natomiast utrzymywanie projektu przez dłuższy czas, no nie, nie podpisałbym się. Oczywiście można tutaj się upierać na przykład będziemy vibe-kodować i ktoś będzie to weryfikował, poprawiał, tylko pytanie brzmi czy my naprawdę wtedy tak dużo uzyskamy, bo ten czas poświęcony na weryfikację, na kontrolę, wcale może nie być dużo mniejszy, niż jakbyśmy tworzyli oprogramowanie od zera.
Przy czym oczywiście jednocześnie też zwróćmy uwagę, bo w tej dyskusji troszeczkę stawia się takie podejścia mocno alternatywne, czyli wszystko programujemy sami albo wszystko vibe-kodujemy. To też jest głupie, mówiąc zupełnie wprost, bo na przykład nie widzę problemu aby na przykład generować sobie pewne zalążki, pewne podstawy do realizacji jakiejś funkcji.
Czyli na przykład ja proszę taki model językowy, aby wygenerował mi podstawowy widok z interfejsem zawierający jakieś właśnie kontrolki do formularza rejestracji, on mi to wygeneruje, ja sobie po prostu będę w tym, jak to się właśnie mówi, rzeźbił, będę cyzelował tę funkcję. Przeczytam cały kod, przy okazji zweryfikuję, czy jest w porządku, ale nie będę musiał też tego kodu faktycznie wyklepywać samodzielnie.
To jest opcja, co do której ja też się przychylam i zdarzyło mi się już korzystać z niej w takim fajnym małym projekciku, gdzie okazało się, że w jednej z wersji technologii wprowadzono znowu nowe rozwiązania związane z tworzeniem interfejsu użytkownika, to był Android. Ja byłem przyzwyczajony do starszego standardu, pojawił się nowy i już byłem mocno poirytowany, że będę musiał teraz grzebać w dokumentacji, a przypomniałem sobie, że przecież jest AI. No i poprosiłem go o wygenerowanie jakiegoś podstawowego formularza zgodnie z nowymi wytycznymi, poszło fajnie. Oczywiście musiałem sobie tam dopoprawiać, żeby faktycznie było tak, jak ja chciałem i właśnie, mi było szybciej poprawić to już w kodzie, niż wymyślać prompty, żeby mi to poprawił model. I myślę, że takie podejście w którym po prostu wybieramy w danej chwili krok, ścieżkę, która jest optymalna, a nie trzymamy się kurczowo jednego narzędzia, to jest to, to jest ten kierunek, w którym będziemy podążać.
Na dziś to już wszystko, mam nadzieję, że teraz już uda się wrócić do częstszych publikacji tak jak wspominałem, nie obiecuję, że to będzie co dwa tygodnie raczej celuję w jeden odcinek w miesiącu i troszkę tak jak mówiłem aktywizować się chciałbym w mediach społecznościowych, natomiast postaram się już wrócić do takiej większej regularności. Tak że na pewno, jak widać materiał jest.
W zasadzie AI gwarantuje stały dopływ tematów, chociaż ja też nie chcę skupiać się tylko na tym zagadnieniu. No dobrze, to w takim razie na dziś to już wszystko. Dziękuję bardzo za uwagę, kłaniam się nisko i do usłyszenia.
Link do zapisu webinaru "AI w chmurze, czy własnej infrastrukturze?":
https://webinar.getresponse.com/IChuK/webinar-AI-w-chmurze-czy-we-wlasnej-infrastrukturze