Legutóbbi bejegyzések
Nézd meg, mostanában min jár az eszem!
Nézd meg, mostanában min jár az eszem!
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.
Manapság azt figyelhetjük meg lépten-nyomon, hogy a számítógépek, automatikus rendszerek éppen nagy sebességgel alakítják át az életünket. Ma már leginkább e-maileket és Facebook-üzeneteket írunk egymásnak, nem kézi leveleket, a banki ügyeinket egyre kevésbé személyesen, egyre inkább netbankon keresztül intézzük, a gyártási folyamatok egyre inkább automatizáltak, és lassan már a TESCO-ban sem lehet, csak automatánál fizetni.
A jelenben, a hétköznapi ember számára is megfigyelhető folyamatok sokban hasonlítanak arra az időre, amikor megjelent a gőzgép (és később a futószalag), és ez átalakította a termelést, és ezzel együtt a világot. Azt a korszakot ipari forradalomként tanultuk, és megtanultuk róla, hogy gyorsan és olcsón lehetett nagy mennyiségű és (viszonylag) jó minőségű termékeket előállítani, elvezetett a tőke felhalmozásához, és közvetve hozzájárult a kapitalizmus kialakulásához is.
Az ipari forradalom lehetővé tette a gyorsabb utazást (gőzhajó, gőzmozdony). Gyorsabban létrehozható, olcsóbb termékeket eredményezett. Ugyanakkor ahhoz is elvezetett, hogy számos ember munkája feleslegessé vagy idejétmúlttá vált, és az átrendeződésnek sok vesztese is volt, ami hozzájárult ahhoz, hogy gépromboló mozgalmak alakultak ki.
Nem véletlen, hogy a mostani kort is ipari forradalomként aposztrofálják (hogy pontos legyek, ez már szám szerint a 4. ipari forradalom, de ez most mindegy is), hiszen ma is hasonló folyamatok játszódnak le: új lehetőségek teremtődnek (mobiltelefon, Androidos játékok, hogy csak a legkézenfekvőbb példát említsem), gyorsabban és olcsóbban hajtható végre számos folyamat, és kényelmesebbé válik az életünk.
Míg a gőzgéphez kapcsolódó ipari forradalom az ember (és az állatok) fizikai erejét váltotta le, addig a manapság zajló folyamatok az iteratív szellemi munkát teszik feleslegessé. De az élet halad, megállítani úgysem lehet, jó hát, ha alkalmazkodunk hozzá. Például úgy, hogy az élére állunk a változásoknak, és profitálunk belőle azzal, hogy megtanulunk programozni!
Szóval ha Ön most egy pénztáros egy TESCO-ban, vagy ismétlődő munkát végző adminisztrátor egy cégnél, akkor lehet, hogy veszélyben a munkája! Gondolja végig, és ha veszélyeztetett helyzetben van, kezdjen el sürgősen új lehetőségek után nézni!
Erről jut eszembe egy sztori, a mai magyar bürokráciáról. Lakcímváltozást jelentettem be pár éve. A folyamat a következő volt: bementem a “hivatalba”, sorszámot téptem, vártam egy órát, bementem a kitöltött papírjaimmal, ahol egy ügyintéző lány megnézte, hogy én én vagyok-e, majd begépelte az adataimat a számítógépbe, kinyomtatta a kártyát, laminálta, a kezembe nyomta, majd elköszöntünk.
Hogy nézne ki a XXI. századi megoldás? Bejelentkezek az ügyfélkapus felületen, megadom az új címemet (esetleg, ha ragaszkodik hozzá valaki, feltöltöm az igazolást, hogy tényleg lakhatom ott – esetleg feltöltöm annak digitális tanúsítványát…), megnyomok egy gombot, egy számítógép ellenőrzi a jogosultságomat, majd kinyomtatódik az új kártya, laminálódik, majd egy munkatárs nap végén elviszi és kiviszi. A kedves ügyintéző lánynak már nincs helye a folyamatban – kell néhány felügyelő, illetve aki válaszol a telefonokra, e-mailekre.
Persze hozzáteheted, hogy akkor most 1 ember megélhetését elvettük. Igen is, meg nem is. Persze, azonnal lehet, hogy nem érinti jól, hogy nincs bevétele, de épp kapóra jön az alkalom, hogy elkezdjen megtanulni programozni, vagy éppen kézzel készített plüssfigurákat varrni, ami kreatívabb, ösztönzőbb, szebb… és emberibb.
Szóval az a lényeg, hogy ha épp egy szellemi iteratív munkafolyamatban dolgozik, akkor készüljön fel arra, hogy a szakmája lehet, hogy épp leáldozóban van, és pont most van itt az ideje, hogy tegyen valamit azért, hogy ebből a változásból győztesként kerüljön ki! Amit én tudok ajánlani, az a tanfolyamunk.
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:
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.
Ha az ember programozó szeretne lenni, számos irány (ún. platform vagy világ) közül választhat. C, C++, C#, Java, PHP, Javascript (azok különféle keretrendszerei, pl. Angular, jQuery…), Python,…
Mégis melyik irányt érdemes választani? (Arról, hogy szerintem egyet érdemes választani, arról előző héten írtam).
C: A ma legnépszerűbb nyelvek ősatyja, a Java, a C++, a C#, a PHP és a Javascript is ebből a nyelvből fejlődött ki, az alapvető utasítások nagyon-nagyon hasonlóak – ha nem azonosak. Viszonylag kevés utasítást és lehetőséget tartalmaz, így elég könnyű megtanulni, viszont nem túl barátságos a programozóval: időnk és energiánk nagy része a gép specialitásaival való törődéssel megy el (memóriakezelés és -felszabadítás, pointerek nyomon követése, cím szerinti paraméterátadás kapcsán való gondolkodás – ha ez nem mond semmit, nem baj. A lényeg, hogy egy magasabb szintű nyelvnél ezekkel nem neked kell törődnöd).
És hogy hol használják manapság? Nagyon egyszerű beágyazott rendszerek vezérlésénél, pl. amilyen egy automata öntözőberendezés. De pl. a Raspberry Pi (ára tízezer Ft körüli) sem csak C-ben programozható, így a jelentősége egyre csökken. Ha érdekelnek a beágyazott rendszerek, válaszd ezt, és készülj fel, hogy a hardvert kell majd masszíroznod, hogy menjen a programod. Ez nagy odafigyelést, alapos elméleti tudást igényel. Tudásod csak egy speciális környezetben alkalmazható. Szóval nem ajánlom. (Egy beszúrás: Programozni megtanulni kívánóktól számtalanszor hallottam, hogy “Először megtanulom az alapokat, a C-t, majd utána rátérek a magasabb szintű nyelvekre”. Khm… Miért tanulnál meg lovagolni azelőtt, hogy autót vezetni tanulnál? Mert az autó feltalálása előtt lovagoltak az emberek? A lovaglás jó sport, de semmi szükség rá az autózáshoz).
C++: Objektum-orientált (=menő) programozási nyelv, de valahogy megörökölte a C-nek azt a tulajdonságát, hogy bal kézzel masszírozni kell a nyelvet, hogy működjön a program. Rengeteg lehetőség van benne, kevés kivétellel mindent meg lehet csinálni benne, ráadásul elég gyors is lesz a program. Ideális, ugye? Hátulütője, hogy sokszor tovább tart rendesen megtanulni, mint mondjuk a Javát. Kis túlzással azt szoktam mondani, hogy a Java és a C++ úgy viszonyul egymáshoz, hogy Javában a C++-ban megírható programok azt a 20%-át lehet kivitelezni, ami a problémák 80%-át megoldja. Ha a maradék 80%-ot is akarod programozni, akkor cserébe tanulhatsz 5-szörannyit. Állásszerzés szempontjából nem ideális, mert 5-ször tovább tart megtanulni olyan szinten, hogy állást találj, mint a Javát. Ha menő 3D-s számítógépes játékot akarsz programozni, telekommunikációs alapszoftvert, operációs rendszert, vagy más, sebességkritikus rendszert, akkor ez a te pályád. Mivel túl rögös és hosszú az út benne a programozóállásig, nem javaslom.
Java: Viszonylag gyorsan, könnyen megtanulható, mert elég jól leegyszerűsített és letisztított nyelv, keveset kell (és lehet) a számítógép lelkivilágával törődni, jobban lehet a feladatra koncentrálni, kellően kényelmes. Ráadásul a legjobban fizetett programozók a Java programozók. Egyrészt a Java beette magát a nagyvállalati környezetbe, számos banki és egyéb rendszer Javában van írva. Ezen kívül az Android programok millióit is Javában írták meg. Annyira nagy tömegű program van Javában írva, hogy az tuti nem fog egyik napról a másikra megváltozni. Több millió programot senki nem fog máról holnapra sem kidobni a szemétbe, sem átírni egy másik platformra. EZ TUTI. Ráadásul a nagyvállalatok ilyen szempontból nem a gyorsaságukról híresek… néha még a Java verziót sem váltják, nemhogy mindent újraírjanak egy menő új nyelvben. Szóval aki a Javát választja, annak egy meglehetősen kényelmes, meglehetősen gyors utat kell végigjárnia, míg bele nem csüccsen a jól fizető állásába.
C#: A Java után jött ki, ezért valamivel fejlettebb nyelv annál, de a Windows platformmal van legjobb barátságban. A legkönnyebb áttérés Javáról talán a C#-ra van, az alap nyelvi készletben csak néhány különbséget lehet felfedezni, annyira hasonló. A .NET-tel szokták együtt emlegetni, ami a Windows platform programozói környezete. Nem egy rossz választás.
PHP: Azok számára, akik egyszerűbb webes szoftvereket akarnak programozni, ez (és a Javascript) a jó választás. A PHP rengeteget küzd a menővé válással (objektum-orientált programozás bevezetése), és igazán nem is érzem túl sikeresnek. Könnyen tanulható, széles körben támogatott nyelv, de nagyon gyorsan lesz gátja egy weboldal fejlődésének.
Javascript: Ha valaki webes programot akar valaha írni, nem tudja kikerülni a Javascriptet, ugyanis jószerivel ez (és utódai, pl. Typescript) az, amit egy böngésző futtatni tud. Javascript és pont. A PHP-hoz hasonlóan a Javascript is küzd az objektum-orientálttá válással, tehát megalapozott programozási tudásra akarsz szert tenni, akkor nem biztos, hogy a legjobb, ha a Javascripttel kezded.
Python: sokak szerint ideális kezdő nyelv lenne a programozás megtanulásához, és szintén sokak szerint nem elég komoly nagy rendszerek írásához. Mivel nem követi a C-alapú nyelvek nyelvtanát, mi értelme lenne egy kezdő nyelvet megtanulni, utána átváltani egy komoly nyelvre? A programozási alapokat Javában is meg lehet tanulni, és akkor legalább a később használt nyelvtant (szintaxist) gyakorolja az ember.
Nem véletlenül oktatunk Javát, azt gondolom, ezzel tud a tanuló leggyorsabban legnagyobb eredményt elérni tudás és fizetés tekintetében.
Sokan jönnek azzal, hogy ők megtanulják a Javát, megtanulják a C#-ot, de a C++ és a PHP is érdekli őket, aztán bárhova is veti őket a sors, megállják a helyüket.
Igen is, meg nem is.
Ha analógiát keresünk erre, akkor a sportokat és a természetes nyelveket is fel tudom hozni.
Ha egyszerre kezdesz el portugálul és olaszul tanulni, mi lesz a végén belőle? Kis valószínűséggel a két nyelv tökéletesen szétválasztott ismerete és kezelése. Nagy valószínűséggel viszont egy nagy katyvasz.
De nem csak ez a gond, hanem két nyelv megtanulására kétszerannyi idő kell (mily meglepő :-)), viszont ha azt a kétszerannyi idődet az egyik nyelvre szenteled, sokkal minőségibb szintre tudsz eljutni.
Lefordítva: vagy mindkét nyelvet megtanulod úgy, hogy egy étteremben tudsz rendelni, és külföldön útbaigazítást tudsz kérni, vagy megtanulod az egyiket úgy, hogy akár egy szépirodalmi szöveget is meg tudj érteni, vagy előadást tudj az adott nyelven tartani. Az első is lehet cél, de pénzt keresni inkább a második opcióval tudsz.
Vagy a sportok analógiája: ha triatlonista vagy (úszás-kerékpár-futás), akkor az egy-egy sportot űzőkhöz képest rosszabb kerékpáros, rosszabb futó és rosszabb úszó leszel – egyszerre mindent nem lehet.
Tehát én azt javaslom, ha esetleg sok nyelv megtanulását forgatod a fejedben: Ne tedd! Válassz ki egyet a lehetőségek közül (én a Javát ajánlom!), és kötelezd el magad mellette (legalább az első időre), aztán ha az élet úgy hozza, még mindig lehet váltani. Egy teljesen elsajátított környezet sokkal többet ér (pénzben is), mint két félig, vagy három harmadáig kontrollált terület.
És hidd el, egyetlen környezetben elmélyülni is eltart jó pár hónapig. Ha minél hamarabb állást akarsz vállalni, fókuszálj egyre!
Az ITHub egyik cikkjében összeállított egy elemzést arról, hogy egy IT szakembertől milyen szakmai képességeket várnak el, és a felvett munkavállalók milyen tudással rendelkeznek. Minden területen 10 kulcskompetenciát vizsgálnak. A kimásolt ábra a Java területtel foglalkozik; a Java fejlesztőtől elvált képességek: Java, J2EE, Java EE, JPA, Spring, JSP, Oracle, SQL, XML, Hibernate.
Az első dolog, amiben megerősített ez az ábra, hogy bátran szakíthatunk a magyar oktatás egyik rákfenéjével, a tökéletességre való törekvéssel. Mint láthatjuk (pontos számokat az eredeti cikkben olvashatunk), a Java fejlesztő legfontosabb kompetenciájában, a Java nyelvben sem 100%, amit elvárnak a munkavállalótól, de még csak nem is 90%, hanem valahol 25% környékén. Ami még érdekesebb, hogy a felvett programozók még ezt sem érik el, valahol 15 és 20% között van a teljesítményük.
Ebből két dolog következik:
Egy másik dolog a Java EE és a J2EE kérdése: A Java EE a J2EE egy későbbi verziója, nagyvállalati rendszerek létrehozására alkalmas csomagról beszélünk. Hogy miért szerepel akkor mindkettő? (Most egy pillanatra megfeledkezünk arról az eshetőségről, hogy esetleg ugyanarról beszélnek a cégek, csak két különböző névvel illetik)
Én egyetlen dologra tudok gondolni: nem szalad annyira a technológia alkalmazása, mint amennyire a technológia és a szakemberek tudása. És ez valahol érthető is: ha egy cég egy bizonyos Java EE (J2EE) verzió segítségével kifejlesztett magának egy rendszert (sokmillióért), akkor nem fogja “csak úgy” lecserélni egy újabb verzión futóra, befektetve megint csak sok millió forintot. Az ok pedig, hogy bár elvileg nagyrészt a régi programokat tudja futtatni az új Java EE, de csak elvileg és nagyrészt. Ez a két szó pedig újabb sok millió lehet egy cég számára.
Ugyanakkor egy adott verzióra kifejlesztett rendszert is karban kell tartani: hibákat kell javítani benne, esetleg új funkciókat megvalósítani, amihez pedig kell a régi technológiához értő szakember.
A Java EE első verziója 2006. májusában jelent meg (10 éve!), és váltotta le a J2EE-t. Nagyon úgy néz ki, hogy vannak cégek, akik ilyen régi technológiával készült szoftverrendszereket használnak, tartanak karban, és szívesen alkalmaznának hozzáértő szakembereket. Azaz:
Forrás: http://ithub.hu/blog/post/Mit_varnak_el_egy_egy_adott_IT_pozicio_betoltesehez_es_mi_ezzel_szemben_a_valosag/
Email: info × programozas-oktatas.hu
Telefon: +36-30-8640155
Felnőttképzési bejelentési szám: B/2020/001474
Ha szeretnél a szoftverfejlesztés területén állást kapni, de még nem tudsz programozni, akkor jelentkezz a StudiCore Online Java oktatásra!