Okos emberek megírják a kódsorokat, mindez kap egy kezelőfelületet, mások pedig gombokat nyomkodva, szövegeket beírva használják ezeket. Nagyon leegyszerűsítve így nézett ki a szoftverfejlesztés évtizedeken át, de a jövő sokkal szerteágazóbb ennél. Nézzük, merre halad a szoftverek (és fejlesztőik) útja!
◼︎ Egy szinttel feljebb: a fejlődést kell fejleszteni
Számos sztereotípia övezi a szoftverek íróit a kezdetek óta. Ezek alapján ők olyan, nagy tudású emberek, akiknek a fejében van minden kód és parancs, ezekből a nulláról tudnak felépíteni teljes alkalmazásokat, amelyeket aztán számítógépeken futtatható interfészekkel látnak el. Et voilà, már kész is vagyunk… Illetve, voltunk, mert mára egy sor új lehetőség jelent meg, amelyhez a szoftverfejlesztésben is alkalmazkodni kell. Egyrészt a felhasználási módok bővültek, hiszen már nemcsak PC-ken használjuk az elkészült alkalmazásokat, hanem tableten, mobilon, okoseszközökön, vagy akár autókban, tévékben és egy sor egyéb eszközön. Másrészt, ahogy már elvileg az iskolában sem adatokat kéne magolni, hanem a minket körülvevő információs ökoszisztéma felhasználását kell megtanulni, a szoftverfejlesztést sem kell kizárólag saját kútfőből megoldani.
Cikkünkben végigvesszük a jelenkor és a közeljövő legfontosabb és legérdekesebb trendjeit a mesterséges intelligencia bevetésétől a kvantum-számítástechnikáig, ezzel pedig esélyesen segítünk kialakítani egy újrafaragott képet a szoftverfejlesztőkről és munkájukról – egyben azt is megmutatva, hogy merre érdemes orientálódniuk azoknak, akik mostanában tanulnának ilyesmit, vagy már ebben az iparágban dolgoznak, de szeretnének naprakészek maradni.
Amikor a szoftver írja a szoftvert
Amikor 2022 végén publikussá vált a ChatGPT, hamarosan az érdeklődők elkezdték beszélgetésen túl sok egyébre is használni, és gyorsan kiderült, hogy az elérhető adatok felhasználásával a chatbot képes volt valamilyen szinten elvégezni programozási feladatokat is. Nem volt persze tökéletes – egyrészt, mert más területen sem az (még?), másrészt pedig, mert elsősorban nem erre találták ki –, de kiderült, hogy bizonyos rutinfeladatokat, automatizálható munkafázisokat a generatív mesterséges intelligencia igenis át tud venni a humán munkaerőtől a kódolásban is.
Amint az közismert, az MI-t már korábban is használták programozási feladatok támogatására, de a ChatGPT és társai által elindított új hullám minden eddiginél nagyobb figyelmet irányított a területre. Tehát nem kell csupán az OpenAI megoldására hagyatkozni: több éve elérhetők kifejezetten a forráskódok írását támogató MI-eszközök, amilyen a GitHub Copilot, vagy az Amazon CodeWhisperer.
Ezek, ha nem is írnak meg mindent helyettünk, de egyre több olyan feladatot vesznek át, amelyek egyrészt unalmasak, frusztrálóak és akár hibalehetőségeket is rejtenek. Az MI-eszközök például elemzik az általunk írt kódok kontextusát, és automatikusan felajánlanak kódrészleteket, ezzel gyorsabbá és hatékonyabbá téve a munkát. Olyan opciókat is felkínálhatnak, amelyek egy adott cél elérésére jobbak, mint amire mi magunk gondolnánk. Emellett segítenek a szintaktikai hibák, elírások kijavításában, amelyek a szoftverfejlesztői munka rejtett, időzített bombáinak számítanak.
Egyelőre a szoftver tehát még nem ír szoftvert, de egyre többet segít benne. Ahogy a Copilot neve is mutatja, a pilóta továbbra is a fejlesztő marad, de az MI-eszköz lesz a másodpilóta. Ez a megoldás például birtokolja a GitHub-on publikusan elérhető teljes forráskód-gyűjteményt és akár más nyílt forrásokból is tud okosodni, tehát lehetővé teszi, hogy ami már valahol létezik, azt nekünk ne kelljen újra megírni.
További felhősödés várható
A mai elvárások szerinti alkalmazásrendszereknek már nem a klasszikus három- vagy négyrétegű modelleknek, silószerű környezeteknek kell megfelelniük, hanem a felhő és a konténerizáció jelentette kihívásoknak és lehetőségeknek. A felhasználók egyre nagyobb hányada használ olyan szoftvereket, amelyek nem saját eszközein futnak, hanem felhőszolgáltatásként veszik igénybe azokat. Emellett az alkalmazások életciklusa is teljesen átalakult, már természetes elvárás, hogy az üzleti igényeket szinte azonnal kövesse le az IT az alkalmazások létrehozásával, testreszabásával és élesítésével. Ez olyan új technológiák és módszertanok alkalmazásával lehet biztosítani, mint a mikroszolgáltatásokra épülő alkalmazásfejlesztés, illetve a fejlesztés és üzemeltetés szoros együttműködését biztosító DevOps-elvek alkalmazása.
Ez olyan átalakulást hoz, amely után másképp kell tekinteni a szoftveres környezetekre. A felhőalapú platformoknál az erőforrások, a hagyományos szerverek a felhasználók számára láthatatlanná válnak, hiszen a felhő mint közmű biztosítja számukra ezeket az erőforrásokat. A modellt összefoglaló néven „serverless computingnak” hívjuk, mivel a hagyományos, „kézzelfogható” szervereket a felhő, a felhőplatform helyettesíti.
Az ilyen „cloud native” modellben máshogy kell az alkalmazásokat felépíteni, leginkább mikroszolgáltatásokból építkezve, valamint máshogy, más eszközökkel és módszerekkel működik a build folyamat, az elkészült kód telepítése, futtatása és az egész szoftverkörnyezet életciklus-kezelése, felügyelete. A DevOps- vagy SecOps-működés és módszerek azt jelentik, hogy a különböző, korábban elkülönülő területek egyre inkább és egyre szorosabban együttműködnek az alkalmazások teljes életciklusa során, a korábban megszokott határok nagy része elmosódik. A működés átalakulása azért is kritikus, mivel így lehet hatékonyan megfelelni az alkalmazásokkal szemben támasztott üzleti követelmények és üzleti, vállalati környezet igen gyors változásának.
Kódolás kód nélkül
Egyre több szakértő gondolja úgy, hogy a low code/no code (LC/NC) programozás az informatika legújabb forradalma. A kijelentés komolyságát mutatja, hogy a Gartner előrejelzése szerint 2025-ben az új applikációk 70 százalékát már low code vagy no code fejlesztéssel fogják létrehozni. De mit is jelent mindez és miért ekkora újítás?

Ahelyett, hogy nulláról írnánk meg mindent, mindkét modellben vizuális felületen kell összeállítani a programot olyan alapvető elemekből, amelyek megfeleltethetők a parancsoknak. A szoftver működését tehát olyan logikai lépésekbe kell rendezni, amelyeket a számítógép is képes értelmezni.
Ettől még persze mindez nem gyerekjáték, de a munka „piszkos” részét, a logikai elemek kódokká alakítását elvégzi helyettünk a fejlesztő platform, amely jó esetben megoldja az adatbázis-kezelést, a titkosítást, a felhasználók azonosítását, a kommunikációt a külső vagy felhő alapú szolgáltatásokkal, valamint a program méretezését és monitorozását is.
A low code és no code platformokra leginkább azért van egyre nagyobb szükség, mert időt és költséget takaríthatnak meg, valamint választ adhatnak a szektorban tapasztalható munkaerőhiányra is. De az is tény, hogy az LC/NC sem old meg mindent.
Egyrészt ne várjuk, hogy teljesen kiváltja a hagyományos módszereket, hiszen megannyi olyan igény lesz, amelyre azok specialitása, körülményei miatt saját kódot kell írni.
Másrészt komoly korlátai is vannak: nem lehet a végletekig alakítani, személyre szabni ezeket, nehezebb lekövetni a változásokat, biztonsági beállításokat. Az LC/NC tehát fontos, sokak szerint egyre fontosabb, de nem „eszi meg egészben” a programozók világát, csak harapdál belőle.
Mire jó a kvantumvilág?
Szintén új út lehet a szoftverfejlesztők előtt a kvantum-számítógépes technológia. Azt azonban már előre érdemes megjegyezni, hogy ez sem olyan terület, amely idővel lecseréli a hagyományos, bitekre-bájtokra épülő számítástechnikát, mert egyszerűen nem erre való. A kvantumszámítás célja olyan problémák megoldása, és feltevése, amelyekkel a klasszikus számítógépek nem, vagy csak nagyon lassan tudnak megbirkózni. Eredetileg fizikai rendszerek hatékony szimulálásához képzelték el, de jelenleg már az optimalizálás, kommunikáció, sőt még a gépi tanulás területén is jelentek meg kvantum programok.
A kvantumprogramozás még egészen gyerekcipőben jár: sok különböző, és utasítás-szintű nyelv létezik, amelyek segítségével többnyire kvantum-áramköröket lehet definiálni. Ezek tehát főként interpretált nyelvből kvantumáramkörre forduló szkriptek.
| Így változhat a szervezeti struktúra a szoftverfejlesztés új korában
A szoftverfejlesztés átalakulása természetesen kihathat arra is, hogyan változik a fejlesztők helyzete a vállalaton belül és milyen új feladatok állnak a HR-szakemberek, valamint a céges struktúrával foglalkozó vezetők előtt. Uniformizált megoldás viszont nincs: a szakértők szerint mindenekelőtt azt kell meghatározni, hogy a szervezet céljait melyik új típusú fejlesztői metódus szolgálja leginkább. Arra mindenesetre senki se számítson, hogy a mesterséges intelligencia teljesen átveheti a kódolási feladatokat: az MI bevezetését egyelőre inkább amolyan segéderőként lehet elképzelni, amely mellé még komoly emberi erőforrás szükséges. Az viszont tény, hogy olyan szakemberekre is szükség lesz, akik nem csak a konkrét programozásban jeleskednek, de értenek az MI betanításához, a vele való kommunikációhoz is. A no code/low code megközelítés sem okoz egyelőre teljes felfordulást: igaz ugyan, hogy ezzel akár olyan munkatársak is képesek szoftverek előállítására, akik alapvetően más részlegekben dolgoznak, de az így készült alkalmazások panel-alapú, nehezen testre szabható mivolta szintén inkább kiegészítést jelenthet a hagyományos szakértelem mellett. A felhő alapú fejlesztés, valamint a szoftver- és platformszolgáltatások erősödése viszont jelentheti azt, hogy egyes szervezetek részben vagy akár teljesen kiszervezhetik a fejlesztési feladatokat, és csak annyi szakembert tartanak meg házon belül, amennyi a szolgáltatások és a saját igények összehangolásához szükséges. |
Ilyen többek között az IBM által fejlesztett qiskit és open qasm, a Google műhelyéből kikerülő cirq, a Microsoft-féle Q#, az Amazon kvantumfelhő-szolgáltatása, a Braket, de akadnak egyetemi fejlesztések is, mint például az ETH Zürich által kiadott Silq. A kvantum-számítástechnika tehát jelenleg még a helyét keresi, óriási technológiai fejlődés előtt áll, az alkalmazási területeit is csak most kezdjük igazán felfedezni, de a vállalkozó kedvűek előtt már most komoly lehetőségeket tartogat.
Valóság turbó fokozaton
A kiterjesztett valóság (augmented reality, AR) dinamikusan fejlődő terület, amelynek segítségével a fizikai világ valós időben kibővíthető számítógép által generált virtuális elemekkel, azt az illúziót keltve, hogy ezek a virtuális elemek beleolvadnak a valós környezetbe. Bár a technológia (a virtuális valósággal együtt) a multimédiás és játékos felhasználás irányából indult, egyre több lehetőséget ad az oktatástól a mérnöki feladatokon át a távgyógyításig.
A megjelenítés és a virtuális, valamint valós elemek összehangolása különleges fejlesztési szemléletet kíván. A hagyományos programnyelvek AR-irányú alkalmazásához speciális fejlesztőeszközök állnak rendelkezésre, ilyen például az ARToolKit, a NyARToolKit, a Goblin XNA, valamint a FLARToolKit és FLARManager. Mobil alkalmazásokhoz is találni ilyeneket, többek között ilyen az AndAR és a QualcommSDK.
Az AR-eszközökre fejlesztők számára a metaverzumok megjelenése is jelenthet új irányokat, bár tény, hogy a néhány éve nagy csinnadrattával felvezetett technológia egyelőre nem hozott valóban divatossá váló eredményeket, de a hírek szerint Mark Zuckerberg még mindig nem adta fel, hogy beléptesse a világot a Mátrixba.
Együtt könnyebb?
A kollaboratív szoftverek szakemberek egy csoportját segítik a közös feladatok elvégzésében, ami tipikusan magában foglalja a megosztott dokumentumok megjelenítését és szerkesztését. Bár a „dokumentum” szó szöveges tartalmat sejtethet, a kollaboratív szerkesztés témája ennél jóval többre terjed ki. Szerkeszthetünk megosztva grafikus felületet, diagramot, vagy akár építészeti, akár gépészeti CAD-modellt.
A közösen fejlesztett szoftverek sok előnyt hozhatnak, hiszen a résztvevők tudása összeadódik, együtt dolgozhatnak a speciális területekre szakosodott munkatársak, a folyamat gyorsítható, és könnyebb a felelősségi területek meghatározása, nyomon követése is. Problémát jelenthet azonban többek között a gyorsan ágas-bogassá váló kódbázis, ami ellen verziókezelőket is használhatunk, de egyre több olyan megoldás érhető el, amelyben hatékonyabb és biztonságosabb a „közös ló megülése”.
Ma minden bizonnyal a GitHub a legnépszerűbb, általános kollaborációs fejlesztői platform, amely egyszerű interfésszel a kezdőknek is átlátható, és támogatja a valós idejű együttműködést is. Hasonló a GitLab és a Bitbucket, amelyek szintén hatékony közös munkát tesznek lehetővé.
A kollaboratív fejlesztés abban is segítséget nyújt, hogy akár nagy távolságokban, különböző időzónákban tartózkodó szakemberek alkossanak egy csapatot, ami új távlatokat nyithat abban, hogyan állhat össze egy igazán ütőképes fejlesztőgárda.
Magad, uram…

A nagy nyelvi modellek (LLM-ek) egyik előnye, hogy saját eredményességüket képesek javítani – a ChatGPT „hallucinációira” is válaszolhatunk úgy, hogy válasza bizony nem fedi a valóságot, nézzen utána jobban –, de ez ismét csak hétköznapi leképezése az öngyógyítás folyamatának.
Egy olyan szoftver, amely képes saját működésében felfedezni és akár emberi beavatkozás nélkül kijavítani a hibákat, sokféle előnnyel jár. Növeli a megbízhatóságot, csökkenti a kapcsolódó költségeket, jobban alkalmazkodik a változásokhoz, javítja a biztonságot.
Nyilván az öngyógyítás sem megy magától: olyan programozókra van szükség, akik már nem a hibák javításával foglalkoznak, hanem a kódot tanítják gyógyulni. Újfajta szemléletet igényel ez is, azonban a jól elvégzett munka eredménye az, hogy nem folyamatos bugvadászattal, hanem preventív, előrelátó tervezéssel a hibák előtt járunk.
Adatkapcsolat felső fokon
Minden mindennel összefügg – valamint lassan mindenki mindenkivel is. Az információs társadalom egyik mozgatórugója, hogy szervezetek adatokat biztosítanak külső szereplőknek, amelyek aztán ezekre épülve további felhasználási módokat, szolgáltatásokat hoznak létre. Ezek hatékony csatolásához szükségesek az alkalmazásfejlesztési interfészek, röviden API-k, amelyek jelentősége erősen megnőtt az elmúlt évtizedben. A tradicionálisabb API-technológiák (például a SOAP vagy a REST) mellett az elmúlt években megjelent néhány új módszertan, amelyek nagyon gyorsan elterjedtek az iparban.
Ilyen a Meta által fejlesztett GraphQL. Jól látható épp a Meta és a Facebook gyakorlatából, mekkora lehetőségek rejlenek a mindent összekapcsoló API-k használatában: manapság a felhasználók egy része már az internettel egyenrangúként kezeli a Facebookot, ki sem mozdul onnan hírolvasás, vásárlás, játék esetén sem. Az „adatkapcsolt” üzlet folyamatosan fejlődik, a hatékony API-fejlesztés szintén keresett terület marad.
A programozó nem vész el, csak átalakul
A fenti példákból is jól látható, hogy a szoftverfejlesztés a legújabb technológiák, önfejlesztő és öngyógyító újdonságok ellenére (pontosabban ezek mellett) is köszöni, jól van, és a jövőben sem kell új munkát keresnie azoknak, akik ebben a tevékenységi körben dolgoznak.
Az viszont tény, hogy a szoftverek készítése sokfelé ágazik, specializálódik, akár a felhasználási módokat, akár a fejlesztés folyamatát tekintjük. Az élethosszig tartó tanulás tehát itt sem maradhat el, hogy aztán mesterséges intelligenciával a zsebben, de mégis saját tudás mellett fejleszthessünk a jövőnek.









