Itt jársz most: Kezdőlap > Alkalmazásfejlesztés > A szoftverfejlesztés mint szakma a vesztébe rohan

Szűrő megjelenítése

A szoftverfejlesztés mint szakma a vesztébe rohan

Ha nem volna egyértelmű, az AI térhódításáról és túlhasználásáról van szó. Ez egy nehéz téma, és már előre elnézést is kérek, ha úgy érződne, hogy összeszedetlen gondolatfoszlányokat dobáltam csupán egymásután, valószínűleg nem lesz alaptalan a vád. :) Az utóbbi nagyjából egy-másfél évben történtek azonban aggasztanak, és úgy éreztem, jól fog esni, ha az emiatt megszületett gondolataimat "papírra vetem". Mindenekelőtt szeretném hangsúlyozni, hogy bár alapvetően nem vagyok a technológiai fejlődés ellen (épp ellenkezőleg, úgy érzem a legtöbb esetben szükség is van a fejlődésre, hasznos és elengedhetetlen), de az AI esetén szkeptikus maradtam a mai napig. Nem fogok hazudni, én is rendszeresen használok AI-t, kisebb kódrészletek, adatmodellek, tipikusan boilerplate-nek minősülő szegmensek generálására, illetve mint egy szteroidokon élő Google keresőmotort - és ezekre tökéletes is, szinte bármelyik modell. Proof of Concept szinten megpróbálkoztam saját agentic flow fejlesztésével is, a korábbi cikkeimben részletesen írtam a tapasztalataimról. Ha ezen a ponton megállna a történet, abszolút el tudnám fogadni a kijelentést, hogy "az AI velünk van és velünk is marad", mert valóban hasznos kiegészítése a mindennapokban használt eszközkészletünknek, méghozzá nem csak szoftverfejlesztésben, hanem nagyon sok más szakmában is. De sajnos a kép ennél sokkal árnyaltabb, egyenesen sötét jövőt vázol fel.

Mindannyian rendszeresen halljuk, olvassuk, hogy épp hogyan és milyen mértékben forgatja fel a világot az AI. Tömeges elbocsájtások, megszűnő munkakörök, a kreatív munkafolyamatok sárba tiprása, zenék, filmek, festmények, könyvek szisztematikus "ellopása", vagy utóbbiak esetén akár elpusztítása is (hogy modelleket tanítsanak fel belőlük). És mindezek olyan nagyvállalatok kijelentéseire építve, amik konkrétan már egész országokat meg tudnának venni az AI-ból összeharácsolt pénzükön (ami sok esetben valószínűleg egyébként csak a tőzsdei felértékelésekben látszanak, meglepne, ha valódi pénz lenne mögöttük, de ehhez nem értek, szóval inkább nem mennék bele). Ezek a problémák pedig nem légből kapott mendemondák, hanem tények, bármilyen hírforrást is nézünk, mindenhol és folyamatosan ugyanazt látjuk, halljuk. Na meg érezzük a saját bőrünkön, ha más nem a munkaerőpiac már aktívan jelenlevő összeomlásából, és a tech termékek árának nevetséges(-en abszurd) felrobbanásából.

Mindeközben már olyan híreket is olvashatunk, hogy az AI tönkreteszi majd az egész társadalmat meg végül elpusztítja az emberiséget, ezért lassítani kellene az AI modellek fejlesztését, különben baj lesz belőle, méghozzá nagyon hamar. Aztán jön egy bizonyos nagyon értelmes vezető hogy kijelentse, nem kell semmilyen védvonal meg lassítás, csak egy nagyon okos vezető, mint ő maga, és akkor nem lesz baj, mire még az AI-okat vezető nagyvállalatok is tovább pánikolnak. Mindez szerintem egy gyönyörű színjáték, ami pánikkeltésen kívül semmi másra nem jó. Mert csak gondoljunk bele, ha figyelemmel követtük az AI modellek fejlődését, az utóbbi egy évben nem érződik akkora fejlődés, mint az első publikusan elérhető chatbot (a ChatGPT) megjelenése óta. Az elején tényleg minden modell minden új verziója szignifikáns javulást mutatott, mind pontosság, mind teljesítmény szempontjából, mostanság érzésre inkább már csak csiszolgatják, optimalizálják a modelleket, de szignifikáns fejlődés már nincs. Véleményem szerint ez annak "köszönhető", hogy kezdjük elérni a LLM matematikai alapjainak határait - hisz akárhogy is nézzük, az LLM egy statisztikai modell és semmi több. Tehát igazából már nem is várható jelentős fejlődés, nem lesz az LLM-ekből "szuper-intelligencia", mert a mögötte levő technológia határait feszegetjük már így is. Ha azonban ezt az azokat fejlesztő nagyvállalatok kijelentenék, az rájuk (és egyébként most már a világgazdaságra nézve is) katasztrofális eredménnyel járna. Ez így viszont csupán egy nagyon ügyes szemfényvesztés, ami csak azért tud működni, mert az emberiség már kitermelt elképzelhetetlenül sok adatot az LLM-ek számára.

És pontosan itt kezdődnek a problémák. Az LLM-ek használatából adódó irány ugyanis azt fogja eredményezni, hogy megszűnik az adat-utánpótlás. Bár képesek meglévő adatok és felismert minták, összefüggések alapján új dolgokat előállítani, valójában a meglévő adatok korlátain túllépni nem tudnak. Nagyjából olyan ez, mintha lenne egy hatalmas zsáknyi Lego építőkockánk. Szinte bármit meg tudunk építeni belőle, egészen addig, amíg egy olyan dolgot nem próbálunk, ami korábban nem létezett, így soha senki nem próbálta megépíteni, tehát nem létezik hozzá egy megfelelő minta. A folyamatos technikai fejlődés okozta állandó változások és bővülések igénye, valamint az LLM-ek működési elve egymással éles ellentétben állnak. Hogy egy egyszerű és kicsit buta példával éljek (nyilván saját szakmámból), 15 évvel ezelőtt mindenki jól elvolt az úgynevezett SOAP protokoll használatával, ma meg már csak a lusta nagyvállalatok használják, akik nem hajlandóak áttérni a sokkal modernebb kommunikációs protokollok bármelyikére, mint a REST, GraphQL, gRPC, websocketek, stb. Rugalmasabbak, egyszerűbb a karbantartásuk, (jobban) ki tudnak szolgálni specifikus feladatokat. Ha 15 éve léteztek volna LLM-ek és mindenki generáltatta volna a kódbázisát már akkor is, vajon még mindig SOAP protokollal küszködnénk, mert az LLM-ek csak azt ismernék? Vajon ha folytatjuk a kódbázis átgondolatlan generálását ma, 15 év múlva még mindig az említett protokollok limitációi fognak fejfájást okozni? Aligha gondolnám, hogy pusztán a jelenleg meglévő mintákra alapozva fenn tudjuk a szakma progresszív fejlődését tartani, így viszont lassan de határozottan repedezni kezdenek majd a ma használt szoftverplatformok alappillérei.

Számomra természetesen a legfájóbb pontja az "AI-forradalomnak" a szoftverfejlesztésben és általánosságban az IT-ben zajló átalakulás. A manuális kódírás háttérbe szorulása, sőt elértéktelenedése és ahogy az AI-t istenítő fejlesztők lenézik, megvetik a manuális fejlesztőket, sokunk számára egy olyan "élmény", amit nem szerettünk volna soha megtapasztalni és emiatt már most látszanak az első jelei annak, hogy sokan pályát fognak (fogunk) váltani. A korábbi vélekedés (és gyakorlat), miszerint néhány évente érdemes munkahelyet váltani annak érdekében, hogy minél szélesebb körét ismerjük meg az aktuálisan használt technológiáknak, gyakorlatilag eltűnt az állandó leépítési hullámok, a munkaerő-felvétel általános befagyasztása és persze amiatt, hogy már szinte csak az AI-ismeret az elvárás. (Tudom, ez utóbbi enyhe költői túlzás, de amiket hallok volt kollégáktól, és a szakmában dolgozó ismerősöktől, annyira nem áll távol a valóságtól.) Bár a senior és afölötti fejlesztőket még úgy-ahogy keresik (mert hát persze amikor beüt az AI-okozta baj, akkor kell valaki aki hatékonyan és gyorsan el tudja takarítani...), a junior/medior fejlesztők iránti kereslet közel nulla. Az oka? Természetesen az, hogy "egy Claude előfizetés olcsóbb, mint egy junior, mégis könnyedén hozza egy junior szintjét". Valahogy a gyakran közgazdászokból meg pénzügyi szakemberekből cégvezetővé előlépő emberek nagyon könnyen feledkeznek meg a "befektetés" fogalmáról, hiszen a junior/medior fejlesztők alkalmazása nem csak egy pénz-égető hóbort, hanem belőlük lesznek a seniorok. Gyakorlatilag ez olyan, mintha az orvostanhallgatóktól azt várnánk, hogy rögtön ők legyenek a következő főorvosok, a rezidensi éveiket kihagyva. Teljesen abszurd gyakorlat, és ha a vezetők arra próbálnak alapozni, hogy pár éven belül már úgysem lesz szükség még a senior fejlesztőkre sem, szóval minek kinevelni egy új réteget, annak valószínűleg katasztrofális következményei lesznek.

Eleve borzasztó hozzáállás az, hogy már csak gyorsan kell szállítani, nem kell a minőséggel foglalkozni. Nem kell a clean code irányelveket alkalmazni, sem tervezési mintákat, mert a kódot úgyis AI írja és az fogja olvasni is (karbantartani, bővíteni), a lefordított gépi kódban meg mindegy. Szép gondolatok, csak túl sok sebből vérzik. Az AI még mindig megbízhatatlan, viselkedéséből adódóan az általa végrehajtott lépések, műveletek, közel megjósolhatatlanok. Elég egy oda nem illő szó a kontextusban és felgyújtja a kódbázist. A clean code irányelvek és a tervezési minták eleve nem egyszerűen csak arról szólnak, hogy szép, jól olvasható kódot írjunk, hanem hogy könnyen értelmezhető, jól karbantartható, hosszútávon is életképes és optimális kód hagyja el a fejlesztői környezetet. Eleve, ezek nem külön rétegei a kódnak, hanem a kód szerves részét képezik, egy tapasztalt fejlesztő (de egyébként junior is) készség szinten (mondhatni zsigerből) alkalmazza a kódra már annak megírása közben. Csak hogy egy példával éljek, több tervezési minta is a kód duplikáció elkerülése érdekében született, pont amit az AI előszeretettel tesz meg, mivel nagyobb projektek teljes kódbázisának kontextusban tartása szinte lehetetlen a mai modellekkel. A duplikált kód azonban nem csak egy "code smell", hanem a bugok melegágya is egyben. A clean code irányelvek között pedig tény, hogy sok elég szöszölős is van, de ezek mindegyike statikus kódanalízissel orvosolható, a legtöbb mai IDE pedig beépített támogatást nyújt azok javítására. Így mindezek valójában nem lassítanak a fejlesztési fázison, a termék karbantartási életciklusában viszont felbecsülhetetlen értéket biztosítanak.

De a kód maga egyébként szerintem soha nem a szoftverfejlesztés igazi problémái közé tartozott. A kód csak egy eszköz a termék elkészítésére, ahogy egy asztalosnak a fa és a szerszámai, egy sebésznek a szike, egy zenésznek a hangszere, és még sorolhatnám. A mögötte levő tudás és tapasztalat az, ami a szakma mesterévé tesz valakit. Jelenleg a szoftverfejlesztés egy olyan pályára állt, ahol a valós szakmai tudást olyan értéktelen maszlaggá próbálják degradálni, ami más szakmákat ellehetetlenítene. Az lett a lényeg, hogy minél hamarabb elkészüljön a termék, mindegy a minőség, mindegy mennyire karbantartható a kód, úgyis az az elképzelés, hogy az egész kódbázis nagyon hamar a kukába kerül és majd újraírjuk. Valahogy mintha mindenki elfelejtkezett volna arról, hogy egy tipikus szoftverprojekt nem így működik, nem fél évig fogják használni és ha már "belakták" a rendszert, azt újraírni az élesben futó előző verzióval párhuzamosan... Sok sikert. De ugyanúgy elfeledkeztek az úgynevezett nem-funkcionális követelményekről is, mint a biztonság, teljesítmény vagy a megbízhatóság. A komolyabb, drágább modellek még csak-csak gondolnak ezekre, de pontos specifikációs nélkül kétséges az eredmény. Persze, lehet mondani, hogy ezért kell tapasztalt fejlesztőként az AI kezét fogni és jól specifikálni neki, hogy mit csináljon meg, de mint az imént már említettem, most még vannak senior fejlesztők. Mi lesz 10 év múlva? A mostani, akár kivételesen tehetséges juniorok is (tisztelet a kivételnek) sajnos hamarabb jutnak el arra a pontra, hogy megterveztetik, majd megíratják a változtatást AI-jal, mint hogy elgondolkodjanak rajta és megpróbálják "összeszenvedni" a megoldást - mentségükre szóljon, sokszor más lehetőségük nincs is a nevetséges határidők miatt. De így belőlük hogyan lesznek tapasztalt fejlesztők? A tapasztalatot nem az egyetem adja, hanem azok a szakmai élmények, amikor órákat ül az ember a kód felett, próbálva kitalálni egy teljesen értelmetlennek tűnő probléma okát. Mindemellett általában, akik a leghangosabban pártolják az AI-t, a legnagyobb szószólói az "agentic coding"-nak, azok szokták legyártatni a kódot AI-jal, majd egy másikkal átnézetni (mert egy megbízhatatlan AI-nál két megbízhatatlan AI sokkal jobb, nem?), aztán mehet a változtatás élesbe, mert mi baj történhet. A követelmények gondos áttekintése, az alapos tervezés, a kivitelezés felügyelete a teljes fejlesztési fázis alatt, a még alaposabb tesztelés, majd a körültekintő üzemeltetés mind-mind kritikus lépései egy szoftver életciklusának, és nem, nem a saját szakmai megelégedettségünk érdekében, hanem az ügyfélében. Nyilván az üzleti szoftvereket szinte egyetlen esetben sem magunknak készítjük, hanem egy ügyfél megrendelésére, de szerintem bátran kijelenthetem minden hasonlóan gondolkodó kollégám nevében, hogy az igazi szakmai elismerés egy elégedett ügyfél, aki később is visszatér majd új tervekkel, új ötletekkel, mert bízik bennünk. Ilyen szintű bizalmat felépíteni AI-jal nem lehet, persze, ezt jó lenne, ha az ügyfelek is belátnák.

De ha nem a kód, akkor mi lett volna a megoldandó probléma? Szerintem a probléma sokkal inkább rejlik a projektvezetés részleteiben, elsősorban a követelmények megállapításában. Sokszor az érződik elvárásnak, hogy a fejlesztő teljes egészében értse az ügyfél üzleti működését, bármilyen területről is származzon az. De pénzügyet, biztosítást, kereskedelmet, igazából bármit, amit egy szoftverfejlesztő nem tanult, hogyan várják el, hogy ismerjük? Mi szoftverfejlesztők sem várjuk el, hogy az ügyfél ismerje a szoftverek belső működését, a fejlesztés folyamatát. A két oldal közé nem véletlenül ékelődnek be például az üzleti analitikusok és projektvezetők, de őszintén szólva már nem vagyok biztos benne, hogy léteznek még olyanok... Mellette, amikor nagy nehezen eljut a két oldal egy közös nyelvre, és feszes kétirányú kommunikációra lenne szükség annak érdekében, hogy a projekt sínen legyen, az ügyfél oldali képviselet eltűnik, lehetetlen elérni őket vagy épp vezetői döntésekre vár, akár mindkét oldal. Gyakran hetekig megáll a fejlesztési folyamat, majd amikor már kritikussá válik a termék bevezetése, akkor minden sürgősen kell. Persze ilyenkor a fejlesztőcsapat is kapkodni kezd, jön a túlórázás, meg az értelmetlen vészhelyzeti-megbeszélések. Az emberek kimerülnek, kiégnek, a termék minősége zuhanórepülésbe áll. Még azt sem mondom, hogy az ügyfél oldalon nem ugyanezt érzik a kapcsolattartó emberek, hiszen tipikusan ők is hasonló szinten vannak a hierarchiában, mint a fejlesztőcsapat. Az egész végén a szemrehányást persze a fejlesztőcsapat kapja, a termék megkésett bevezetése vagy bukása a fejlesztőcsapat hibája lesz. Én egészen biztos vagyok benne, hogy a mai fejlesztői környezetekkel, fejlesztői eszközökkel, keretrendszerekkel illetve a programozási nyelvek mögött álló közösséggel lényegesen gyorsabban lehet(ne) dolgozni, még AI nélkül is, és a megoldandó probléma sokkal inkább az ügyfél és a fejlesztőcsapat közti tudásátadás (az üzleti területben járatos emberek bevonásával, akik "konyhanyelven" el tudják magyarázni a követelményeket), az általános kommunikáció javítása, és az üzleti döntések gyorsabb meghozása lenne. Ezzel szemben az AI teremtett egy mondvacsinált problémát (miszerint maga a fejlesztési folyamat lassú a kódírás miatt), majd rögtön adott rá egy megkérdőjelezhető, nem az ígéretekhez mérten hatékony, és új, súlyosabb problémákat létrehozó, de a hozzá nem értők (gyakorlatilag a szoftverfejlesztőcégek vezetői) számára világmegváltónak látszó "megoldást".

Szóval, itt tart most a szakma. Vannak sokan, akik üdvözlik a változást, vagyunk sokan, akik, nos, félünk tőle? Túl gyorsnak tartjuk? Túl radikálisnak? Talán csak nem érezzük magunkénak, pusztán mert szerettük, amit csináltunk. Én magamat ez utóbbi csoportba sorolnám, számomra jó érzés egy új rendszer megtervezése, implementálása majd beüzemelése. Aztán jól esik azt hallani, hogy mennyiben segíti az ügyfél üzletének működését és hogy mennyire elégedettek. Ennek most úgy tűnik, vége, vagy legalábbis radikálisan megváltozik és aligha van már visszaút. Persze a változást üdvözlők között megjelentek a kárörvendők is, még nehezebbé téve a helyzet elfogadását. Hallottam olyan megjegyzést is az AI-átalakulás körüli visszhangokra, hogy mi szoftverfejlesztők "már átmentünk a gyász fázisain". Amit sokan talán nem értenek, hogy bár nyilván hazugság lenne azt mondani, hogy nem a pénzért csináljuk (mindenki pénzért dolgozik, fölösleges bármi mást állítani), de sokunk számára a szoftverfejlesztés nem csak egy szakma, hanem egy hivatás, egy életút, és egy izgalmas hobbi is mellette, amit egyszerűen szívesen végzünk. Egy rendszer megtervezése, majd annak elkészítése és beüzemelése sokunk számára ugyanúgy alkotásnak minősül, mint egy festmény vagy zenemű elkészítése. Szóval igen, gyászolunk, gyászoljuk azt az időszakot, amikor számított valamit a munkánk, gyászoljuk azt az időszakot, amikor a szakma minden nehézsége ellenére is örömmel ültünk le a billentyűzet elé mindennap, hogy valami újat hozzunk létre, valami maradandót alkossunk, azzal valaki másnak segítsünk. Gyászoljuk azt, hogy mindez már a múlté. Aki ezen csak nevetni és gúnyolódni tud, a szakma közelében sem volna helye.

Ami engem illet, továbbra is szeretnék szállítani a korábbiakhoz hasonló cikkeket, mindazokról az érdekes problémákról, amikkel találkozom nap-mint-nap. Számomra a szoftverfejlesztés továbbra is egy olyan időtöltés marad, amit szívesen végzek, akár hobbi, akár munka céljából. Még ha utóbbi jelentősen meg is fog változni, akár annyira, hogy végül már nem fogom tudni magaménak érezni ezt a szakmát, akkor is valamilyen formában folytatni fogom.

AI
Kommentek

Komment írásához jelentkezz be
Bejelentkezés

Még senki nem szólt hozzá ehhez a bejegyzéshez.