Az elmúlt időszakban a szoftverfejlesztés termelékenysége fokozatosan, de észrevehetően növekedni kezdett.
A kódgenerálásra optimalizált nyelvi modellek megjelenésével az elmúlt fél évben ezek a megoldások olyan érettségi szintet értek el, hogy beépülve a fejlesztői eszközökbe, bizonyos feladatokban agent jelleggel is használhatók.
De van egy kérdés, amit ritkábban teszünk fel:
Mi történik a fejlesztési folyamat többi részével, ha a kódírás sebessége hirtelen megnő?
A fejlesztés nem egyedül létezik
Gyakran hajlamosak vagyunk a szoftverfejlesztést a kódírással azonosítani, mintha a munka döntő része ott történne. A gyakorlatban azonban a fejlesztés csak egy állomás egy hosszabb folyamatban, amely több, egymásra épülő lépésből áll:
- követelmények értelmezése
- tervezés
- implementáció
- code review
- tesztelés
- üzemeltetés
- támogatás
Ez egy rendszer, nem különálló feladatok halmaza.
És mint minden rendszerben, itt is igaz egy alapelv:
a teljes rendszer áteresztőképességét mindig a legszűkebb keresztmetszet határozza meg.
Mi történik, ha a fejlesztést gyorsítjuk?
Vegyünk egy egyszerű példát.
Egy fejlesztő AI-támogatás nélkül egy adott tempóban halad, míg AI-támogatással ugyanannyi idő alatt érezhetően nagyobb mennyiségű forráskódot képes előállítani.
Ez önmagában nem probléma. Sőt, kifejezetten előny.
A kérdés ott merül fel, amikor rövidebb idő alatt lényegesen több kód kerül a fejlesztési folyamat következő lépéséhez.
A kód előállítása jól skálázható, az azt követő elemzési és ellenőrzési kapacitás azonban lényegesen kevésbé.
A szűk keresztmetszet nem ott keletkezik, ahol várnánk
A fejlesztési folyamatban a szűk keresztmetszetek sokszor nem technikai, hanem emberi oldalon jelennek meg:
- manuális ellenőrzés
- döntéshozatal
- felelősségvállalás
- mentális terhelés
Ezek nem skálázódnak lineárisan.
Minőségbiztosítás nagyobb volumen mellett
A kódellenőrzés és a tesztelés a fejlesztési folyamat természetes és szükséges részei.
Ezek a lépések biztosítják, hogy az elkészülő megoldások hosszabb távon is fenntarthatók maradjanak.
Amikor azonban a kód előállításának üteme növekszik, ezek a minőségbiztosítási lépések aránytalan terhelést kaphatnak.
Ez nem működési hiba, hanem kapacitásbeli kérdés. Ugyanazokat az ellenőrzési elveket kell egy nagyobb mennyiségű bemenetre alkalmazni.
A felelősségi viszonyok mindeközben nem változnak meg. Az ellenőrzést végző fejlesztőknek továbbra is:
- fel kell ismerniük a kockázatokat
- mérlegelniük kell a hosszabb távú következményeket
- dönteniük kell arról, mi kerülhet be a kódbázisba
Az AI a kód előállítását gyorsítja, a felelősség azonban továbbra is az embernél marad.
Ha egy területet skálázunk, a többit is kell
Az AI-támogatott eszközök a kód előállítását gyorsítják.
Ahhoz, hogy ez a gyorsulás valóban értéket teremtsen, a kódellenőrzési és tesztelési lépéseknek is hasonló mértékben kell támogatást kapniuk.
Ha ez nem történik meg, a fejlesztés gyorsulása nem a szállítási időben, hanem az ellenőrzési terhelés növekedésében fog megjelenni.
Az AI szerepe az ellenőrzési folyamatokban
A kódellenőrzés és tesztelés során az AI-alapú eszközök szerepe a meglévő folyamatok támogatása, nem azok kiváltása.
Nem arról van szó, hogy:
- az AI kiváltja a code review-t
- az AI hoz végső döntést
- az AI automatikusan átírja a kódot
Hanem arról, hogy:
- előszűr
- priorizál
- felhívja a figyelmet a kockázatokra
- csökkenti a mentális terhelést
Az AI-támogatás célja a figyelmet igénylő döntési pontok kiemelése, miközben a felelősségi viszonyok változatlanok maradnak.
Rendszerben kell gondolkodni
Az AI-alapú fejlesztés nem csak több kódot jelent.
Azt is jelenti, hogy újra kell gondolnunk a fejlesztési folyamatainkat.
Ha csak a kódírást gyorsítjuk:
- új szűk keresztmetszeteket hozunk létre
- növeljük a mentális terhelést
- és végül nem gyorsabban, csak stresszesebben dolgozunk
A valódi kérdés az, hogy hogyan tudjuk a fejlesztés különböző lépéseit együtt skálázni, úgy, hogy a megnövekedett termelékenység a teljes folyamatban érvényesüljön.