Jak z pomocą AI stworzyłem program w technologii, której nie znam dla firmy, którą znają wszyscy.

2024-10-31

Czy można stworzyć aplikację w jakimś języku programowania niemal kompletnie go nie znając?

Dziś już tak. I co raz mocniej zgadzam się ze stwierdzeniem:

„Językiem programowania przyszłości jest… angielski”

W zasadzie to bym jeszcze doprecyzował to stwierdzenie:

Językiem programowania przyszłości jest każdy naturalny język + odpowiedni sposób myślenia.

To dość ciekawe zważywszy na to, że mniej więcej w latach 2020-2024, jak grzyby po deszczu, wyrastały szkoły „bycia programistą”. Jedna po drugiej prześcigały się w obietnicach gigantycznych zarobków.

Ja programowania nauczyłem się „przy okazji” startu pierwszego biznesu w 2000 roku. Cała nauka polegała na ściągnięciu i przerobieniu kursu.

Kursu video? Absolutnie nie.

Pamiętam, że ściągałem go przez modem o zawrotnej prędkości 0,05Mbps (dla porównania dziś mam 400Mps). Zamiast video był tekst jak w książce i szczerze mówiąc do dziś taka forma jest dla mnie bardziej przystępna. Czy tylko ja tak mam?

Ile mnie to kosztowało?

0 zł + parę godzin.

Czy dziś byłoby równie łatwo?

I tak i nie.

Nie ponieważ dziś programista (jeszcze) musi znać całą masę technologii, aby zacząć.

Gdy po kilku latach wróciłem na chwilę z biznesu do programowania to zderzyłem się ze ścianą.

Mimo wszystko podłączanie znajomości z tym na górze, doświadczenia i nabytych w biznesie skilli sprzedażowych pozwoliło mi zdobyć kilku klientów.

Nieco ponad rok później pojawia się Chat GPT.

Początkowo jego zdolności programistyczne były mocno przereklamowane, ale wraz z kolejnymi wersjami radzi sobie coraz lepiej.

Zaraz po wydaniu wersji 4o zdobywam nowe zlecenie.

Mając już trochę doświadczenia z wspieraniem się różnymi modelami językowymi (LLM) podejmuję dość ryzykowną decyzję stworzenia aplikacji w technologii która jest dużo szybsza, nowocześniejsza, ale… kompletnie mi nie znana poza może 3 lekcjami z kursu.

Jak zatem wyglądało tworzenie aplikacji w technologii, której kompletnie nie znałem?

Najpierw z pomocą chata stworzyłem strukturę bazy danych – a po ludzku – miejsca gdzie będą przechowywane wszystkie informacje.

Po doszlifowaniu opisu struktury poprosiłem chata, aby stworzył mi cały kod do jej obsługi.

W końcu przyszła pora na frontend czyli to co w aplikacjach odpowiada za wygląd.

Tutaj jako technologię wybrałem React, którego nie znałem połączony z bootstrapem, który znałem dobrze.

Poprosiłem, aby z mając na uwadze specyfikę Reacta, zaprojektował mi ogólną strukturę wszystkich części (modułów) aplikacji.

Jeśli zrobiło się zbyt technicznie i nie rozumiesz tych nazw to się nie przejmuj – przyjmij, że to po prostu nazwy języków.

Po paru dyskusjach z chatem doszliśmy do finalnej wersji tego jak to ma działać.

Następnie moduł z modułem opisywałem sposób działania i prosiłem o wygenerowanie kodu aplikacji.

Oczywiście nie obyło się bez pomyłek więc proste rzeczy samemu przerabiałem, a te trudniejsze zlecałem chatowi.

Dzisiaj znam już dużo lepsze narzędzia, które automatyzują cały proces. Spróbujmy jednak udowodnić, że czystym chatem też się da.

Oczywiście cały czas testowałem czy aplikacja działa i w razie problemów przyklejałem komunikaty błędów lub dawałem własne uwagi jeśli kolejne funkcjonalności nie wyglądały tak jakbym chciał.

Cała praca przypominała trochę współpracę z mocnym juniorem – tzw. „klawiszokolepaczem”.

Z tą, że różnicą, że ten „klawiszoklepacz” ma wiedzę (nie koniecznie umiejętności) znacznie przewyższającą moją. W związku z tym nieco wstydliwym faktem czasem role się zamieniały i to on stawał się moim doradcą.

Można zatem powiedzieć, że czasem sztuczna inteligencja jest pracownikiem najniższego stopnia, innym razem doradcą, strategiem, specjalistą z gigantyczną wiedzą.

Jak wygląda czas i koszty?

Gdybym miał się uczyć technologii przy okazji tego projektu to z pewnością całość zajęła by z 10 razy dłużej.

Znając technologię szacuję, że przyśpieszyliśmy napisanie aplikacji około 2-3 krotnie.

Ponieważ czas to konkretna kwota to koszty również spadły do 30-50%.

A co z prawami autorskimi?

Tutaj sprawa wciąż jest dynamiczna. Niestety zauważyłem, że za temat często biorą się osoby, które z pewnością znają się na prawie, ale działają na fałszywych założeniach co do technologii.

W technologiach w których dotychczas pisałem programy (chociażby PHP/Symfony) od zawsze istniało

takie coś jak generator kod. I to na długo przed wypłynięciem do mainstreamu LLMów.

Co robiły owe generatory? Pisały za programistę nudne, oczywiste części można było sobie wygenerować z automatu na podstawie jakiegoś przyjętego wcześniej schematu i danych.

Nie przypominam sobie, aby ktokolwiek wtedy podważał autorstwa tak stworzonego kodu.

Podobnie w grafice komputerowej od dawna istniały bardzo zaawansowane efekty, narzędzia, które wykonywały sporo pracy za grafika Spora część takich efektów właściwie była nie do uzyskania ręcznie.

To jednak wciąż tylko narzędzia.

Bez mojego uruchomienia, pokierowania, napisania instrukcji, czuwania nad architektoniczną i funkcjonalną całością…

NIC BY NIE POWSTAŁO.

Model językowy to bardziej zaawansowany translator z języka naturalnego na język programowania.

Owszem stosuje pewny inteligentne rozwiązania, dobre praktyki itp., ale to wciąż tylko narzędzie.

Jedną z powszechnie powtarzanych bzdur jest również to, że chat pisze nijako kopiując to czego się nauczył.

Dokładnie taki sam zarzut można postawić programiście. Również przeczytałem tysiące linii kodu

napisanego przez innych. Również stosuję praktyki, które tam podejrzałem. Również w jakiś podświadomy sposób mogę się na nich wzorować.

Robi się jednak z tego osobny artykuł więc na tym zakończę i oczywiście i w tym temacie jestem ciekawy Twojego zdania.

Jaki jest finał mojej przygody z tworzeniem aplikacji w języku którego nie znam?

Działa, została wdrożona, zaoszczędziliśmy sporo godzin i dostarczyliśmy dużo wcześniej niż gdybym miał pisać ją ręcznie.

Nie wiem jeszcze jak wyglądałaby praca nad dużo bardziej zaawansowaną aplikacją, ale przyznam, że taki sposób pisania znacznie ułatwia proces prototypownia. Możemy bardzo szybko uzyskać działający prototyp i w prosty sposób wdrażać uwagi klienta właściwie na „pstryknięcie palca”.

Czy coś można by było zrobić lepiej?

Z pewnością. Pisząc ten artykuł przede wszystkim znam dużo lepsze narzędzia niż sam chat.

Pracuję obecnie na kilku modelach w wykorzystując specyficzne możliwości dla każdego z nich.

Sam proces wdrażania zmian jest zautomatyzowany. Powoli również testy wykonują się same. Ale to już temat na kolejny artykuł.
Chcesz go przeczytać?


Leshek

Leshek