Každý produkt stojí na kóde, ktorý napísal niekto iný. Je to normálne a väčšinou aj rozumné. Riziko závislostí vzniká vtedy, keď nikto nevie povedať, prečo sa konkrétny balík v projekte nachádza, kto ho udržiava, alebo čo by sa rozbilo, keby zrazu zmizol.
Odkiaľ sa tieto balíky berú
Vygenerované riešenie odráža vzorce, ktoré boli najbežnejšie v jeho tréningových dátach, čo znamená, že automaticky siaha po známych knižniciach. Každý takýto návrh vyzerá sám o sebe rozumne. Po niekoľkých mesiacoch rýchleho vývoja sa však tento efekt nabaľuje: niekoľko balíkov, ktoré riešia ten istý problém, tranzitívne závislosti, ktoré nikto nepreveril, a verzie „zaseknuté“ na tom, čo bolo aktuálne v deň, keď bol súbor napísaný.
Čo preveruje audit
Strom závislostí (dependency tree) je jednou z mála častí codebase, ktorú možno zhodnotiť rýchlo a objektívne. Audit preveruje, ktoré balíky sú reálne importované a ktoré sú len mŕtvou váhou, zisťuje, či nie sú neudržiavané, alebo či neobsahujú známe zraniteľnosti. Ďalej kontroluje, či sú ich licencie kompatibilné s tým, ako sa produkt predáva, a či nebol ten istý problém vyriešený dvakrát dvoma rôznymi knižnicami.
Audit tiež skúma, do akej miery je kód s jednotlivými balíkmi previazaný. Knižnica skrytá za tenkým interným interfejsom je rozhodnutie, ktoré sa dá ľahko zvrátiť. Knižnica, ktorej typy a štruktúry sú prerastené celým produktom, už predstavuje skôr architektonický záväzok. Jej neskoršia výmena je presne ten typ práce, ktorý sa odrazí v tom, čo reálne stojí migrácia kódu.
Ako udržať plochu závislostí malú
Zmyslom tohto cvičenia nie je odstraňovať závislosti len tak, pre princíp. Cieľom je vedieť, na čo sa spoliehate, udržať tento zoznam čo najkratší a uistiť sa, že tie časti, ktoré neviete ľahko nahradiť, ste si vybrali zámerne. V kombinácii s test coverage to dáva realistický obraz o tom, ako bezpečne možno produkt upravovať – a presne o tom je audit softvéru tvoreného pomocou AI (vibe-coded software).