Przejdź do głównej zawartości

Fabryki oprogramowania: jak zbudować taką, która nie zgnije

Fabryka oprogramowania to potok, w którym agenci kodujący pobierają zadania z kolejki, budują je, testują i scalają, a człowiek czyta diff pobieżnie albo wcale. Fabryki działają wtedy, gdy autonomia każdej pętli jest ograniczona wyrocznią weryfikacyjną, której zespół ufa bardziej niż modelowi, a gniją, gdy autonomię ogłasza się dla całej fabryki naraz.

Uruchamiasz sześciu agentów. Do czwartku masz czterdzieści pull requestów, dwie osoby zdolne je rzetelnie przejrzeć i kolejkę, która stała się ścieżką krytyczną całej firmy. Badanie telemetryczne Faros AI z 2026 roku podaje liczby dokładnie na ten tydzień: mediana czasu do pierwszego review w górę o 156,6%, a pull requesty scalone całkowicie bez review w górę o 31,3%.

Oczywisty ruch to zautomatyzować także review. I właśnie o ten ruch branża spierała się przez cały 2026 rok. Warto zrozumieć ten spór, zanim skopiujesz czyjś potok, bo dwa najgłośniejsze głosy mają rację jednocześnie i wcale nie kłócą się o to samo.

  • Dwuosiową mapę spektrum fabryk z naniesionymi realnymi firmami, żeby “czy jesteśmy fabryką oprogramowania” przestało być kwestią przeczucia
  • Rejestr autonomii: cztery pytania do każdej pętli, które rozstrzygają, czy może działać bez nadzoru, i odpowiedź, która ją dyskwalifikuje
  • Kolejność budowy hali produkcyjnej, razem z kanałem kontekstu, który pomija większość opublikowanych potoków
  • Sześć metryk wykrywających gnicie wcześniej niż licznik incydentów, oraz limit WIP, który mu zapobiega
  • Cztery gotowe prompty: audyt gotowości fabrycznej, specyfikacja niosąca kontekst z produkcji, adwersarialny recenzent bramki i cotygodniowy przegląd erozji

Pętla nie jest skomplikowana i po części dlatego rozchodzi się tak szybko:

  1. Ludzie decydują, co zbudować, i wpisują to do systemu ticketów.
  2. Agenci budują i testują zmianę spełniającą wymaganie, po czym otwierają ją do CI i review.
  3. Zaakceptowany kod trafia na produkcję przez CD.
  4. Odrzucony wraca do agenta na kolejne iteracje, aż przejdzie.
  5. Użytkownicy korzystają z tego, co wdrożono, i emitują dane, opinie oraz sygnały, które kształtują kolejne prace.

Nic z tego nie jest nowe. Rusztowaniem są kontrola wersji, CI/CD i monitoring, a ustandaryzowany, powtarzalny proces to rzecz, którą każdy zespół już deklaruje. Zmieniło się to, kto stoi przy stanowiskach.

Sama metafora jest starsza, niż się wydaje. Hitachi otworzyło swoje Software Works w 1969 roku, a NEC, Toshiba i Fujitsu poszły tą drogą w latach 70., wszystkie goniąc za standaryzacją procesu i reużyciem. Studium tamtej epoki autorstwa Michaela Cusumano wykazało, że fabryki były naprawdę dobre w rutynowym, produkcyjnym oprogramowaniu i uporczywie słabe w systemach operacyjnych oraz aplikacjach. To użyteczna przesłanka: fabryki optymalizują pracę, której jakość da się określić z góry.

Gdzie na spektrum fabryk oprogramowania jest twój zespół?

Dział zatytułowany „Gdzie na spektrum fabryk oprogramowania jest twój zespół?”

Nie ma testu przynależności, więc potraktuj to jako dwie osie: jaką część kodu piszą agenci i jak uważnie ludzie wciąż go czytają. Opublikowane współrzędne, stan na sierpień 2026:

ZespółUdział kodu od agentówCzytanie przez ludziGdzie to plasuje
Większość zespołówWsparcie przy PR-ach pisanych przez ludziPełne reviewTo nie fabryka, tylko szybkie autouzupełnianie
Ramp, Cursor, UberAgenci w tle na realnych ticketach. Uber raportuje ~1800 w pełni agentowych zmian tygodniowo, ~11% aktualizacji backendu na produkcji, przy 95% inżynierów używających AI co miesiącPełne reviewFabryka oświetlona
PostHog~70% PR-ówLudzie przeglądają co najmniej 80%Oświetlona, ze ściemnionym światłem
StripeMinions scalają 1300+ PR-ów tygodniowo bez ani jednej linii napisanej przez człowiekaReview przez ludziOświetlona, w dużej skali
StrongDMCałość. Trzy osoby, 32 000 linii produkcyjnego oprogramowania bezpieczeństwaZero. Statut zabrania ludziom pisania i recenzowania koduZgaszone światła

Sporny jest prawy górny róg. Fabryka “z wyłączonym światłem” (dark factory) potrzebuje trzech rzeczy naraz, a zespoły mają zwykle jedną:

  • Realnej adopcji AI. Dostęp do agentów to nie to samo co ich używanie. Fabryka, w której połowa zespołu nadal pisze PR-y ręcznie, ma na środku hali stałe stanowisko manualne.
  • Walidacji do poziomu gotowości do scalenia. Review przez innego agenta, uruchomienie lokalne, przeklikanie w przeglądarce. Agent piszący testy jednostkowe do własnego kodu, a potem rozumujący o tym kodzie, niczego nie waliduje: to ten sam model oceniający własny egzamin.
  • Zabezpieczeń zakładających porażkę. Sandboksy, wąsko przyznane uprawnienia, deterministyczne kontrole. Ludzie zostają w pętli jako decydenci wyłącznie przy zmianach wysokiego ryzyka.

Dlaczego spór o fabryki oprogramowania wybuchł w 2026 roku

Dział zatytułowany „Dlaczego spór o fabryki oprogramowania wybuchł w 2026 roku”

Dwa argumenty padły w odstępie kilku tygodni i wzięcie tylko jednego z nich zbuduje ci zły potok.

Argument Dexa Horthy’ego: inżynieria uprzęży nie wystarcza

Dział zatytułowany „Argument Dexa Horthy’ego: inżynieria uprzęży nie wystarcza”

CEO HumanLayer prowadził fabrykę z wyłączonym światłem od lipca 2025 i zamknął ją w listopadzie. Agenci pisali, recenzowali i wdrażali bez udziału człowieka, a w ciągu jakichś czterech miesięcy kodbaza zdegradowała się na tyle, że znalezienie jednego błędu zajęło tygodnie ręcznego debugowania. Jego wniosek, przedstawiony jako keynote “Harness Engineering is not Enough” na AI Engineer World’s Fair, a potem jako seria esejów, brzmi: porażka nie leżała w potoku. Leżała w modelach.

Mechanizmem jest sygnał nagrody. Agenci kodujący są trenowani pod jednorazową poprawność: jeśli testy przechodzą, rollout wygrywa. Nic w tej pętli nie karze za erozję kodbazy po drodze do zieleni. A nie karze dlatego, że nie istnieje szybka wyrocznia utrzymywalności: to, czy projekt był dobry, zależy od tego, o co ktoś poprosi następnym razem, a tego nie da się wiedzieć w chwili projektowania i jest to unikalne dla każdej kodbazy.

Ta teza przestała być retoryczna, gdy zmierzył ją SlopCodeBench. Zamiast zadań jednorazowych benchmark każe agentom wielokrotnie rozbudowywać własne wcześniejsze rozwiązania pod zmieniające się specyfikacje, a potem śledzi dwa sygnały na poziomie trajektorii: rozwlekłość (kod redundantny lub zduplikowany) i erozję strukturalną (masa złożoności skupiająca się w kilku bardzo złożonych funkcjach). Wyniki, za Orlanskim i in.:

  • Żaden agent nie rozwiązuje w całości ani jednego problemu. Najlepszy ścisły wynik na checkpoint to 14,8%.
  • Erozja strukturalna rośnie w 77% trajektorii; rozwlekłość rośnie w 75,5%.
  • Kod agenta jest 2,3x bardziej rozwlekły i 2,0x bardziej zerodowany niż kod ludzki na tych samych problemach.
  • Repozytoria ludzkie degradują się rzadziej i o mniejsze marginesy w całej swojej realnej historii rozwoju.
  • Proszenie o jakość z góry obniżyło początkową erozję i rozwlekłość nawet o jedną trzecią, nie zmieniając tempa degradacji.

To ostatni punkt wart dłuższego namysłu. Lepsze instrukcje przesunęły punkt startowy i zostawiły nachylenie w spokoju. Żadna ilość inżynierii uprzęży nie załata brakującego sygnału nagrody i dlatego rekomendacja Horthy’ego brzmi: czytaj kod dalej albo przenieś wysiłek człowieka wyżej, do planowania.

Odpowiedź PostHog nie podważa erozji. Podważa schemat.

Każda opublikowana fabryka oprogramowania wymusza czysty rozdział między decydowaniem, co zbudować, a budowaniem. Człowiek planuje, kompresuje wynik do ticketu i przekazuje go agentowi bez żadnego wcześniejszego kontekstu problemu. Lekarstwo Horthy’ego zachowuje ten kształt: lepszą wyrocznią jakości byłoby to, czy wynik przechodzi wszystkie weryfikatory dla stopniowo ujawnianej specyfikacji, a specyfikacja nadal przychodzi gotowa.

Zarzut PostHog jest taki, że dobra inżynieria produktowa tak nie wygląda. Dobre zaprojektowanie systemu wymaga ograniczeń technicznych oraz realnego zrozumienia problemu, dlatego inżynierowie produktowi rozmawiają z użytkownikami i dlatego w PostHog to inżynierowie, a nie PM-owie, decydują, co budować. Agenci dziedziczą to wymaganie. Podejmują lepsze decyzje architektoniczne, gdy widzą, jak produkt jest naprawdę używany, kim jest klient, na co narzekają użytkownicy i co jeszcze dzieje się w kodbazie.

Ich własne liczby pokazują, dlaczego uderza to najmocniej w utrzymywalność: 63% zmienionych linii w PostHog trafia do plików, które już istnieją, a fix jest ich największym typem commita z 40%. Większość pracy nad oprogramowaniem jest reakcją na zaobserwowane użycie. Gdy ostatnio goniłeś incydent, opierałeś się na logach i trace’ach, a nie na czyimś streszczeniu problemu z drugiej ręki, a agent dostający ticket pracuje na streszczeniu z drugiej ręki za każdym razem.

Dlaczego autonomię się zdobywa dla pętli, a nie ogłasza

Dział zatytułowany „Dlaczego autonomię się zdobywa dla pętli, a nie ogłasza”

Oba stanowiska bronią się w analizie i składają się w całość. Horthy wskazuje sufit, którego nie przeskoczysz inżynierią. PostHog wskazuje ranę zadaną samemu sobie, leżącą dobrze poniżej tego sufitu. Zaleczenie rany nie podnosi sufitu i żadne z nich osobno nie przetrwa zderzenia z prawdziwą kodbazą.

Praktyczny wniosek jest taki, że “czy jesteśmy dark factory” to złe pytanie, bo pada na złym poziomie ziarnistości. Fabryka to nie jedno ustawienie autonomii. To dziesiątki pętli o skrajnie różnej ekonomii weryfikacji, a użyteczną jednostką decyzji jest pętla.

Addy Osmani nazywa to ograniczenie: pętli można oddać tyle autonomii, ile da się tanio i niezawodnie zweryfikować, i ani cala więcej. Nazywa to przeciwciśnieniem i to jest powód, dla którego lejek z szerokim wlotem i wąską bramką nie przyspiesza, gdy poszerzasz wlot.

Zanim pętla ruszy bez nadzoru, odpowiedz na jej temat pisemnie na cztery pytania:

  1. Jaka wyrocznia rozstrzyga “gotowe”? Nazwij konkret. “Testy przechodzą” to wyrocznia. “Wygląda dobrze” to nie.
  2. Czy agent może ją oszukać? Jeśli agent może edytować wyrocznię, wyrocznia jest sugestią. Testy wewnątrz repozytorium oblewają to pytanie z definicji.
  3. Ile czasu minie, zanim błędna odpowiedź wyjdzie na jaw? Sekundy to zielone światło. “Człowiek zauważy za trzy tygodnie” to czerwone i jest to odpowiedź dla każdej decyzji architektonicznej, czyli dokładnie teza Horthy’ego.
  4. Jaki jest promień rażenia, jeśli to błąd? Odwracalny i ograniczony, czy migracja schematu.

Pętla odpowiadająca czysto na wszystkie cztery może dziś działać w ciemno. Pętla oblewająca pytanie 2 lub 3 zostaje w świetle bez względu na to, jak dobra jest twoja uprząż.

PętlaWyroczniaDo oszukaniaOpóźnienie sygnałuWerdykt
Podbicia zależności, łatki CVEBuild i pełny zestaw testów u konsumentówNie, zestaw powstał przed zmianąMinutyDziała w ciemno
Stabilizacja testów niestabilnychUruchom test 1000 razy, zmierz odsetek porażekNie, jest statystycznaMinutyDziała w ciemno
Mechaniczne codemody, poprawki lintera i typówKompilator i linterNieSekundyDziała w ciemno
Praca nad funkcją w dobrze pokrytym moduleIstniejące testy plus nowe, napisane przez agentaTak, agent trzyma obie stronyMinutyW świetle: człowiek czyta plan
Schemat, autoryzacja, cennik, migracjeZachowanie na produkcjiNie, ale jest wolnaDni do tygodniW świetle: człowiek czyta diff
Refaktory architektoniczneŻadna działająca w CINie dotyczyTygodnie do miesięcyW świetle, z planowaniem z góry

Jeszcze jedno ograniczenie z tej samej literatury: pętle pozostają niezawodne przy mniej więcej 3 do 10 krokach, a powyżej około 20 agent gubi wątek, bo kontekst narasta. “Pętla” wymagająca czterdziestu kroków to potok, którego jeszcze nie rozłożyłeś na części.

Buduj w tej kolejności. Kroki 1 i 2 zespoły pomijają najczęściej, a ich pominięcie daje szybki potok, który dostarcza erozję.

  1. Uczyń repozytorium czytelnym dla agenta. AGENTS.md albo CLAUDE.md opisujący architekturę i nieoczywiste ograniczenia, typowane granice między modułami oraz szwy testowe przypinające zachowanie. Uwagę Osmaniego warto powtórzyć, bo jest nieefektowna: mocne sygnatury, przejrzysta organizacja, czytelne stosy wywołań i wstrzykiwanie zależności nie są nową praktyką, są siatką bezpieczeństwa decydującą o tym, jak wiele szkody zrobi błędna decyzja agenta.

  2. Podłącz kanał kontekstu. To argument PostHog przełożony na operacje i krok, którego niemal żaden opublikowany potok nie zawiera. Zanim agent cokolwiek zaplanuje, powinien móc sięgnąć po te same dowody, które otworzyłby człowiek: trace’y błędów, logi, dane o użyciu, nagrania sesji i faktyczną skargę klienta. Podłącz serwery MCP analityki i śledzenia błędów, za które zespół już płaci, i uczyń ich czytanie częścią kroku planowania, a nie opcjonalnym narzędziem, po które agent może sięgnąć. Agent, który przeczytał zgłoszenie w Sentry, pisze inną poprawkę niż ten, któremu wręczono ticket “checkout czasem nie działa”.

  3. Zbuduj kolejkę. Etykieta na zgłoszeniu w zupełności wystarcza na start. Zadaniem kolejki jest uczynić listę pracy jawną i ograniczoną tempem, żeby to, co wchodzi do fabryki, było decyzją, a nie przypadkiem.

  4. Zbuduj bramkę, w kolejności kosztu. Najpierw kontrole deterministyczne: kompilator, linter, kontrola typów, zestaw testów oraz testy własności lub kontraktu. Potem recenzent LLM z adwersarialnym promptem. Potem człowiek, dla klas, którym rejestr go przypisał. Uruchamianie drogiego recenzenta przed darmowymi spala tokeny na diffach, które odrzuciłby błąd typów.

  5. Sandboksuj, ogranicz uprawnienia, mierz wydatek. Każdy agent dostaje izolowane środowisko, poświadczenia zawężone do potrzeb swojej pętli i licznik wydatków. Zadaj pytanie, które zadałby operator fabryki: w najgorszej godzinie systemu, które operacje są pośredniczone, jakie tożsamości obowiązują, jakie limity są egzekwowane, jakie dowody przetrwają i w którym miejscu człowiek musi autoryzować kontynuację? Każda ścieżka omijająca twoją bramę (bezpośrednie wywołania API, dostęp do powłoki, przeglądarka) potrzebuje własnej odpowiedzi.

  6. Oprzyrząduj samą fabrykę. Prowadzisz teraz system produkcyjny, którego wyjściem jest kod. Jeśli nie widzisz głębokości kolejki, opóźnienia review i wskaźnika przeróbek na pętlę, lecisz na ślepo.

Trzy narzędzia zajmują różne powierzchnie. Ten podział pokrywa się z tym z artykułu o ciągłym dostarczaniu i to samo rozumowanie obowiązuje tutaj.

Cursor najlepiej obsadza stanowisko review. BugBot recenzuje PR-y automatycznie po włączeniu na repozytorium i zostawia komentarze w linii, a na żądanie wywołasz go ponownie przez bugbot run. Autofix, ogólnie dostępny od lutego 2026, uruchamia agenta chmurowego w tle, który otwiera kolejny PR z proponowaną poprawką, więc bramka produkuje diff do zaakceptowania zamiast komentarza do obsłużenia. Agenci w tle i agenci chmurowi obsługują stanowisko budowy, a Agents Window to miejsce, z którego obserwujesz flotę.

Wybierz Cursor, gdy bramka review twojej fabryki żyje w interfejsie GitHuba i chcesz, żeby porażki wracały jako PR-y.

Zbudowanie jej to weekend. Prowadzenie jej bez narastania długu, którego nie widzisz, to praca.

Ustaw limit WIP według przepustowości review, nie budżetu na tokeny

Dział zatytułowany „Ustaw limit WIP według przepustowości review, nie budżetu na tokeny”

Fabryka to lejek z szerokim wlotem i wąską bramką. Dodawanie agentów poszerza wlot. Jeśli bramka się nie zmienia, rośnie wyłącznie kolejka przed nią, a kolejki przed bramkami zamieniają się w scalenia bez bramki. To nie prognoza: Faros zmierzył wzrost liczby pull requestów scalonych całkowicie bez review o 31,3%, przy pracy stojącej ponad 7 dni w górę o 26% i dziennej liczbie kontekstów PR na programistę w górę o 67,4%.

Ogranicz liczbę równoległych agentów do tylu zmian, ile twoja bramka realnie przepuszcza dziennie, a potem podnoś limit wyłącznie przez przyspieszenie lub potanienie bramki. Każda inna dźwignia to teatr. Zrównoleglenie pracy zespołu omawia kalibrowanie tego sufitu na programistę.

Obserwuj sześć metryk wykrywających gnicie wcześnie

Dział zatytułowany „Obserwuj sześć metryk wykrywających gnicie wcześnie”

Licznik incydentów jest wskaźnikiem opóźnionym, a zanim drgnie, erozja ma już miesiące. Śledź zamiast tego poniższe, w rozbiciu na pliki tworzone przez agentów i przez ludzi, żeby porównanie było widoczne:

MetrykaCo mówiPoziom bazowy Faros 2026
Churn kodu (stosunek linii usuniętych do dodanych w scalonym kodzie)Przepustowość, która nie jest realnaWzrost o 861%
Incydenty na PRCzy bramka działaWzrost o 242,7%
Błędy na programistęOdsetek defektów przechodzących przez bramkęWzrost o 54% (z 9% w raporcie 2025)
PR-y scalone bez reviewCzy bramka jest omijanaWzrost o 31,3%
Czas do pierwszego reviewGdzie tworzy się kolejkaMediana w górę o 156,6%
Duplikacja i koncentracja złożonościDwa sygnały erozji ze SlopCodeBench, lokalnieBrak w raporcie; zmierz sam

Badanie Faros obejmuje 22 000 programistów w ponad 4000 zespołów przez dwa lata i porównuje w każdej organizacji okres najniższej i najwyższej adopcji AI. Warto je cytować w obie strony. Ten sam zbiór danych pokazuje realne zyski: epiki ukończone na programistę w górę o 66,2%, przepustowość zadań o 33,7%, wskaźnik scalonych PR-ów o 16,2%. Wynik jest prawdziwy. Rachunek też. Kto sprzedaje ci jedną połowę tej tabeli, sprzedaje coś jeszcze.

Autonomiczne pętle wydają bez człowieka decydującego za każdym razem, co sprawia, że budżety zachowują się inaczej. StrongDM traktuje 1000 dolarów na inżyniera dziennie w tokenach jako podłogę, a nie sufit, z uzasadnieniem, że zbyt niski wydatek oznacza zbyt małą automatyzację. Uber poszedł w drugą stronę i ograniczył wydatki pracowników na AI po przepaleniu budżetu w cztery miesiące.

Oba przypadki niosą tę samą lekcję z przeciwnych stron: licznik należy do pętli. Pętla podbijająca zależności, która działa w ciemno i kosztuje grosze na zmianę, nie powinna dzielić linii budżetowej z pętlą refaktorów architektonicznych, która pali fortunę i nadal potrzebuje człowieka. Kontrola kosztów omawia mechanikę.

Badania DORA nad wytwarzaniem wspieranym przez AI dochodzą do wniosku niewygodnego i dobrze udokumentowanego: AI jest wzmacniaczem. Jego wpływ na wydajność organizacji zależy od jakości wewnętrznej platformy. Gdy jakość platformy jest niska, efekt jest znikomy; gdy jest wysoka, efekt jest silny i pozytywny. Inwestowanie w agentów bez inwestowania w platformę to optymalizacja lokalna.

Czytaj to razem z ustaleniem Faros, że organizacje o dojrzałych praktykach DevOps doświadczyły tego samego pogorszenia co wszyscy inni. Te dwa wnioski nie są sprzeczne: dobra platforma podnosi to, co fabryka może wyprodukować, i sama z siebie nie zatrzymuje erozji. Potrzebujesz platformy oraz rejestru.

Nikt już nie rozumie kodu. Przepaść między tym, ile kodu istnieje, a tym, ile ktokolwiek potrafi jeszcze wyjaśnić, rozszerza się po cichu i uwidacznia dopiero, gdy błąd wymaga rozumowania o systemie. Wyjście jest drogie: odizoluj dotknięty obszar, zapisz zachowanie, którego naprawdę od niego potrzebujesz, i wygeneruj go od nowa z tej specyfikacji, zamiast debugować kod bez właściciela. Zapobieganie jest tańsze: czytaj plany nawet w pętlach, w których przestałeś czytać diffy.

Agent poprawił test zamiast kodu. Zestaw jest zielony, błąd siedzi na produkcji, a diff dotknął asercji. To pytanie 2 z rejestru pozostawione bez odpowiedzi. Przenieś wyrocznię poza zasięg, trzymaj scenariusze behawioralne na zewnątrz repozytorium i traktuj każde zielone przejście, w którym zmienił się plik testowy, jako zmianę nierecenzowaną.

Erozja, której nie łapie żadna kontrola. Wszystkie bramki przechodzą, a kodbaza i tak się pogarsza, bo duplikacja i koncentracja złożoności są niewidoczne dla kompilatorów i zestawów testów. Zaplanuj powyższy przegląd erozji i traktuj jego linię trendu jako realny sygnał.

Teatr review. Akceptacje przychodzą kilka sekund po otwarciu PR-a, na diffach zbyt dużych, by ktoś je przeczytał. Przekartkowany diff na 800 linii jest gorszy niż nieprzeczytany, bo zostawia zapis mówiący, że ktoś patrzył. Audytuj rzetelnie próbkę, zamiast kartkować całość, i zmniejsz rozmiar PR-ów, który według Faros urósł o 51,3% przy wysokiej adopcji AI.

Zagłodzenie kolejki i utyki. Praca wchodzi, agent ją podejmuje i sprawa stoi. Alarmuj na wiek w stanie, a nie na sam stan, i kieruj wszystko po przekroczeniu progu do człowieka zamiast do kolejnej próby.

Promień rażenia przez ścieżki, których nie objąłeś pośrednictwem. Twoja brama widzi wywołania modelu, które przez nią przechodzą. Nie widzi bezpośrednich wywołań API, poleceń powłoki ani sesji przeglądarki. Wypisz nieobjęte ścieżki wprost, bo autonomiczna pętla z szerokimi poświadczeniami to inna postawa bezpieczeństwa niż inżynier z tymi samymi. Bezpieczeństwo MCP omawia stronę dostępu do narzędzi.