SZPONZORÁLT TARTALOM
„Az AI elveszi a programozók munkáját.” Talán te is hallottad már ezt az aggályt. Az elmúlt időszakban a mesterséges intelligencia valóban látványosan megváltoztatta a szoftverfejlesztést: egyre jobb minőségű kódot képes generálni, hibákat keres, teszteket ír, sőt akár komplett alkalmazások elkészítésében is segít.
De vajon azt jelenti ez, hogy nincs többé szükség fejlesztőkre? És van-e még értelme webfejlesztést tanulni?
A válaszhoz érdemes egy lépéssel hátrébb lépni, és megnézni, mi is valójában egy fejlesztő munkája.
A fejlesztő munkája nem csak a kódolás
Gyakori félreértés, hogy a fejlesztő legfontosabb feladata a kód megírása. Innen pedig valóban logikusnak tűnhet a következtetés: ha az AI már képes kódot írni, akkor a fejlesztő munkája is kiváltható.
Csakhogy a kód valójában nem a fejlesztés legfontosabb része, hanem inkább a fejlesztő munkájának eredménye.
A fejlesztő feladata a probléma megértése, a gondolkodás, a koncepcióalkotás, az architektúra megtervezése, a megfelelő technológiák kiválasztása és annak biztosítása, hogy az elkészült rendszer hosszú távon is működőképes és karbantartható legyen. Mi történne, ha ezt az egészet átadnánk az AI-nak? Nézzük meg ezt egy nem informatikai példával:
Átmennél-e egy olyan hídon, amelyre ki van írva:
„Ezt a hidat 100%-ban AI tervezte. Egy ember sem nézte át.”
Vagy felmennél egy olyan liftben a tizedik emeletre, amelyről ugyanez derül ki?
Valószínűleg nem szívesen bíznánk rá ilyen döntéseket kizárólag egy mesterséges intelligenciára. Ugyanez igaz a komoly szoftverrendszerekre is. Nem önmagában az a kérdés, hogy az AI képes-e megírni a szükséges kódot, hanem az, hogy valaki képes-e megtervezni, ellenőrizni és vállalni az egész rendszer működését.
Mire érdemes használni az AI-t?
Ez természetesen nem azt jelenti, hogy a fejlesztőknek nem érdemes használniuk az AI-t. Éppen ellenkezőleg.
A fejlesztésben rengeteg olyan feladat van, amely lényegében „lapátolós munka”, a fejlesztők maguk is „favágás” vagy „hegesztés” néven hivatkoznak ezekre a nem kreatív, monoton munkafolyamatokra. Most viszont, miután a fejlesztő kitalálta a nagyobb stratégiát, megtervezte az architektúrát és eldöntötte, hogyan kell felépíteni a rendszert, az AI nagyon hatékonyan tudja segíteni a konkrét megvalósítást.
Kódot írhat, teszteket készíthet, dokumentációt generálhat, segíthet a hibakeresésben vagy akár egy-egy komplexebb fejlesztési feladat megvalósításában is. Ezzel jelentősen felgyorsulhat a fejlesztés.
A fontos különbség az, hogy az AI nem veszi át a gondolkodást. A fejlesztő meghatározza, mit kell létrehozni, milyen elvek szerint működjön, majd az AI segítségével gyorsabban elkészíti a megvalósítást. A generált kódot azonban továbbra is embernek kell ellenőriznie. Vagy legalábbis kellene.
Mi történik, ha a gondolkodást is átadjuk az AI-nak?
A probléma akkor kezdődik, amikor a fejlesztő már nemcsak a megvalósítást, hanem a gondolkodást is az AI-ra bízza.
Képzeljünk el egy jól felépített kódbázist, amelyben egy komplex új funkciót kell létrehozni. A fejlesztő nem gondolja végig alaposan, hogyan illeszkedjen az új funkció a meglévő rendszerbe, hanem egyszerűen megkéri az AI-t:
„Csináld meg ezt.”
Az AI elkészíti a kódot. A funkció működik, a tesztek is átmennek, ezért első pillantásra minden rendben lévőnek tűnik.
Csakhogy közben a kód struktúrája egy kicsit rosszabb lett. Talán nem ott van egy funkció, ahol lennie kellene, vagy egy olyan megoldást választott az AI, amely rövid távon működik, hosszú távon azonban nehezen karbantartható.
Az első ilyen alkalom még nem okoz komoly problémát. Legfeljebb azt mondjuk: „Nem tökéletes, de működik, merge-öljük.”
A probléma az, hogy az AI a következő fejlesztéseknél már erre a kódra épít.
Ha pedig újra és újra rossz minták kerülnek a kódbázisba, azok egymásra épülnek. Egy idő után egyre nehezebb új funkciókat fejleszteni, furcsa hibák jelennek meg, és maga az AI is egyre nehezebben tud értelmesen dolgozni az általa korábban létrehozott, egyre kuszább rendszeren.
A problémák ráadásul nem feltétlenül azonnal jelentkeznek. Sokszor csak hosszabb távon, a rendszer karbantartása során válnak láthatóvá.
Az ilyen problémák nem csak elméletiek: egy rosszul felépített, AI által folyamatosan továbbfejlesztett kódbázisban már egy látszólag jelentéktelen módosítás is olyan hibát okozhat, amelyre a fejlesztő korábban nem is számított, és éppen ezért utána nagyon nehezen találja meg a hiba forrását.
Ezért különösen fontos, hogy ne csak azt nézzük, működik-e a generált kód, hanem azt is, hogy jó kód született-e.
Engineering mindset a kódolás helyett
Éppen ezért az AI korában még fontosabbá válik az úgynevezett engineering mindset.
Más szóval: nem egyszerűen kódolóra van szükség, hanem olyan fejlesztőre, aki rendszerben gondolkodik. Érti az architektúrát, képes felmérni egy döntés hosszú távú következményeit, ismeri a különböző technológiák működését, és meg tudja ítélni, hogy az AI által javasolt megoldás valóban megfelelő-e.
Ebben az új környezetben az AI akár a rendszer egyes „tégláinak” elkészítésében is jobb lehet egy átlagos fejlesztőnél. De valakinek továbbra is tudnia kell, milyen épületet akarunk létrehozni, hogyan legyen felépítve, és megfelelően illeszkednek-e egymáshoz a téglák.
Ezért nem feltétlenül az a fejlesztő kerül nehezebb helyzetbe, aki megtanulja használni az AI-t, hanem az, aki csak az AI által előállított kódra támaszkodik anélkül, hogy értené annak működését.
Miért fontos még mindig megtanulni programozni?
Felmerülhet a kérdés: ha az AI már képes kódot generálni, akkor miért kellene egyáltalán megtanulni programozni?
Hasonló kérdést korábban más technológiák megjelenésekor is feltehettünk.
Az okostelefonok kamerái például rengeteg beállítást automatikusan elvégeznek. Ettől azonban még nem lesz valakiből profi fotós. A tapasztalt fotós éppen azért tud jó képeket készíteni, mert érti, mi történik a háttérben, és tudja, mikor érdemes eltérni az automatikus beállításoktól.
Hasonló folyamat játszódott le a DJ-zésben is. A modern DJ-szoftverek képesek automatikusan kiszámítani a BPM-et, összeilleszteni a zenéket, sőt gyakorlatilag helyettünk is elvégezni a mixelés jelentős részét. Ettől azonban még nem lesz valakiből profi DJ.
Aki megtanulta a hagyományos technikákat, aki érti, mi történik a háttérben, az a modern eszközöket is sokkal tudatosabban tudja használni.
Az AI hasonló eszköz a fejlesztők számára. Nem feltétlenül az a cél, hogy minden kódsort kézzel írjunk meg. A cél az, hogy értsük, mit akarunk létrehozni, értsük a technológiát, és képesek legyünk megfelelően irányítani és ellenőrizni az AI munkáját.
Nagyobb szerep a jó fejlesztőknek?
Az AI fejlődése természetesen a fejlesztői munkát is megváltoztatja. Elképzelhető, hogy bizonyos feladatokhoz kevesebb fejlesztőre lesz szükség, hiszen egy fejlesztő AI-eszközökkel sokkal nagyobb mennyiségű munkát tud elvégezni.
Ez azonban nem jelenti azt, hogy a fejlesztői tudás értéktelenné válik.
Éppen ellenkezőleg: felértékelődhet az a tudás, amelyet az AI önmagában nem tud felelősen biztosítani. A rendszerben való gondolkodás, az architektúra-tervezés, a problémamegoldás, a technológiai döntések meghozatala és az elkészült megoldások ellenőrzése továbbra is olyan feladatok, amelyekhez valódi szakmai tudásra van szükség.
Ezért az AI korában sem feltétlenül az a kérdés, hogy „AI vagy fejlesztő?”
Sokkal inkább az, hogy mire képes egy olyan fejlesztő, aki a saját szakmai tudását az AI képességeivel együtt használja.
És ebből a szempontból a webfejlesztés megtanulása egy jól összerakott webfejlesztő tanfolyamon továbbra is hasznos és produktív lehet: nem pusztán a kódírás megtanulása miatt, hanem azért, mert segít megérteni, hogyan épül fel egy komplett szoftverrendszer, hogyan kapcsolódnak egymáshoz annak részei, és hogyan lehet ezeket az AI segítségével hatékonyan fejleszteni.
