Agenty kodujące stają się jednym z najważniejszych narzędzi w pracy programistów. Potrafią analizować kod, tworzyć nowe funkcjonalności i znacząco przyspieszać development. Jak wygląda współpraca z nimi w praktyce i jak zmienia ona rolę developera?
Programowanie agentowe zaczyna przejmować kontrolę nad tym, w jaki sposób tworzone jest oprogramowanie. Liczba rozwiązań oferujących agentów kodujących stale rośnie, można wymienić chociażby te najbardziej znane, pochodzące od największych graczy na rynku:
Coraz więcej firm decyduje się udostępniać swoim pracownikom narzędzia AI. Wraz z ich rosnącą popularnością pojawia się jednak wiele pytań i wątpliwości:
Mamy za sobą pierwsze, drugie, a nawet trzecie wrażenia po paru miesiącach aktywnej pracy z Claude Code. Dzięki temu możemy zaprezentować, jak odpowiedzi na te pytania wyglądają z naszej perspektywy.
Agent kodujący to program uruchamiany w systemie operacyjnym. Możemy korzystać zarówno z aplikacji okienkowych, takich jak Antigravity czy Claude Desktop, jak i z rozwiązań opartych na interfejsie terminalowym.Pierwszym krokiem jest wskazanie źródeł kodu, na których agent będzie pracował. W przypadku narzędzi terminalowych przestrzenią roboczą domyślnie staje się katalog, z którego uruchomiliśmy program. W aplikacjach z interfejsem graficznym zazwyczaj wybieramy odpowiedni katalog za pomocą standardowego okna wyboru plików, podobnego do tego, którego używamy podczas otwierania lub załączania dokumentów.
Na tym etapie teoretycznie możemy już rozpocząć pracę. W zależności od wybranego agenta warto jednak najpierw zainicjować przestrzeń roboczą. Przykładowo w Claude Code służy do tego komenda /init. Po jej uruchomieniu agent rozpoczyna analizę plików znajdujących się w katalogu, aby zrozumieć strukturę projektu, wykorzystane technologie oraz sposób organizacji kodu.
/init
Efektem działania tej komendy jest utworzenie pliku CLAUDE.md, w którym agent zapisuje najważniejsze informacje o projekcie – m.in. użyte technologie, analizę architektury, strukturę katalogów oraz inne elementy, które mogą okazać się pomocne podczas dalszej pracy. Warto przejrzeć ten plik i zweryfikować, czy opis projektu odpowiada rzeczywistemu stanowi kodu.
CLAUDE.md
Po wykonaniu tych kroków jesteśmy już w pełni gotowi do pracy. Do tej pory skupialiśmy się głównie na uruchomieniu i konfiguracji agenta. Pozostało jednak najważniejsze pytanie: na czym właściwie polega praca z agentem kodującym i jak taki agent działa w praktyce? Współczesne agenty kodujące często wykorzystują architekturę wieloagentową. Oznacza to, że po wysłaniu polecenia nie trafia ono od razu do pojedynczego modelu wykonującego zadanie. Najpierw przejmuje je agent nadzorujący, nazywany orkiestratorem. Jego zadaniem jest analiza polecenia, zaplanowanie sposobu realizacji zadania oraz koordynowanie kolejnych działań.
Dalszy przebieg procesu może znacząco różnić się w zależności od wybranego narzędzia oraz charakteru zadania. W niektórych przypadkach agent będzie musiał przeanalizować strukturę projektu, w innych wyszukać odpowiednie pliki, uruchomić testy lub skonsultować wyniki pracy z dodatkowymi wyspecjalizowanymi agentami. Niezależnie od szczegółów implementacyjnych, ogólny cykl pracy agenta kodującego wygląda zazwyczaj bardzo podobnie:
Agent analizuje nasze polecenie i identyfikuje obszary projektu, których dotyczy zadanie.
Następnie przegląda i analizuje powiązany kod źródłowy. Jeśli odpowiednia funkcjonalność już istnieje, stara się zrozumieć jej działanie. Jeśli nie znajduje fragmentów kodu związanych z zadaniem, rozpoznaje konieczność utworzenia nowego rozwiązania.
Na podstawie zgromadzonych informacji planuje sposób realizacji zadania. Analizuje m.in. jakie zmiany należy wprowadzić, gdzie powinny zostać wykonane, jak wpłyną na pozostałe elementy systemu oraz jakie ryzyka lub problemy mogą się pojawić.
Jeżeli agent dysponuje wystarczającą ilością informacji, przystępuje do modyfikacji kodu. Gdy napotka niejednoznaczności lub konieczność podjęcia decyzji projektowych, zwraca się do użytkownika z dodatkowymi pytaniami. Po ich doprecyzowaniu proces rozpoczyna się ponownie od analizy nowego polecenia.
Oczywiście, technicznie sprawa jest bardziej skomplikowana. Analizę polecenia może wykonać sam orkiestrator, może także w trakcie analizy uznać że potrzebuje subagenta, który zajmie się jakąś częścią problemu. Samo tworzenie kodu może zostać podzielone na wielu agentów, możemy zlecić dodatkową analizę która będzie przeprowadzana w tle w czasie w którym, inny agent wykonuje zadania, co do których nie mamy wątpliwości. Z perspektywy użytkownika dostaliśmy pod swoją kontrolę zespół, któremu możemy zlecać zadania, a naszą rolą staje się reagowanie na ich wyniki, ocenianie i zlecanie kolejnych.
Odpowiedź może być zaskakująca. Zmiana jest ogromna, jeśli spojrzymy na rolę programisty, ale stosunkowo niewielka, gdy analizujemy sam proces wytwarzania oprogramowania.
Aby to zrozumieć, warto najpierw przyjrzeć się temu, jak wygląda tradycyjna realizacja zadań programistycznych. Do dewelopera trafia zgłoszenie w systemie do zarządzania projektami. Zadanie zawiera opis problemu do rozwiązania lub funkcjonalności, którą należy zaimplementować. Jego jakość może się różnić w zależności od organizacji, jednak sam proces pracy pozostaje podobny. Najpierw programista musi zrozumieć wymagania i określić, której części systemu dotyczą. Następnie odnajduje kod odpowiedzialny za daną funkcjonalność lub miejsce, w którym powinien powstać nowy kod. Kolejnym krokiem jest opracowanie rozwiązania – od prostego poprawienia błędu po zaprojektowanie nowej funkcjonalności lub całego komponentu. Dopiero wtedy rozpoczyna się implementacja. Po wprowadzeniu zmian przychodzi czas na testowanie. Jeśli pojawią się problemy, proces rozpoczyna się ponownie – czasami od analizy wymagań, czasami od projektu rozwiązania, a czasami od samej implementacji. W praktyce rozwój oprogramowania jest ciągłym cyklem iteracji prowadzących do osiągnięcia oczekiwanego rezultatu.
Oczywiście jest to uproszczony model. W rzeczywistych projektach poszczególne etapy mogą być realizowane przez wiele osób, przebiegać równolegle lub być wielokrotnie powtarzane. Niezależnie jednak od skali projektu, można wyróżnić pięć podstawowych faz:
Zrozum → Znajdź → Rozwiąż → Napisz → Testuj
Następnie cały cykl powtarza się aż do uzyskania satysfakcjonującego efektu. Nieprzypadkowo fazy te niemal idealnie pokrywają się z działaniem agentów kodujących. Nie dlatego, że agenty próbują naśladować programistów, lecz dlatego, że jest to naturalny sposób rozwiązywania problemów w inżynierii oprogramowania. Właśnie dlatego nowoczesne agenty zostały zaprojektowane tak, aby przechodzić przez bardzo podobny proces analizy, planowania, implementacji i weryfikacji rozwiązania.
Programiści korzystający z agentów kodujących, takich jak Claude Code, przestają być wyłącznie wykonawcami zadań, a stają się osobami zarządzającymi ich realizacją. Zamiast samodzielnie pisać każdą funkcję, klasę czy pętlę, delegują część pracy agentowi i koncentrują się na nadzorowaniu procesu oraz ocenie rezultatów. Odpowiedzialność przesuwa się z poziomu implementacji na poziom decyzji. Kluczowe staje się nie to, czy potrafią napisać konkretny fragment kodu, ale czy potrafią ocenić, czy zaproponowane rozwiązanie rzeczywiście realizuje wymagania biznesowe, jest zgodne z architekturą systemu i nie wprowadza nowych problemów.
Może się wydawać, że jest to prostsze zadanie. Skoro agent potrafi analizować kod i tworzyć implementacje, dlaczego nie pozwolić mu samodzielnie realizować zadań? Praktyka pokazuje jednak, że przynajmniej obecnie takie podejście byłoby ryzykowne. Modele językowe rozwijają się niezwykle szybko i z miesiąca na miesiąc stają się coraz bardziej kompetentne, ale nadal nie są nieomylne. Wymagają nadzoru oraz regularnej weryfikacji podejmowanych decyzji. Dodatkowo nawet bardzo duże okna kontekstowe nie są w stanie zastąpić wiedzy, którą doświadczeni developerzy budują przez miesiące lub lata pracy nad konkretnym produktem.
Rola developera zmienia się więc z wykonawcy w supervisora AI. Oznacza to jednak znacznie więcej niż „wrzucenie promptu i sprawdzenie wyniku”. Narzędzia takie jak Claude Code potrafią dawać bardzo różne rezultaty w zależności od tego, kto i w jaki sposób z nich korzysta. Przykładowo można uruchomić kilku agentów równolegle, delegując im niezależne zadania. Można też zlecić jednemu z nich analizę lub badanie problemu, podczas gdy drugi pracuje nad implementacją. Doświadczony developer potrafi rozpoznać, które zadania mogą być realizowane jednocześnie i jak najlepiej wykorzystać dostępne zasoby. Większy nacisk można również położyć na testowanie. Gdy agent implementuje kolejną część rozwiązania, programista może już weryfikować wcześniej dostarczone funkcjonalności lub przygotowywać następne etapy prac.
Agent zrobi to, czego od niego oczekujemy. Jednak to człowiek odpowiada za organizację pracy i podejmowanie decyzji. Kluczowe jest, aby programowanie z wykorzystaniem AI nie stało się wymówką dla bierności. Wydajny programista ma wiele wartościowych zadań do wykonania również wtedy, gdy agent realizuje właśnie otrzymane polecenie.
Skontaktuj się z nami, a my z przyjemnością zaprezentujemy Ci możliwości systemu.
Tak. Bez żadnych wątpliwości. Liczba dostarczanych funkcjonalności wzrosła kilkukrotnie, a prototypowanie stało się niezwykle szybkie. Dziś możemy przejść przez kilka wariantów rozwiązania, zanim zdecydujemy, który najlepiej odpowiada potrzebom użytkowników.
Test, który jeszcze niedawno wymagał 2–3 dni pracy, aby sprawdzić różne podejścia do realizacji funkcjonalności, jesteśmy w stanie przeprowadzić w kilkadziesiąt minut. Wartość, jaką wnoszą agenty kodujące, jest więc ogromna.
Nie oznacza to jednak, że nie istnieją wyzwania. Nadal są obszary, w których agent nie jest w stanie samodzielnie uwzględnić pełnego kontekstu biznesowego czy technicznego i wymaga odpowiedniego ukierunkowania. Decyzje architektoniczne często wynikają z wielu czynników, których agent może nie znać lub nie rozumieć w wystarczającym stopniu. Nawet jeśli potrafi analizować różne warianty, to developer odpowiada za dostarczenie właściwego kontekstu i podjęcie ostatecznej decyzji.
Dodatkowo agenty popełniają błędy. Istnieje też ryzyko przerzucania na nich odpowiedzialności za jakość kodu. W naszym zespole uznajemy takie podejście za niedopuszczalne. Dlatego równolegle z wdrożeniem Claude Code wprowadziliśmy zasady, które pozwalają utrzymać wysoką jakość tworzonego oprogramowania.
Każda zmiana trafiająca do produkcyjnej wersji Productive24AI musi zostać zweryfikowana przez człowieka. Pozwalamy agentom generować dowolną ilość kodu, jednak przed integracją z główną gałęzią projektu jest on analizowany i zatwierdzany przez developera.
Warto przy tym pamiętać, że błędy nie pojawiły się wraz z AI. Programiści również popełniają błędy. Wzrost liczby potencjalnych problemów jest przede wszystkim konsekwencją wzrostu produktywności. Skoro dostarczamy więcej kodu i więcej funkcjonalności w krótszym czasie, naturalnie rośnie również liczba sytuacji wymagających weryfikacji.
Odpowiedzią nie jest rezygnacja z AI, lecz odpowiednie procesy kontroli jakości, przeglądu kodu i testowania. Dobra wiadomość jest taka, że AI przyspiesza pracę na tyle znacząco, że możemy przeznaczyć więcej czasu na weryfikację i testy, a mimo to nadal osiągać wyższą produktywność niż w tradycyjnym modelu pracy.
Raczej nie. Przynajmniej w obecnej formie human-in-the-loop, obecność człowieka jest cały czas konieczna. Zmienia się nasza rola, zmieniają się cechy które są najważniejsze.Kluczowa staje się umiejętność adaptacji do nowych narzędzi, wielozadaniowość i umiejętność odpowiedniego zdefiniowania problemów. Myślenie przenosi się poziom wyżej, mniej istotne staje się rozumienie konkretnych funkcji, a ważniejsze rozumienie całości systemu.
Nie są to oczywiście nowości dla developerów. Przechodzenie na coraz wyższe poziomy abstrakcji jest czymś naturalnym. Od kart perforowanych, poprzez niskopoziomowe programowanie do współczesnych języków wieloparadygmatowych. Programiści musieli się rozwijać, zmieniać i dopasowywać przez cały czas istnienia branży. Aktualnie wygląda na to, że programowanie agentowe ma ogromną szansę stać się nowym dominującym podejściem.Łatwość adaptacji zawsze była bardzo ważna, a w dobie przyspieszonego rozwoju staje się najważniejsza.
Warto jednak zachować pokorę wobec prognoz. Tempo rozwoju modeli językowych i narzędzi opartych na AI jest tak duże, że nikt nie jest w stanie z pełnym przekonaniem powiedzieć, jak będzie wyglądała branża za kilka lat. Niewykluczone, że rozwiązanie, które sprawi, że dzisiejsze agenty kodujące będą wydawać się przestarzałe, pojawi się szybciej niż się spodziewamy. W świecie AI kilka lat potrafi zmienić wszystko, a czasem potrzeba na to zaledwie kilka miesięcy.
MVP w kilka dni!
Przetestuj możliwości Productive24AI w swoich procesach!
do naszego newslettera i bądź na bieżąco ze świeżymi artykułami ze świata produktywności.
Wypróbuj Productive24AI bez ryzyka