Kell-e “papír” ahhoz, hogy valaki programozó legyen?

Ha néhány évet visszalépünk az időben, mondjuk az ezredforduló utánra, akkor még bizony az volt az általános, hogy jó helyre csak akkor tudott bekerülni valaki, ha volt diplomája valamely híresebb egyetemről vagy főiskoláról. A rossz nyelvek még azt is mondták, hogy ha egy bizonyos iskolában végeztél, akkor az önéletrajzod automatikusan a kukában landolt, míg ha egy másik helyen, akkor automatikusan be is hívtak interjúra.

Azóta sokat változott a világ. Számos új programozandó eszköz jelent meg (pl. okostelefon platformok), és a cégek (illetve az ügyfeleik) is jobban igénylik, hogy digitális szolgáltatást kapjanak (netbank, webshop, online ügyfélszolgálat…), ezért az igény azóta jelentősen megnőtt, nem csak Magyarországon, hanem a világban máshol is. Az informatikusok száma nem követte eléggé az igények növekedését.

Persze el kellett telnie egy kis időnek, míg a cégek HR-osztálya is elfogadta, hogy megváltozott a világ, és nem lesz képes minden egyes cég a legjobbakat magához vonzani, és ott tartani.

Tavaly kimentünk a HVG Állásbörzére körbenézni (jól szervezett rendezvény, merem ajánlani!). Az egyes területek képviselőinek különböző színű mappákat adtak, az informatikáé a kék volt. A kék mappa gyakorlatilag úgy viselkedett, mint a mézes madzag. Csak sétáltunk egyik helyszínről a másikra, egymással beszélgettünk, menet közben megállítottak, és invitáltak megnézni a cégük ajánlatát.

Egyik célunk az volt, hogy utánajárjunk a “papír” kérdésének, így megkérdeztünk erről a témáról minden olyan céget, aki feltüntette a tájékoztatójában, hogy juniorokat is felvenne, hogy mi az ő hozzáállásuk. 10 és 20 közötti céget kerestünk fel, és mindössze egyetlenegy volt az, aki azt mondta, hogy csak és kizárólag diplomás embereket akar felvenni. A többieknél a tudás volt a fontos.

A tudás viszont fontos, és minél aktuálisabb valakinek a tudása az adott területen, annál jobb.

Néhány információmorzsa még:

  • a Google 6 évvel a megszerzése után már nem tekinti előnynek a diplomát (mert elavul a tudás és a szakmai tapasztalat fontosabb, akár diplomás az ember, akár nem)
  • az egyetemeken első sorban általános tudást adnak, sok különböző szakma/téma alapjait is elsajátíthatod egy-egy képzésen belül. Számtalanszor volt olyan élményem az egyetemen egy-egy tárgy kapcsán, hogy szívesen belemélyednék, és megismerkednék vele mélyebben is, de tovább kellett rohannunk. Így például megtanultam a távközlő hálózatok alapjait, de nem lett belőlem cégnél bevethető tudásszintű távközlési mérnök
  • volt már, aki a Stackoverflow pontjai (ún. reputation) miatt kapott állást
  • a LinkedIn vélemények és endorsementek (valaki más úgy nyilatkozik, hogy te értesz valamihez) egyre fontosabbak

Már a tanfolyam fejlesztésének elkezdésekor is a bárki számára ellenőrizhető tudás átadására koncentráltam, de mivel volt rá igény, oklevelet mi is kiállítunk, ha elvégzed a képzéseinket (Java, Maven, Git,…).

Mitől jó egy programozó?

Amennyiben foglalkoztat a programozástanulás kérdése, biztosan felmerült már benned az is, hogy mitől lesz egyik programozó jó, a másik meg kevésbé jó. Ezen a területen minőségi különbséget tenni nem olyan könnyű, mint mondjuk egy szék, asztal vagy ruhanemű esetén.

Előrebocsátom, hogy egy programozó a lehető legtöbb esetben gazdasági környezetben működik, azaz a fizetését és a kapcsolódó egyéb költségeket egy véges pénzügyi erőforrásokkal rendelkező szervezet biztosítja, ami lehet egy profitorientált vállalkozás, vagy akár egy nonprofit alapítvány, de mindenképpen valahonnan kapja a pénzt. A cél, hogy minél kevesebb pénzből minél nagyobb haladást érjünk el.

Így az első minőségi kritérium a gyors kódírás. Mondjuk el kell készíteni egy új androidos applikációt, egyáltalán nem mindegy, hogy 1 hónap vagy 3 hónap alatt készül el. Ezt értjük. Az ételek íze sem mindegy.

Kapcsolódik, de kicsit mégis más, hogy egyáltalán meg tudja-e oldani valaki az adott feladatot, mert lehet, hogy nem. A juniorok pl. inkább kisebb, egyszerűbb feladatokat oldanak meg, mert az összetettebb feladatokkal nem tudnak még megbirkózni, még akkor sem, ha a világ összes ideje a rendelkezésükre áll.

A hibátlan kódírás is fontos: minél precízebb valaki, annál jobb ezen a téren. Manapság bevett az, hogy programok tesztelik a programokat, szóval jó esetben már nem (vagy kevesebb) hibát tartalmaz a program, ami elkészül, de minél precízebben sikerül valakinek a programot megírnia, annál gyorsabban jut túl az ellenőrző teszteken. A Java Távoktatás tanfolyamban az első leckétől ezt a folyamatot szimuláljuk: a programnak teljesítenie kell az elfogadási teszteket: egy ellenőrző program értékeli a beküldött programot.

A következő már nem annyira egyértelmű: ha az alkalmazást módosítani kell, mennyire lehet a kész produktumot gyorsan módosítani. Kevés olyan alkalmazást láttunk, amiből megállt volna a fejlesztés egy adott verziónál. A Windows 10 is azért Windows 10, mert volt már előtte 9 másik. Ha éppen fejlesztjük az új funkciókat, nagyon nem mindegy, hogy az eredeti változatot az eredeti programozó mennyire írta könnyen módosíthatóra. Ez egy ahhoz hasonló rejtett minőségi paraméter, mint az ételek tápértéke. Lehet, hogy ízre jó a gyorséttermi kaja, de ha sokat eszik belőle az ember, megnézheti magát. Ennek egy része az, hogy “olvasható” kódot írjon, ami lefordítva azt jelenti, hogy olyan programsorokat írjon az ember, ami megfelel a programozás “íratlan” szabályainak, úgy épül fel, hogy az egyik programozó könnyen tudja követni elődje munkáját. Ha ez megvan, akkor a program könnyebben módosítható, mint ha nincs. A Java Távoktatás tanfolyamban azért alkalmazunk tapasztalt programozókat, hogy ezeket az íratlan szabályokat is ellenőrizzék és átadják a növendéknek.

Mennyire erős az analízis képessége: Ha maradunk az ételes példánál, akkor azt kell mondjam, hogy a szoftverfejlesztés kicsit olyan, mintha valaki mesélne egy ételről, amit valamikor evett, de nem ismeri a receptet, amiből utána el kellene készítenünk, amire vágyott: először ki kell tudni szedni a megrendelőből, hogy mire vágyik (ezt nem feltétlenül a programozó végzi), utána analizálni kell, meg kell állapítani, milyen összetevőkből állhatott, azok hogyan kapcsolódtak egymáshoz.

Ha ez megvan, akkor az összetevőket a megfelelő eljárások alkalmazásával össze kell állítani, azaz egy meglévő eszközkészletből dolgozva meg tudja konstruálni a végső megoldást (illetve milyen gyorsan és jól teszi ezt meg). Ez a LEGO-zás része a programozásnak: a LEGO-játékban is van egy halom különböző építőkocka, amiket szinte tetszőlegesen lehet kombinálni egymással, és a végén kijön belőle mondjuk egy tűzoltóság két tűzoltóautóval. Ha szerettél régen LEGO-zni, akkor a programozást is élvezni fogod!

Ez utóbbiak a legnehezebben átadható részei a programozásnak, kell, hogy elmélyüljön, összeérjen a tudás a fejben. Ezért van sok összetettebb programozós feladat a Java Távoktatás tanfolyamon, és nem csak 3 billentyűt kell lenyomni a megoldás érdekében. Célunk, hogy olyan programozók hagyják el a tanfolyamot, akik – a tapasztalati szintjükhöz mérten – a lehető leginkább rendelkeznek az analízis és a konstrukció képességével, gyorsan írnak olvasható, módosítható programkódot, hogy utána hasznos és megbecsült tagjai legyenek a programozócsapatnak, ahova a végzés után kerülnek.

Milyen értéket teremt egy programozó?

Manapság az életünk minden területét átszövik a számítógépek és a rajta futó programok. Ezeket programozók írták, érdemes hát egy kicsit alaposabban megvizsgálni, hogy milyen értéket tulajdoníthatunk egy programozó munkájának.

A számítógépes rendszerek széles palettája – meglátásom szerint – négy területen ér el hatást, ami értékátadással jár. Ezen értékek kialakulásában programozók vesznek részt. Ezek:

  1. lehetővé tesz korábban lehetetlen dolgokat
    1. 20 évvel ezelőtt volt már számítógép, de ha valaki Android programokat akart eladni, akkor nehezen tehette volna meg, mert az Android még nem létezett. De még iPhone sem. Ma meg egy sokmilliárd dolláros piac! Egy megfelelő alkalmazással az ember részesedni tud belőle.
    2. Még néha ma is hallani olyan időseket, akik nem tudnak másképp telefonálni, csak ordítva. Régebben ugyanis ahhoz, hogy a szomszéd városban is még hallják, nagyon hangosan kellett beszélni, mert akkora volt a rendszer csillapítása, hogy ellenkező esetben a másik fél semmit nem hallott. Ma meg? Az ember felhívhatja a rokonait Ausztráliában (pl. Skype-on), és ugyanúgy lehet érteni, mint ha a szomszéd szobában lennének.
  2. gyorsít bizonyos tevékenységeket
    1. Vegyünk egy egyszerű folyamatot, ami bármely vállalkozás életében mindennapos dolog: a bevételekről nyugtát vagy számlát kell adni. Az “ÁFÁ-s számla” kiállítása régebben – számítógép hiányában vagy nem megfelelő informatikai rendszerrel – kézi módszerrel, számlatömbbe való írogatással történt. Még jól emlékszem, hogy egyetemista koromban, mikor siettem a vonatra, hosszú kígyózó sorok álltak a pénztárnál, és valaki “benyögte”, hogy ő ÁFÁ-s számlát is kér Kiskukutyin Bt. nevére. Ekkor ugyanis az ügyintéző fogta a számlatömböt, nyolcadszori bemondásra sikeresen leírta a cégnevet, kitöltötte a számlát, és mehetett tovább a sor.
      Ma meg? Gyakorlatilag olyan szinten integrálni lehet a funkciókat, hogy a megrendelés elejétől végéig emberi érintés nélkül végigmehet a folyamat. Gyorsan, flottul.
    2. Ha például ballagásra vagy hivatalos május elején (jelen sorok írásától számítva két hét múlva), gyorsabb és kényelmesebb felmenni az adott iskola honlapjára, megnézni, mikor kezdődik a ballagás, mint felhívni a ballagó diákot, hogy megtudd tőle, hogy mikor is van. Főleg, ha éppen edzésen van, nem ér rá, vagy éppen tanul az érettségire, és a telefon pont kizökkenti egy jó félórára…
    3. Nem egy mai történet, de szintén ide kapcsolódik, hogy a számítógépek segítségével tudományos számításokat lehet felgyorsítani. Míg 1940-es évek előtt egy szögfüggvénytábla (hány foknak mi a sinusa, cosinusa) megalkotása komoly projekt volt, addig ma egy nagyon kezdő programozó megírja a programot egy óra alatt (se), és máris kész az a táblázat, amit korábban sok-sok ember számolt hetekig, hónapokig.
  3. olcsóbbá tesz folyamatokat
    1. Részben az előző következménye: ha egy folyamathoz kevesebb emberi munka kell, akkor az olcsóbb (a gépek általában jóval kevesebbe kerülnek, mint egy alkalmazott az ő járulékaival).
    2. De emellett pl. a telekomcégek szenvednek az internet terjedésétől. Amit régen SMS-ben pötyögtünk, azt ma Facebook-, Viber-üzenetben vagy e-mailben írjuk meg. Ugyanúgy telefonról. Nekünk az üzenetváltás viszont – az internet minimális díján kívül – semmibe nem kerül.
    3. Vagy egy dokumentum átküldése… korábban ki kellett nyomtatni, beborítékolni, bélyeget ragasztani rá, elvinni a postára, feladni, majd várni, míg a másik fél megkapja… Ma meg? Megnyitjuk az e-mail programunkat, belépünk, becsatoljuk a dokumentumot, és kb. már ott is van, és egy fillérbe sem kerül.
  4. kényelmesebbé tesz folyamatokat
    1. A jelenlegi kor egyik legnagyobb hatású változásának tartom azt, hogy manapság gyakorlatilag bármit el lehet intézni bárhonnan. Fogja az ember a laptopját, kiül a tengerpartra, beül egy kávézóba, keres egy közösségi irodát, vagy elutazik valahova, és dolgozik. A fiatal generáció alábbadja a fizetési igényét azért, hogy ilyen cégnél dolgozhasson. Mert a számítógép kényelmesebbé tesz folyamatokat.
    2. Kényelmesebb bankolni a karosszékből, mint felöltözni, besétálni a bankfiókba, végigvárni a sort, elbeszélgetni az ügyintézővel, majd hazamenni (és nem mellesleg gyorsabb is).
    3. Kényelmesebb fogni a telefont, bekapcsolni a Google Térképet, mint a papírtérképpel hadakozni a szélben (megvan a helyzet? :-)), vagy olyan ember után kutatni, aki tudja, merre van az a hely, amit keresünk.

Ezek a példák is jól mutatják, hogy az informatika milyen sokban járult hozzá az élet változásaihoz, tette lehetővé, hogy emberek abból éljenek, ami 20 éve még nem is volt (Android szoftverek fejlesztése), gyorsítsa és olcsóbbá tegye a cégek folyamatait (ami végső soron a mi pénztárcánkban köt ki a verseny miatt), és kényelmesebbé tegye az életünket.

Ezen változások többsége mögött programozók teljesítménye áll.

Legyél te is programozó!

Mennyire keresettek az informatikusok?

A rövid válasz az lenne, hogy nagyon.

A hosszabb válasz pedig az, hogy a Magyarországon betöltetlen informatikus állások száma egy egyre növekvő szám. 2014-ben még a 10.000-es számot emlegettem, majd 2015-ben áttértem a 12.000-20.000 főre. Most, hogy kerestem az információ alapjául szolgáló cikk hivatkozását, egy még nagyobb számra bukkantam: 22.000 (A HVG cikke itt olvasható).

Az EU-ra pedig egy nagyobb, 900.000 – 1.000.000 közötti számot tudok.

Mit jelent az egyre nagyobb szám?

Read more

Az informatika gyorsan változik!?

Manapság a csapból is az folyik, hogy az informatika rohamléptekben fejlődik: évente akár többször is új készülékeket, új szoftververziókat jelentenek be, melyek gyorsabbak, jobbak, mint régebbi társaik. Néha az ember csak kapkodja a fejét, és nem is tudja, melyik végén fogjon hozzá ahhoz, hogy legalább egy-egy területen megpróbáljon a haladással lépést tartani. És még akkor sem egyszerű, rengeteg tanulást igényel ez a törekvés.

A Windows 10-es verzióját 2015-ben adták ki, az előző 8-as verzió kiadása 2012. október, a nagysikerű Windows 7 pedig 2009-es.

Hogy lehet ezzel lépést tartani?

Read more