Mennyi idő alatt lehet megtanulni "elég jól" programozni?
Nézzük meg, mi vár az informatika területén azokra, aki programozóvá szeretnének válni!
A hírekben lehet olvasni, hogy sok ezren jelentkeztek 8 hetes ingyenes informatikai alapozó képzésre. Azt gondolom, hogy hasznos és szemléletformáló, hogy a program résztvevőinek lehetősége nyílik valami újat tanulni. Viszont ez a nagyszerű lehetőség aktuálissá teszi azt a kérdést, hogy a 8 hét után mennyit időt kell még egy pályaváltáshoz befektetni. Peter Norwig "Tanulj meg 10 év alatt programozni" című írásában (Teach Yourself Programming in Ten Years) egy kis kutatómunka után arra jut, hogy nagyságrendileg 10 év megtanulni programozni. Ebben az írásban azt próbálom körbejárni, hogy valóban ennyi időt kell-e befektetni, és hogy mi is lehet ennek a tanulási folyamatnak a következő lépése a tanfolyam után.
A TAPASZTALAT MEGSZERZÉSE
Az első teljesen jogos kérdés, hogy meg lehet-e valahogyan úszni a sok éves gyakorlást. Sokan hallottak olyan történetet, hogy van, aki már egyetem alatt programozásból tartja el magát és végzettség nélkül is lehet programozással jól keresni. Erre azt tudom mondani, hogy igen, lehetséges akkor, ha valaki az általános iskola alsó tagozatában már számítástechnikai szakkörre jár. Ezen kívül a középiskola alatt sokat készül az évente megrendezett számítástechnika versenyre (hányadik Nemes Tihamér versenyt rendezték meg idén?). Ha az illető esetleg az egyetem által a gimnazistáknak szervezett tehetséggondozó programban vesz részt, akkor lehet, hogy a munkába állással nem is kell megvárnia az egyetemet. Nekem például sikerült az utolsó gimnáziumi évem előtt nyári gyakorlatra kerülnöm az egyik multinacionális vállalathoz, ahol SQL adatbázisos alkalmazás fejlesztésbe kóstolhattam bele kicsit. Ez persze nem azt jelenti, hogy nincsenek nagy egyéni különbségek a szükséges gyakorlási mennyiségek között, de erre még visszatérek később.
Ha korábban nem foglalkoztunk programozással, akkor ezt a tanulási időszakot valahogy meg kell oldani. Erre a lehetséges megoldás az az, ha nem fejlesztőként, hanem az IT szakmán belül más olyan pozícióban sikerül elhelyezkedni, ami tanulási és későbbi váltási lehetőséget hordoz magában (például IT projekt asszisztensként, manuális tesztelőként stb.).
BÉREK ÉS TELJESÍTMÉNY
Sokak számára az egyik motiváló tényező annak a lehetősége, hogy „sokat keressenek”. A köztudatban az informatika is az egyik olyan terület, ahol viszonylag magas bért lehet elérni, viszont van egy csomó „de”. Amíg nincs tapasztalata egy fejlesztőnek, addig az indiai fizetésekkel versenyzik, azzal az előnnyel, hogy ha a cégnél nem beszélnek angolul, akkor kevés indiai beszél magyarul. A junior fejlesztőktől is általában már sok év tapasztalatot szoktak elvárni. Az egyik munkahelyemen felsőoktatásból fogadtunk szakmai gyakorlatra hallgatókat. A velük való munka valóban nagy energiabefektetést igényelt, ami úgy térült meg a cégnek, hogy a résztvevők egy része az egyetem befejezése után nálunk kezdett juniorként.
Ünnepi mix a bértranszparenciától a kódoló vezetőkig Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.
Sok klasszikus szerző szerint a tapasztalt fejlesztők között is nagy a teljesítménybeli szórás. Szerintük 5-ször (Barry Boehm) vagy 10-szer (Tom DeMarco) is hatékonyabb lehet egy tehetséges fejlesztő egy kevésbé tehetséges kollégájánál; más szerzők szerint ennél nagyobb különbségek is előfordulhatnak. Fontos megjegyeznem, hogy más szakterületen is jellemzően komoly szakmai felkészültséggel és nagy tapasztalattal lehet jól keresni. Ebben is remek segítséget nyújt a 8 hét, hogy megtapasztaljuk az IT szakma iránti lelkesedésünket és tehetségünket. Így eldönthetjük, hogy ezzel akarunk-e foglalkozni a következő 20 évben.
ELHELYEZKEDÉS
Amikor Magyarországon mindenki arról írt 2017-ben , hogy informatikushiány van és tízezrek hiányoznak a munkaerőpiacról, akkor kerestem állást. Álláskeresőként egyáltalán nem éreztem ezt a hiányt: nem reagáltak gyorsabban vagy nagyobb arányban a jelentkezéseimre, mint sok évvel korábban. A hiány a bértárgyalásban sem mutatkozott meg: 5-10%-kal az adott pozícióhoz tartozó bérsáv fölé menve már jelezték, hogy magas a bérigény, de volt, ahol jelentősen az átlag alatti fizetést ajánlották meg. (Egy adott munkakörhöz tartozó átlag fizetést glassdoor és hasonló portálok alapján nagyságrendileg meg lehet becsülni.) A fentebbi történet nem reprezentatív, de jól mutatja, hogy egy gazdasági fellendülés közepén sem feltétlenül könnyű az ideális állás megtalálása. Azt, hogy azóta sem sokat változott a helyzet jól mutatja, hogy idén február 15-én a Hacker News legolvasottabb cikke Jared Nelsen "A szoftverfejlesztői állásinterjúk borzasztóan disztópikus világa" (The Horrifically Dystopian World of Software Engineering Interviews) című blogbejegyzése volt.
A történet persze a másik oldalról sem egyszerűbb: volt olyan munkahelyem, ahol fél években volt mérhető, mire megfelelő tudású kollégát sikerült felvennünk a csapatomba és előtte rengeteg jelentkezőt hallgatunk meg (feleslegesen, mert például volt, akinél kiderült, hogy bár több jó nevű cégnél töltött éveket, az alapvető programozási nyelvi eszközökkel sincs tisztában).
KÉPZÉSI FORMÁK
Ha tetszik, akkor érdemes valamilyen felsőoktatási intézményi képzést megpróbálni. Amit sokszor hallottam, az az, hogy ott rengeteg fölösleges dolgot kell tanulni és a ’fölösleges’ jelző az elméleti alapozó tárgyakra vonatkozik általában. Motivációs szempontból lehet érdemes lenne megfordítani a sorrendet: megpróbálni megoldani problémákat elméleti alapok nélkül és csak azután, amikor résztvevők látják a korlátokat és a szükségét érzik az elméletnek, akkor nekifutni. Mivel a technológiák folyamatosan cserélődnek, az egyetlen, ami 15 év távlatából is változatlanul hasznos, az pont az unalmas elmélet. Bónuszként a speciálisabb területekhez: képfeldolgozás, számítógépes grafika, adatelemzés, gépi tanulás stb. elengedhetetlen a magasabb matematikai képzettség.
A komplex félév-év körüli képzési programokat nyújtó cégekben azt látom talán a legnagyobb értéknek, hogy felmérik a jelentkezők képességeit, és csak azoknak a képzését vállalják, ahol reális esélyt látnak a sikeres végzésre.
A tanfolyamok leginkább arra alkalmasak, hogy egy témában való elmélyülésünknek kezdő lökést adjanak vagy rendszerezzük eddigi ismereteinket. Itt személyes véleményem szerint az a legfontosabb, hogy az előadónak legyen munkatapasztalata az adott területen: azaz valaki olyan tartsa, akinek az adott technológiával legalább 5-10 év fejlesztési gyakorlattal rendelkezik. Egy képzés annál jobb, minél inkább az előképzettségünkhöz illeszkedik, mert nincs annál frusztrálóbb, mint az első 5 percben elveszíteni a fonalat vagy végig unatkozni. Ennek elkerülése érdekében érdemes többször elolvasni az előfeltételeket. Ha a képzés első 10%-a után úgy érezzük, hogy nem a Nekünk megfelelő képzésen vagyunk, érdemes jelezni ezt az oktatásszervezőnek vagy az előadónak.
Szerencsére ma már rengeteg online tananyag, tutorial és könyv áll rendelkezésre az önképzésre. A szemléletmód átadását és a mentorálás jellegű segítségnyújtást azonban ezek a források nem, vagy nehezen pótolják véleményem szerint.
VÉGSZÓ
Kíváncsian várom, hogy a sok jelentkezőből ki lesz az, aki az ingyenes tanfolyamon csak szélesítette az ismeretét és ki az, aki a programozást új szakmájának választja. Azt már előre lehet tudni, hogy mindenképp hasznos kaland lesz a résztvevőknek. Addig is amíg ez kiderül, reménykedem benne, hogy hátha indítanak 8 hetes ingyenes "ismerjük meg a jogász, építész vagy orvos szakmát" képzést, hogy én is beleláthassak más érdekes szakmákba.