Felnőtt tartalom!

Elmúltam 18 éves, belépek Még nem vagyok 18 éves
Ha felnőtt vagy, és szeretnéd, hogy az ilyen tartalmakhoz kiskorú ne férhessen hozzá, használj szűrőprogramot.

A belépéssel elfogadod a felnőtt tartalmakat közvetítő blogok megtekintési szabályait is.

Olyan baszottul megsértődtem, hogy kártérítést követelek az érzelmi traumáért!

Offended Snowflake

Offended Snowflake

Az igazság a gyorstalpaló programozó-átképzésekről

Nem minden kobalt, ami hülye politikus

2021. február 15. - DarkVoid

Ki fog ma kurvára megsértődni?

Facebook, IRS, Green Fox, Codecool, Phil Murphy, nagy bankok és legacy technológiát használó - jellemzően nagyobb - cégek, Microsoft, BioWare, OKJ-élősködők, szeretett államunk.

Offtopic: Újra itt!

Legalábbis addig, amíg nem szánom rá magam, hogy saját szerverre pakoljam a blogot 666 eldobható domainnel.

A blogom előző életében sajnos megsértett valakit (az Aquát a majdnem kétszeres áron kínált RTX3090 miatt? A CD Projekt Red-et, amiért milliomos kéregetők és hamisan reklámoznak? Pár funkcionális analfabétát? Vagy valami random hópihét? Tököm tudja. Igazából elég magas óránkénti sértődésszámot produkálok, és még meg sem kell ehhez erőltetnem magam), ami miatt a Facebook többé nem engedte linkelni a régi blogot, hiszen tudjuk, hogy a sértődés joga előbbre való a véleménynyilvánítás tényközlés jogánál. De nézzük is a mai témánkat, mert már rég sértettem meg valakit. Ja, igen: mostantól minden poszt elején közlöm, hogy kit fogok az adott bejegyzéssel megsérteni. Csak az egyszerűség kedvéért...

Nagy volt a hype, de mi maradt belőle?

A bármilyen foglalkozást űzők programozóvá átképzését ígérő cégek - mint a Codecool, vagy a Green Fox - megjelenése abszolút várható volt: a 2010-es évek közepére a munkaerőpiac már kritikus programozóhiánnyal küzdött, de a piaci rés nem csak a munkáltatók, hanem a munkavállalók oldaláról is adott volt: az állami képzési rendszerek (OKJ, felsőoktatás) nem, vagy csak alig voltak alkalmasak használható tudás átadására (2016-ban Turbo Pascalban programozgatós tanfolyam? Lol), így hiába hangzott jól egy fejlesztői állás betöltéséért kínált fizetés, ha az érdeklődők alig tudták magukat alkalmassá tenni a munkakörre.

Ezt az álló szart kavarták fel a már említett cégek: azt ígérték, hogy néhány hetes, hiperintenzív tanfolymuk végére fejlesztőt faragnak a - borsos tandíj leszurkolására is képes - jelentkezőkből.

Ígéretek vs valóság

Az átképző cégek azt ígérték, hogy néhány hét alatt - még a munkád mellett is - programozót faragnak belőled. Érdemes azonban elolvasni ezt a cikket: ahelyett, hogy bemásolnám egyes részeit, inkább nézd meg magad az egykori hallgatók által tapasztalt visszásságokat.

forum.PNG

Akadnak tehát pontok, ahol az egykori hallgatók által tapasztalt valóság kicsit másképp fest. Emellett:

- Néhány hét alatt meg lehet ugyan tanulni egy programnyelvet (azért nem bármelyiket), de a programozás kicsitt több egy programnyelv parancskészletének ismereténél. Lásd lejjebb.

- Aki a rapid átképzés mellett dönt, az készüljön fel egy olyan szerződésre, ami bizonyos esetekben nagyban limitálhatja a munkaerőpiaci érvényesülés lehetőségeit, lásd a linkelt cikket.

- Egy dolog programozni, és egy egészen más dolog egy 1000+ fős cég fejlesztőjének lenni, nagyobb - gyakran országokon átívelő - csapat részeként fejleszteni olyan alkalmazásokat, amik jellemzően nem egyetlen programnyelvben íródnak.

- Ide tartozik, hogy egy programnyelv ismerete mellett a programozás olyan tudást is igényel, amit csak gyakorlattal lehet megszerezni. Olyan konvenciók ismerete, amik hiányában nem fog kedvelni a csapatod többi tagja, mert utánad kell takarítaniuk a szemetes forráskódot.

Mit várhatsz fejlesztőként?

Hát, semmiképp nem nettó 400+-os fizetést: a rapid átképzés végére egy nagyon kezdő fejlesztő leszel, aki nem ismer minden, ma használatos programnyelvet (az Assemblyt meg főleg nem), ellenben meg akarod váltani a világot. Nem véletlenül tartják közveszélyesnek a junior programozókat.

Szóval megtanulsz mondjuk Java nyelvben programozni alapszinten.

nullzero.jpg

Programozói logika: zéró, null, NaN

Ezzel nettó 200 körüli állást tudsz megcsípni jobb esetben. A Java hátránya (az egyik hátránya), hogy nemigen van benne perspektíva, azaz nem nagyon van hova továbblépni, csak másik programnyelvre. Mondjuk ezzel szemben a C-nyelvet nem tanulod meg 6 hét alatt, de abban már vannak lehetőségek.

A legnagyobb problémát a piacon maguk a munkáltatók jelentik, bár ők ezzel kevéssé vannak tisztában: fingjuk sincs arról, hogy pontosan mennyi gyakorlat kell a környezetükben ahhoz, hogy egy programozó jól teljesítsen, így irreális elvárásokat támasztanak az álláshirdetésekben.

A másik dolog, amiről szart se tudnak, az egy fejlesztési projekt időigénye: sokkal könnyebb programozóvá képezni magad, mint megmaradni a pályán, mert "hát majd akkor túlóráznak a rabszolgák". Naponta 8 órát, meg az anyád faszát!

Tempus edax, homo edacior

De figyelj csak, mondom a tutit! Tegyük fel, hogy megmászod a corporate szamárlétrát és jó programozó leszel egy jól fizető cégnél. Az a sokat emlegetett nettó 450 körüli fizetés csak egy kevés apró ahhoz képest, amit akkor kaphatsz, ha megtanulsz néhány igazán ősi programnyelvet, mint a COBOL, vagy a FORTRAN.

Ezek a nyelvek az ötvenes (!) évek végén jelentek meg, és stadionnyi területet betöltő számítógépekre programoztak bennük. Aztán a fejlesztők kiöregedtek, a technológia tovább fejlődött, de hiába cserélték le a cégek a hardvert (IBM System 360-ról valami más IBM mainframe-re), a programok maradtak - gyakran több rétegnyi emuláció alatt - még mindig a '60-as évek COBOL- és FORTRAN-programjai futnak egy csomó mainframe-en.

Ezek mára olyanok lettek, mint a Warhammer 40000 univerzum archeotech-je: akár a Császár létfenntartó trónusa, ezekről sem tudja már senki, hogy hogyan működnek és mindenki attól retteg, hogy mi lesz, ha egy ilyen ősgép meghibásodik. Hát, 2018 április 17-én megtörtént: az USÁban, az adóbevallás határidejének utolsó napján (ott mondjuk az Assembly és a COBOL nyelv együttese volt a probléma) összefosta magát az IRS (amcsi szadóhivatal) infrastruktúrája.

cobolwanted.PNG

Már akkor is sokat lehetett keresni a COBOL ismeretével...

Rengeteg ilyen program létezik a világban, ráadásul kritikus feladatokat látnak el. Csak hát már senki nem tudja értelmezni a forráskódjukat...

Tegyük fel, hogy meg akarom tanulni a programnyelvek latinját, vagy ógörögjét. Hogyan tovább?

Nem túl kedvezők a kilátások: ezek a nyelvek az internet előtti korból származnak, tehát az oktatóanyagoknak is csak egy kicsiny hányada került fel a webre, az is jellemzően nagyon kezdőknek való. Persze van még a világban profi COBOL- és FORTRAN-programozó, csak ők már különböző szeretetotthonokban tengetik mindennapjaikat és tökéletes FORTRAN-szintaxisban ismétlik újra és újra azt a kódot, amivel támadható az ICBM-ek Permissive Action Linkje (nyugi, ahhoz kellene egy atomóra is), vagy azt a COBOL-szkrpitet, amivel irányítást lehetne szerezni az összes kémműhold felett. Sajnos senki sem érti őket, ezért azt hiszik az ápolók, hogy demencia, a nyugtatók ködén át pedig a papóknak sem tűnik fel, hogy ők maguk a Skynet.

Vannak persze könyvek, csak nem könnyű megszerezni őket: magyar nyelvre a szakirodalom csekély hányadát fordították le, könyvesboltokban nem kaphatók, és már az összes COBOL- és FORTRAN-könyvet ellopták a könyvtárakból (az egyiket szerény jómagam, de nyugi: már elévült). Egyes legendák szerint ezekből a könyvekből hangosan olvasva sötét lényeket lehet megidézni más létsíkokról.

Ha fejlesztő akarsz lenni, akkor tudj angolul és olvass angol nyelvű szakkönyveket! Ja, hogy azokat kicsiny hazánkban megint csak szinte lehetetlen beszerezni? Szopóka.

Újat vagy régit?

Havi nettó 2-3 milláért COBOLban programozni nem lenne rossz dolog. Nincs az a bölcsész, aki ne vetné rá magát ezekre az antik programnyelvekre ekkora fizetés ígérete mellett. Ha sikerül is hozzáférni az árkán tudáshoz, akkor jön a következő probléma: aki keni-vágja a FORTRANt és a COBOLt, annak nem az lesz a feladata, hogy programot írjon, hanem hogy 50 évvel ezelőtt írt programokat üzemeltessen. Ez pedig nehézégekkel jár:

Azokat a programokat még olyan gépekre fejlesztették, amiken minden bitnyi memória- és háttértár-terület, meg minden processzor-ciklus érték, így ezekkel spórolni kellett. Ennek köszönhetően a nagy öregek olyan trükköket találtak ki és használtak a forráskódjaikban, amiket ma már nehéz megérteni. Jómagam is akkor tanultam programozni, amikor a számítási kapacitás még érték volt, azóta se érti senki, hogy ha egy szám ellentettjét akarom, akkor mínusz eggyel szorzás helyett miért vonom ki nullából (vagy adom hozzá).

submul.png

Felül a szorzás, alul a kivonás művelete - az áramkörök (tranzisztorok és logikai kapuk szintjén).

Egy 50 éves program - jobb esetben - tele van olyan kódrészekkel, amik csak az optializálást szolgálták. Ember legyen a talpán, aki értelmezni tud egy jó programozó által írt 50 éves FORTRAN-kódot, amiben még a memória-regiszterek tartalmának közvetlen manipulálásával sikerült megtakarítani néhány processzor-ciklust! Ja, igen: ezek a régi programnyelvek és a bennük írt szoftverek még sokkal közelebb voltak a hardveres réteghez is...

Meg aztán akadnak olyan kódrészek is, amik a többrétegnyi emuláció miatt kellenek, vagy épp már nem kellenek. Egy példa: a C-nyelvben a "helló, világ" program így néz ki:

int main(void)
{
printf("Hello, vilag!\n");
return 0;
}

Érdemes megnézni a \n jelentését: annyit jelent, hogy új sor. Ugyanis azok a számítógépek, amikre először programoztak C-ben, nem mindig rendelkeztek képernyővel: leggyakrabban a gép egy elektromágnesekkel vezérelt ÍRÓGÉPPEL adta ki a kért adatokat, az a \n pedig utasítja a System 360-hoz kapcsolt írógépet, hogy kezdjen egy új sort és annak az elejéről folytassa. Hozzáteszem, a C egy ma is igen népszerű nyelv, a legösszetettebb programok (részben) C-ben is készülnek.

regigep.PNG

Naponta párezer dollárért lehetett bérelni egy ilyet. Természetes, hogy egy jó fejlesztő igyekezett spórolni a rendszer-erőforrásokkal...

Ha valami ma is divatos nyelvet akarnál megtanulni, akkor másik dilemmával kerülsz szembe: vagy elkezdesz C-t/C++-t tanulni és beledöglesz, vagy tanulsz Python-t, PERL-t, Visual BASIC-et, akármit, aztán kiderül, hogy ez a tudás még messze nem elég (esetleg beállsz a Java-fanok sorába, akik szerint a Java azért jó, mert minden platformon működik - szerintük bizonyára az anális szex is azért jó, mert mind a két 6*10^23 nemmel működik).

Rossz hírem van: egy programnyelv ismerete (és a benne szerzett gyakorlat) még nem tesz programozóvá.

Te hogy kezdted?

Höhöhö... Hát, végülis már elévült, úgyhogy válaszolok: én Assemblyvel kezdtem, ugyanis vettem egy laptopot, amire akkor még csak Windows Vistához voltak driverek (igen, szarul kezdődik), és a legálisan megvett, jogtiszta Mass Effect 1 játékomnak a másolásvédelmét triggerelte a fos Vista. Így miután szakítottam az akkori nőmmel és lett pár nyugis napom, elkezdtem properelni (kijavítani) a Reloaded-féle cracket (az első RLD-s crack még tripelte a crack protectiont, és jött a Starmap-crash), szóval az első (igazi) programom egy cracknek a kijavítása volt, lényegében a crack protection teljes megkerülése.

Aztán lettek Win7-driverek a gépemhez, és azon már tudtam játszani a jogtiszta Mass Effectemmel. Hát így nem lettem cracker.

Akkor most érdemes programozónak tanulni?

Persze, de nem fogsz az első junior pozidban nettó 400 rongyot keresni: fejlesztőként is úgyanúgy fel kell szopni magad a ranglétrán, csak annyiban más a programozás, hogy juniorként is mindent kell tudni az ideális jelöltnek:

recruit.PNG

Te nem programozót keresel, hanem komplett informatikai főosztályt!

Ettől még ugyanúgy érdemes programozni tanulni, ahogy bármit érdemes megtanulni: az idő eltelik, a végére vagy tudsz programozni, vagy nem. Előbbi esetben jobban tudsz érvényesülni a munkaerőpiacon.

Reálisan mekkora erőfeszítés?

Nos, egy programnyelv is nyelv: vannak benne utasítások (=szavak), meg szintaxis(=nyelvtan). Az emberek közti kommunikációban használt nyelvekhez képest egy programnyelvben aránylag kevés utasítás van, a program működését jobban meghatározza a szintaxis, azaz hogy az utasításokat milyen sorrendben, milyen egymásra épüléssel és milyen adatokkal végezteted:

Egy emberek közti kommunikációra való nyelvben lehet mondjuk 200 000 szó. Ezzel szemben egy programozási nyelvben lévő utasítások száma ennek töredéke, tehát a programozás leginkább az a tudás, hogy hogyan lehet kevés szóból bonyolult szerkezeteket felépíteni.

Alapvetően a parancskészletek megtanulása tehát kisebb munka, mint a használatuk rutinjának és mesterfogásainak elsajátítása (az gyakorlatilag élethosszig tart, akárcsak bármelyik - programozási, vagy egyéb - nyelv esetében).

Lesz majd programozás-tutorial, persze Assembly nyelvben.

A bejegyzés trackback címe:

https://imsooffended.blog.hu/api/trackback/id/tr5216426190

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

will 2021.02.16. 11:01:42

Leírod, hogy valakik csalódtak a Greenfoxban, majd leírod, hogy amúgy mivel érdemes kiegészíteni a gyorstalpaló tanfolyamok után a képzést, hogy még feljebb kerülhess a ranglétrán. Ebben azért nincs benne az a hű de nagy leleplezés és sértés, amit az elején beharangozol. Pláne nem értem, miért vetne ez rossz fényt az elején megidézett Codecoolra.
süti beállítások módosítása