A programozóktól meg kell szabadulni
Szoftver mindenhez kell...
... és egyre inkább. Ez nem újdonság, az ipar szereplőinek régóta világos ez a trend. Ezért vagyok például annak szószólója, hogy a gyerekeket minél fiatalabb korban ismertessük meg az informatika mélységeivel, mert aki lemarad, kimarad: aki 6 évesen kezdi, pont 6 év előnnyel indul ahhoz képest, mint aki 12 évesen (és valakinek még az is meredek, hogy 12 évesen odaengedje az utódot a géphez!). Másrészt a tehetségek még időben kiderülnek, így ha az látszik, hogy ebben lesz a jövője, behozhatatlan előnyre tehet szert. A többiek pedig egyszerűen csak képesek lesznek lépést tartani a trenddel.
Fontos mellékszál: a programozó nem szoftverfejlesztő. A programozó kódot ír, ami teljesíti azokat a kritériumokat, amiket feladatként kapott. A szoftverfejlesztő munkájának egy része a kód írása, de a szoftver több aspektusára is figyelemmel tekint: biztonság, használhatóság, teljesítmény, skálázhatóság, karbantarthatóság, és még sorolhatnám - aminek a megfelelő feltételeit beépíti a kódjába.
A programozóktól meg kell szabadulni
Amikor a COVID-19 megérkezett 2020 márciusában, elég sok paradigmaváltásnak adott lehetőséget. Ott van például a távmunka/home office intézménye, aminek a folymatát sokszorosan meglendítette, és bár csökkenni látszik, szerencsére meghatározó része lett a helyfüggetlenül végezhető munkák körében.
Egy másik ötlet is megpróbált (ismét) felülni az események hullámára, mégpedig a low-code és no-code (LC/NC) elgondolások, amik lehetővé tennék egyszerű célszoftverek létrehozását költséges szoftverfejlesztői erőforrás nélkül. A mozgalom egyébként már több, mint 40 évre tekint vissza, sok próbálkozás, megoldás, manapság is használatos LC/NC eszköz létezik, melyet néhányan úgy használunk, hogy észre sem vesszük. Az áttörés még nem látszik annyira világosan, de a lényeg a célja: vonjuk ki a programozókat a képletből.
Bele is futottam annak idején egy interjúba egy NC/LC cég képviselőjével, aki percekig fejtegette, hogy a szofveripart sokkal jobban automatizálni kell, hiszen még mindig nélkülözhetetlenek benne az emberi erőforrások és ez így nincs jól.
Lássuk, hogy mit automatizáltunk eddig, mi az, ami még mindig kevés!
A számítógépek csak gépi kódot értenek, azokkal kell őket parancsolni. A gépi kód viszont nagyon nyers, nehéz ilyesmit közvetlenül létrehozni, ennek könnyítésére találták ki például az assembly programnyelvet. Minden gépi kódnak van egy megfelelő, ember által is olvasható változata, amiket egymás után írva egy fordítóprogram olyan parancsokká alakít, amit már a hardver is fel tud dolgozni. Tehát automatizáltuk a szöveges programok gépi kóddá való fordítását.
Ha valaki ismeri az assemblyt, tudja, hogy túl gyorsan abban nem lehet komplex szoftvereket létrehozni: a parancssorok gyakran ismétlődnek, sok hozzáadott gondolkodásra van szükség, hogy abból jó szoftver szülessen. Erre találták ki a magasabb szintű nyelveket, mint pl. a C, C++, Rust, stb. Ezekben sokkal egyszerűbben lehet a kódot szervezni, sok hibától megvédenek a beépített nyelvi eszközök. Egy Rust fordítóprogram rengeteg segítséget ad például ahhpz, hogy a lehető legkevesebb hibát kövessük el programozás közben. Automatizáltuk a hibadetektálást és a kódoptimalizálást.
Ha arról beszélünk, hogy világszinten használt alkalmazásokat kell üzemeltetni és fejleszteni, akkor nem gondolkodhatunk kisebben, mint világszintű felhő-szolgáltatókban. Igen, ennek a bekezdésnek is az lesz a vége, hogy automatizáltuk, hiszen nem ül egy operátor minden egyes gépigény feladásának végén, hogy beállítsa és elindítsa, amikor szükség van rá.
Az automatizálás az informatikában nemcsak példa nélküli, de olyan mértékű, hogy ha felraknánk egy grafikonra, akkor minden más terület legfeljebb kerekítési hibának látszana.
Komplex problémákhoz komplex gondolkodás kell
Ha a gépi kódot és az NC/LC eszközöket feltesszük egy számegyenesre aszerint, hogy mennyit kell programozni hozzá, akkor a két végén foglalnának helyet. Természetesen van a kettő között egy szép skála és bevallom, lelki szemeim előtt egy haranggörbét látok kirajzolódni a használati gyakoriság alapján. Fontos viszont, hogy ez csak két dimenziója a szoftverek létrehozásának. Az üzleti folyamatok bonyolultságának leképzése egy harmadik dimenzió, ahol pedig fordított az eloszlás: minél kevesebbet lehet programozni egy adott eszközzel, annál kevesebb egyedi üzleti igényt lehet lefedni vele.
Csavarhatjuk ameddig akarjuk, de a végén az fog kiesni az egyenletből, hogy ha a követelmények bonyolultak, akkor kell valaki, aki ezt a bonyolultságot képes átültetni akár egy LC/NC eszközbe, ehhez pedig pontosan olyan komplex és fejlett gondolkodás szükséges, mint a szoftverfejlesztéshez.
Informatikushiány van
Ez a kijelentés önmagában hazugság, illetve nagyon igényli a pontosítást: olcsó, tapasztalt, bármire képes informatikusokból van hiány. Ezt figyeltem meg akkor is, amikor évekkel ezelőtt állást kerestem (15 interjún voltam egy hónap alatt és háromszor ennyire pályáztam) és azóta sem változott a benyomásom a piacról.
Ami ebből nagyon fontos: tapasztalt. A jelenlegi junior IT-seket nem irigylem, nagyon nehéz dolguk van: nem igazán keresik őket, mert a beléjük fektetett munka és pénz nem biztos, hogy megtérül. Ezt a kockázatot igyekeznek minimalizálni a munkaadók és ezért csak a több év tapasztalattal rendelkezőket keresik. Azt hagyják elegánsan figyelmen kívül - a rövidtávú célokat előtérbe helyezve -, hogy a karrierútban nincsenek rövidítések, mindenki juniorként kezdi, a senioroknak valakikből lenniük kell. Ha lehetőséget sem kapnak, akkor elég durván nehezített pályán kell felküzdeniük magukat, ahol a küzdelem gyakran az elhivatottság rovására mehet, sokan elhagyják a pályát már az elején vagy kiégnek nagyon korán.
És mindenki programozóként kezdi, akiből megfelelő körülmények és motiváció hatására szoftverfejlesztő válhat.
Most pedig jön az AI
Az elmúlt hetekben a ChatGPT elég komolyan a hírfolyamomba került. Kritikusan állok a jelenséghez, mert nagyon távolról ugyan, de látni vélem a témában rejlő mélységet, aminek maximum a felszínét kapargatjuk éppen. Ennek ellenére lényegében minden második poszt arról szól, hogy végre sikerülhet automatizálni a szoftverfejlesztést!
Nem kell többé programozó, meg lehet tőlük szabadulni, eljő a kánaán.
Az ignorancia kimondottan dühítő ezekben a trendekben: ha nem kell programozó, akikből végül nem lesz szoftverfejlesztő, még inkább látszani fog a hiány, mert nem többen, hanem kevesebben lesznek a tapasztalt szakemberek. A másik, ami megintcsak a szőnyeg alá kerül: az AI-val szoftvert készíttetni pontosan olyan gondolkodásra van szükség, mint egy szoftverfejlesztőnek van. A döntéshozók nemcsak lábonlövik magukat, de egyszerre mindkét lábon.
Mivel szoftverfejlesztő vagyok, arra sarkallnak ezek a felütések, hogy elgondolkodjak az okokon. Miért akar a társadalom minden áron megszabadulni tőlünk?