
Źródło zdjęcia: maiobarbero.dev
Programista Maio Barbero opisuje w swoim artykule problem, z którym zmaga się wielu deweloperów korzystających z asystentów AI: jak zachować szybkość rozwoju oprogramowania przy jednoczesnym utrzymaniu przejrzystości i zrozumienia kodu.
Barbero zauważa, że typowy workflow z AI — otworzenie chatu, opisanie potrzeby, iterowanie nad wynikami — może dawać pozorne wrażenie szybkości. Funkcje działają technicznie, ale nikt, włączając autora, nie rozumie w pełni powstałego kodu. Pojawiają się nietestowane przypadki brzegowe, architektura sensowna w momencie tworzenia, która jednak nie przetrwa kolejnych modyfikacji.
Kluczową obserwacją Barbero jest rozróżnienie mocnych i słabych stron sztucznej inteligencji. AI doskonale radzi sobie z implementacją, ale ma znaczące ograniczenia w innych obszarach. Nie potrafi określić, czego rzeczywiście chcemy, wychwycić nieujawnionych założeń ani ostrzec, gdy nasze mentalne modele problemów są błędne.
"To jest twoja praca. I zawsze będzie twoją pracą" — podkreśla autor, odnosząc się do konieczności właściwego zdefiniowania problemu przed przystąpieniem do kodowania.
Barbero przedstawia szczegółowy proces, który adaptował z umiejętności Marka Pocorka. Workflow składa się z pięciu etapów:
Wszystko zaczyna się od dokumentu pisanego zwykłym językiem, bez określonej struktury. Autor opisuje problem, swoje wstępne myśli o rozwiązaniu, znane ograniczenia i obszary niepewności. Dokument nie jest przeznaczony dla nikogo innego — jego jedynym celem jest przełożenie myśli z głowy na papier w formie, którą można przeanalizować.
Plan staje się wkładem do strukturyzowanego procesu wywiadu. System eksploruje bazę kodu, aby zrozumieć obecny stan, następnie przeprowadza szczegółowy wywiad na temat każdego aspektu planu, przechodząc przez każdą gałąź drzewa projektowego i rozwiązując zależności między decyzjami.
W tym etapie ujawniają się słabe punkty planowania. Nie dlatego, że AI jest mądrzejsze, ale ponieważ konieczność odpowiadania na konkretne pytania o własny plan pokazuje miejsca, gdzie używaliśmy ogólników.
PRD przekształca się w zestaw zadań wykorzystujących pionowe przekroje — "pociski smugowe" przecinające wszystkie warstwy integracji od końca do końca. Każde zadanie klasyfikowane jest jako AFK (AI może zaimplementować i zmiana może zostać włączona bez ludzkiej interakcji) lub HITL (wymagana jest ludzka decyzja w trakcie implementacji).
Każde issue dzielone jest na konkretne, uporządkowane zadania — jedno zadanie na jedną sesję AI. To ograniczenie jest celowe: jeśli zadanie nie może być ukończone w pojedynczej sesji, jest zbyt duże.
Każdy opis zadania stanowi samodzielny prompt. Gdy deweloper jest gotowy do implementacji, otwiera świeżą sesję i wkleja opis zadania wraz z kontekstem nadrzędnego issue. Świeży kontekst na zadanie jest celowy — pozwala uniknąć problemów związanych z długimi sesjami.
Workflow opiera się na kilku fundamentalnych zasadach. Wszystko musi być jawne — żadnych domniemań czy ogólników. User stories stanowią kręgosłup całego procesu i muszą być na tyle konkretne, aby można było z nich jednoznacznie wyprowadzić kryteria akceptacji.
Proces jest całkowicie plikowy, co oznacza niezależność od konkretnych platform czy narzędzi. Barbero pracuje zarówno z GitHubem, jak i GitLabem, a oparcie workflow na plikach zapewnia jego uniwersalność.
Autor podkreśla, że najważniejszym elementem tego podejścia jest traktowanie każdej funkcji jako problemu myślowego w pierwszej kolejności, a implementacyjnego w drugiej. Workflow został zaprojektowany tak, aby wymusić myślenie przed napisaniem jakiegokolwiek kodu i wykorzystać AI do testowania tego myślenia, a nie do jego pomijania.
Barbero zauważa, że jakość wszystkich kolejnych etapów zależy całkowicie od jakości początkowego planowania. Niejasny plan prowadzi do niejasnego PRD, które z kolei generuje niejasne zadania i kod, który wprawdzie działa, ale nie robi tego, co zamierzaliśmy.