Szoftverfejlesztés
„A…B…C…D…E…..Z – ebből kell kihozni mindent!” – szólt valaha a híres bezáratott napilap óriásplakátja. „Fenéket. 0, 1. Ebből.” – szól a bitbuheráló pólója
Vannak kisgyerekek, akik nem szeretnek bele a számítógépes játékokba, mi azonban nem ismerünk ilyeneket :-). És vannak olyan kisgyerekek, akik a beleszeretés utáni pillanatokban rögtön megunják az adott pályákat, és ők maguk jobbat akarnak csinálni! Ha azt veszed észre magadon, hogy a Prince of Persia-t nem azért tolod végig, hogy kiszabadítsd a hercegnőt, hanem azért, hogy kitaláld azt a képletet, amivel a fogzáras kapu garantáltan nem engedi át a hőst, hehehe… nos, akkor lehet, hogy programozó leszel, ha nagy leszel! Viccet félretéve, aki programozó lesz, általában már gyerekkorában kódokat ír, amikor a szomszéd srácot még mindig csak a „hell” szint meghódítása izgatja.
Ahogy az ábrán látszik, a felelősség itt a kódtól a technológia felé tart, illetve egy részterület mélyebb megismerése felé.
A programozó illető „kóderkent” kezdi, nagyon jól körülhatárolt feladattal, utána nagyobb léptékű programozó, majd vezetőfejlesztő lesz. Ezután következik az architect (tervező) szint, végül lehet belőle CTO (Chief Technology Officer – Fejlesztési Igazgató), azaz a technológia és a fejlesztési stratégia meghatározója.
A kóder az kódot ír, „innentől – idáig”, és sokszor nem tudja, hogy a végén a teljes szoftver mit is csinál. Egy jól behatárolt feladatot kap az illető, és elég a nyelv pontos szintaktikájának ismerete. (Persze nem árt tájékozódni, illetve törekedni a nagy kép átlátására is.) Ezzel szemben, akit már szoftverfejlesztőnek hívunk, az egy komplett szoftvert esetleg egy nagy rendszer újabb modulját tudja elkészíteni elejétől a végéig, tervezési feladatokkal megspékelve. Bonyolultabb fejlesztéseknél mindez csapatban zajlik, de a maga részéért mindenkinek felelősséget kell vállalnia, és támogatást kell tudni nyújtani hozzá, akár az üzemeltetőknek, akár a végfelhasználónak.
A felelősség növekedésével gyakran együtt jár az emberek irányításának a felelőssége is. Ha valaki ambiciózus, és szeretne másokat irányítani, akkor az első állomás a vezető fejlesztői pozíció. Általában itt ő még csak első az egyenlők között, kiosztja a feladatokat a juniorabb kollégáknak, átvizsgálja, hogy mit csináltak meg és hogyan, esetleg beosztja az idejüket, de nem ő határozza meg a fizetésüket, nem rúghatja ki őket és nem dönthet új emberek felvételéről sem. Csoportszinten övé a végső szó technológiai kérdésekben, viszont elég sok tudásmegosztást kell végrehajtania. Jó dolog, hogy persze ő csinálhatja a tervezési részt is.
A szoftvertervezési / fejlesztési módszertanok ismerete már nagyon korán jó szolgálatot tesz a karriernek. Jelenleg már elterjedőben vannak az agilis (Agile) módszerek, az Extreme Programming, és sok mással is kísérleteznek. (De persze van, ahol még mindig csak káosz van – „vízesés” módszernek álcázva.)
Ahogy lépkedünk felfelé a ranglétrán, egyre több adminisztratív (riportolási), emberkezelési stb. feladatot kapunk. Végül a CTO tulajdonképpen ugyanolyan erőforrás menedzser, mint az üzemeltetés területén a CIO, de általában sokkal közelebb van a technológiához. Maga már nem fejleszt, nem kódol, de ha kell, akár be is tud állni a csatasorba. A CTO kiválasztja a megfelelő technológiát egy adott rendszerhez, illetve felel a Make/Buy (csinálni vagy vásárolni) jellegű döntésekért is. Így aztán nem csak a technológiai lehetőségekkel kell tisztában lennie, hanem az üzletiekkel is. CTO-ja egyébként általában csak a szoftverfejlesztő cégeknek van, vagy olyan iparágak szervezeteinek (pl. bank, telekommunikáció), ahol maga az alaptermék vagy szolgáltatás semmilyen más módon nem jöhet létre szoftverfejlesztés nélkül.
A szoftverfejlesztői karrier talán legnehezebb kérdése a megfelelő technológiai zászlóbontás, azaz annak eldöntése, hogy melyik programnyelv lesz a vezérhajó a CV-ben. Minden állandóan változik, elavul, ráadásul nagyon régi dolgok újjá tudnak éledni, mint a Perl… A megoldás az, hogy nézni kell az álláshirdetéseket. A legeslegegyszerűbb módszer annak megvizsgálására, hogy mi most a menő, és mi a kelendő. Ha van olyan technológia, ami dominálja a listákat, akkor arra oda kell figyelni. Szintén érdemes a szakfolyóiratokat időnként átnézni, nem azért, hogy ott újdonságokat találjon az ember, hanem hogy arról tájékozódjon, hogy melyik cég nyert el milyen technológiával milyen tendert, melyik marha nagy megrendelőnél.
Ki lesz tehát tartósan „kapós” a munkaerőpiacon és vészeli át az esetleges újabb válságot? Az, aki két lábbal áll a talajon! Azaz van egy általánosan elterjedt, illetve magas szintet képviselő technológiai tudása ÉS ismer olyan nagyon új, nagyon korszerű technológiát, ami MÉG nem terjedt el, de valószínűsíthető, hogy el fog… Tehát a magas szintű Java vagy .NET biztosítja, hogy van melód, és sok az ajánlat. E mellé Brainfuck, az F#, meg a Haskell viszont azért kell, hogy az ajánlat magas legyen…:) (Ezekre itt még nem lehet mérget inni, mert csak találomra lőttünk. Majdnem.)
A kérdéses technológia munkaerőpiacot befolyásoló hatásáról akkor beszélhetünk, ha azt nagy mennyiségben igénylik a piacot meghatározó megrendelők. (Pl. bankok.) Méghozzá azért, mert ezen technológia bevetésétől várják pozícióik megerősödését, mert versenyelőnyre tesznek szert valamely üzleti folyamat megváltoztatásával, új piac nyitásával. Ilyen volt a Java, szemben a Php-val. (Ezért lehet sokkal többet lehetett keresni Java fejlesztőként, mint Php fejlesztőként.)
A technológia, ami mellé letesszük a zászlónkat kellően „bonyolult” kell, hogy legyen. Ne tanulhassa meg „akárki”. Az akárki alatt végfelhasználókat, illetve tulajdonképpen más szakmák képviselőit értjük.
A nagyjából 15 évvel ezelőtt lezajlott technológiai paradigmaváltást követte egy csendesebb forradalom: „a felhasználók ébredése”. Ez azt eredményezte, hogy ma már egy sor – korábban csak az informatikusoknak fenntartott – feladatot a felhasználók is meg tudnak csinálni. Akár komplett website-ok digitális manifesztációi is kikerülhetnek a kezeik alól. Amit viszont a felhasználók meg tudnak csinálni, annál sokkal többet kell tudnia a fejlesztőnek.
Ma már nem igazán beszélünk külön webfejlesztőkről, leszámítva azokat, akik még mindig céges weboldalakat farigcsálnak (no offense), merthogy a legtöbb alkalmazás webes így vagy úgy, függetlenül attól, hogy asp.net, Java vagy Javascript… Viszont aki most is (vagy újra) a szerveroldali dolgokkal ÉS a megjelenő réteggel/kliens oldallal is foglalkozik, azt hívják full stack fejlesztőnek (ez a backend és a frontend összevonása, ami régen egyben volt. :D).