piątek, lipca 03, 2026

Zdolny Junior z rozmachem ;-) zwany też jako Claude Code

Nudne będzie bo znów o AI ;-)

Czułem od dawna, że jest problem z AI w postaci Claude Code czy podobnych, ale nie do końca umiałem wskazać palcem gdzie jest problem.
Dziś złapałem Claude Code na dokładnie tym co czułem ;-)

Mamy sobie w produkcie opcję pobrania czegoś, wtedy jest billing robiony. Ale billujemy tylko pierwsze pobranie, kolejne są "za darmo".
Backend o tym wie, ale frontend nie ma sygnału, że to coś już zostało pobrane.

Dałem ten kod Claude Code i najpierw poprosiłem o sprawdzenie czy w ogóle jest ta informacja o pobraniu gdzieś zapisana... jest, bo mamy link do pobranego pliku.
Mamy ten link wpisany w pewnym obiekcie połączonym z projektem.
Ale klientowi wysyłamy coś innego, mniej szczegółowego.

No to mój zamysł był taki, jak mamy te informacje i mamy wszystkie klucze potrzebne do ich przeczytania to gdy UI prosi Backend o info o projekcie i scenach (są w projektach) to co mi szkodzi dodawać w locie wasAlreadyBilled do scen, które zostały już pobrane.

Zrobił, ale zmienił jeszcze dodatkową lambdę... pytam czemu. Odpowiada, że bez tego nie może dodać tej informacji do tego obiektu bardziej ogólnego...

Użyłem mojego przerywacza "stop and think" i pytam czemu to zrobił, przecież ja mam masę danych, które nie są tak zaktualizowane i przecież nie będę ich konwertował, że ja chcę on-the-fly merge'a...
Uznał, że może to i ma sens i zmienił kod w tym kierunku... napisał mniej tego kodu, a do tego dane wyeliminował konieczność transformacji danych.

Miał dotykać lambdy dającej informacje o projekcie (i nie, nie będziemy tu dyskutować jak szalonym pomysłem jest używanie lambd do takich rzeczy....), ale zmienił inną która zapisywała w oryginalnym obiekcie link do tego co można pobrać... Porobił też jakieś zmiany w tej projektowej... wszystko bez chwili zastanowienia. Idąc takim flow: jak w opisie sceny jest link, to znaczy, że ktoś pobrał, dzieje się to w lambdzie B, lambda A wysyła do UI liste projektów i scen, user chce mieć w wyniku lambdy A info o billowaniu nazwane wasAlreadyBilled... i uznał, że skoro już w B robi update obiektu szczegółowego i tego ogólnego (używanego przez A) to on sobie zrobi update tego obiektu ogólnego....
I to ma sens, ale generuje problem "a co z już istniejącymi danymi?". Nie sprobowałem, ale nie zdziwiłbym się gdyby po pytaniu bez stop and think i pisania o merge'u i że nie chcę konwersji, to czy sam by mi nie zaproponował kodu do konwersji, a że nie ma ogólnego mechanizmu to by dopisał kolejne 500 linii kodu z konwerterem....

Zrobił to jak junior. Junior robi piękny projekt, uznaje że tu się doda pole, dopisze kod do aktualizacji tego pola... tylko nie pomyśli, że coś co powinno być lekkie, zmienił właśnie w taska numer 1, bo jeszcze musi być task numer 2 do konwersji danych.

To jest to, że junior gdy patrzy na kod widzi tu i teraz i wie jak ma być ostatecznie, ale nie myśli o tym jak stan faktyczny teraz, który jest poza kodem, w danych czy przyzwyczajeniach usera zmienić w to jak ma być.

Tak robią juniorzy (fakt, nadal spotykam seniorów którzy też na to tak patrzą...)

Claude Code to taki junior, ale fakt junior z wyobraźnią i rozmachem ;-)


Podobne postybeta
Różnica między Seniorem i Juniorem ;-)
Jak używamy Java'y ;-)
Pierwszy dzień w przyszłości, czyli programista jako dyspozytor Agentów
Zauroczył mnie Cladue Code ;-)
O tym czemu branche są złe...

Brak komentarzy:

Prześlij komentarz