Skip to content
← Wszystkie wpisy
6 min czytania Dawid Skłodowski

Rozwój sterowany specyfikacją z agentami AI

Gdy agent AI robi implementację, specyfikacja staje się artefaktem o najwyższej dźwigni w projekcie — jasna specyfikacja produkuje dobry kod, mglista produkuje pewny siebie bałagan. Deep-dive o tym, dlaczego rozwój sterowany specyfikacją odżył w erze agentów, jak wygląda dobra specyfikacja dla agenta i jak faktycznie zmienia się przepływ pracy.

Kilka lat budowania z agentami kodowania AI wynurzyło dyscyplinę, która w innej formie jest stara jak inżynieria oprogramowania: pisanie specyfikacji najpierw. Gdy zdolny agent robi faktyczną implementację, specyfikacja — precyzyjny opis co zbudować — staje się artefaktem o najwyższej dźwigni w całym projekcie, bo to wejście, które najbardziej determinuje, czy agent produkuje coś dobrego, czy pewny siebie bałagan. Jasna, kompletna specyfikacja daje agentowi to, czego potrzebuje, by zbudować właściwą rzecz; mglista wysyła go błądzącego, wypełniającego luki zgadywaniem, które wygląda wiarygodnie, a nie jest tym, czego chciałeś. To deep-dive o tym, dlaczego rozwój sterowany specyfikacją odżył dokładnie w erze agentów, jak faktycznie wygląda dobra specyfikacja dla agenta i jak zmienia się codzienny przepływ pracy, gdy specyfikacja, a nie kod, jest rzeczą, którą rzeźbisz.

Dlaczego specyfikacja stała się punktem dźwigni

By zobaczyć, dlaczego to ma znaczenie teraz konkretnie, połącz to ze zmianą, o której pisałem: z agentowym kodowaniem zawód dewelopera przesuwa się od pisania kodu do określania i kierowania nim. Doprowadź to do wniosku, a specyfikacja przestaje być papierkową robotą i staje się głównym wejściem — rzeczą, która najbardziej determinuje jakość wyjścia. Logika jest bezpośrednia:

  • Agent buduje to, co specyfikacja opisuje. Jego wyjście jest tak dobre jak jego rozumienie tego, czego chcesz, a specyfikacja to skąd to rozumienie pochodzi. Śmieci na wejściu, śmieci na wyjściu nigdy nie było prawdziwsze — agent jest szybki i zdolny, ale buduje to, o co poprosiłeś, nie to, co miałeś na myśli.
  • Niejednoznaczność jest wypełniana zgadywaniem. Tam, gdzie specyfikacja jest mglista albo milcząca, agent nie zatrzymuje się i nie pyta, jak zrobiłby junior — zgaduje, pewnie, i produkuje coś wiarygodnego, co może być całkowicie błędne. Każda luka w specyfikacji to miejsce, gdzie agent zaimprowizuje, często w kierunku, którego nie zamierzałeś.
  • Specyfikacja to miejsce, gdzie twój wysiłek teraz najbardziej się opłaca. Czas spędzony na uczynieniu specyfikacji jasną i kompletną kupuje więcej jakości niż czas spędzony gdziekolwiek indziej, bo jest powyżej wszystkiego, co agent robi. Recenzowanie i naprawianie złego wyjścia jest znacznie droższe niż dobre określenie na początku.

Więc specyfikacja nie jest już formalnością, którą piszesz, by zaspokoić proces — to praca o najwyższej dźwigni w projekcie, miejsce, gdzie jasność tłumaczy się najbardziej bezpośrednio na dobre wyjście. To dlaczego dyscyplina, która zanikła w szybko-poruszających się zespołach, wróciła z hukiem: gdy agent implementuje, dobre określanie jest inżynierią.

Jak wygląda dobra specyfikacja dla agenta

Dobra specyfikacja dla agenta to nie tysiącstronicowy dokument wymagań — to stary tryb awarii waterfall, i jest tak samo błędny tutaj. To jasny, kompletny i odpowiednio precyzyjny opis tego, co zbudować. Jakości, które mają znaczenie:

  • Jasna co do co i dlaczego. Stwierdź, co zbudować i intencję za tym, by nieuniknione decyzje osądu agenta w lukach były zakotwiczone w twoim faktycznym celu, a nie robione na ślepo. Agent, który rozumie dlaczego, robi lepsze zgadywania tam, gdzie specyfikacja jest z konieczności niekompletna.
  • Jawna co do ograniczeń i krawędzi. Wymagania, które mają znaczenie, przypadki brzegowe do obsłużenia, rzeczy, które muszą być prawdą. To dokładnie to, czego agent nie wywnioskuje poprawnie sam, więc nazwanie ich jest wysokiej wartości. Przypadki brzegowe, które pominiesz, to te, które wracają jako błędy.
  • Konkretna, gdzie precyzja ma znaczenie, luźna, gdzie nie. Bądź dokładny co do części, gdzie dokładność ma znaczenie — kształt danych, kluczowe zachowania, interfejsy — i nie nadmiernie-specyfikuj części, gdzie osąd agenta jest w porządku. Nadmierne-specyfikowanie wszystkiego jest tak marnotrawne jak niedostateczne-specyfikowanie ważnych rzeczy; umiejętnością jest wiedza, która jest którą.
  • Recenzowalna sama w sobie. Dobra specyfikacja to coś, co ty (i twój zespół) możecie przeczytać i ocenić przed istnieniem jakiegokolwiek kodu — łapiąc błędne założenie na etapie specyfikacji, gdzie tanio je naprawić, zamiast po tym, jak agent na nim zbudował.

Umiejętność pisania tych jest realna i nieco nowa: to zdolność jasnego myślenia o tym, czego faktycznie chcesz, i wyrażenia tego dość precyzyjnie, by agent zbudował, bez topienia go w detalu, którego nie potrzebuje. To prompt engineering wyniesiony do poziomu całej funkcji — ta sama dyscyplina precyzyjnej, kompletnej instrukcji, zastosowana do specyfikacji.

Jak zmienia się przepływ pracy

Rozwój sterowany specyfikacją z agentami przekształca codzienną pętlę. Kształt, który działa:

  1. Napisz specyfikację. Przemyśl i jasno opisz, co zbudować, na właściwym poziomie precyzji. To teraz rdzenna praca twórcza i inżynierska — gdzie decydujesz, co powinno istnieć, i przypinasz to.
  2. Zrecenzuj specyfikację — idealnie przed implementacją. Ponieważ specyfikacja napędza wszystko, łapanie problemów tutaj jest znacznie tańsze niż łapanie ich w generowanym kodzie. Traktuj specyfikację jako recenzowalny artefakt sam w sobie, analizowany tak, jak analizowałbyś projekt.
  3. Agent implementuje ze specyfikacji. Przekaż agentowi specyfikację i pozwól mu budować, część, która jest teraz szybka.
  4. Zrecenzuj implementację wobec specyfikacji. Zweryfikuj, że agent zbudował to, co specyfikacja opisała — i, kluczowo, ta recenzja jest ostrzejsza, bo masz specyfikację, wobec której sprawdzić. „Czy to pasuje do tego, co określiliśmy?” to znacznie bardziej wykonalne pytanie recenzji niż „czy ten kod jest dobry?” w abstrakcji.

Dwie rzeczy wyróżniają się w tej pętli. Po pierwsze, specyfikacja staje się źródłem prawdy — gdy zachowanie jest pod pytaniem, sprawdzasz je wobec specyfikacji, a gdy wymagania się zmieniają, zmieniasz specyfikację i re-wyprowadzasz. Po drugie, recenzowanie wobec jawnej specyfikacji jest znacznie skuteczniejsze niż recenzowanie kodu na zimno: specyfikacja daje ci miarę. To ta sama dyscyplina krytycznej recenzji, której agentowe kodowanie wymaga, uczyniona łatwiejszą, bo określiłeś, co „poprawne” znaczy, z góry.

Czego nie naprawia

Zgodnie z uczciwością, na której ta seria nalega: rozwój sterowany specyfikacją to potężna dyscyplina, nie magiczna różdżka. Parę uczciwych granic. Nie usuwa potrzeby recenzowania implementacji — agent wciąż może pomylić kod nawet wobec dobrej specyfikacji, a specyfikacja, wobec której nie możesz zweryfikować wyjścia, to żadna ochrona. Nie znaczy, że specyfikacje muszą być wyczerpujące — nadmierne-specyfikowanie to własna porażka, wolna i krucha, a celem jest odpowiednia precyzja, nie maksymalna. I nie eliminuje iteracji — często dopracujesz specyfikację, gdy budowanie ujawni luki w twoim własnym myśleniu, co jest w porządku i oczekiwane; specyfikacja to żywy artefakt, nie kontrakt wyrzeźbiony przed jakimkolwiek uczeniem się. Rozwój sterowany specyfikacją czyni agenta dramatycznie skuteczniejszym, dając mu jasny cel; nie usuwa twojego osądu z pętli, relokuje go tam, gdzie ma najwięcej dźwigni.

Werdykt

Gdy zdolny agent AI robi implementację, specyfikacja staje się artefaktem o najwyższej dźwigni w projekcie, bo agent buduje to, co specyfikacja opisuje, i wypełnia każdą lukę pewnym siebie zgadywaniem — więc jasna, kompletna specyfikacja produkuje dobry kod, a mglista produkuje wiarygodny bałagan. To dlaczego rozwój sterowany specyfikacją odżył w erze agentów: z zawodem dewelopera przesuwającym się od pisania kodu do określania i kierowania nim, dobre określanie jest inżynierią. Dobra specyfikacja dla agenta jest jasna co do co i dlaczego, jawna co do ograniczeń i przypadków brzegowych, konkretna, gdzie precyzja ma znaczenie, i luźna, gdzie nie, i recenzowalna sama w sobie — nie wyczerpujący dokument wymagań, który jest starym trybem awarii, lecz odpowiednio precyzyjna. Przepływ staje się napisz specyfikację, zrecenzuj ją przed implementacją (gdzie naprawianie problemów jest tanie), pozwól agentowi budować, potem zrecenzuj implementację wobec specyfikacji — co czyni recenzję znacznie ostrzejszą, bo masz miarę. Specyfikacja staje się źródłem prawdy. Nie usuwa potrzeby recenzowania wyjścia, nie wymaga wyczerpujących specyfikacji i nie eliminuje iteracji — relokuje twój osąd tam, gdzie ma najwięcej dźwigni. W erze agentów najjaśniejsi myśliciele o tym, co zbudować, mają przewagę, bo specyfikacja to teraz miejsce, gdzie jakość jest wygrywana.