2016. augusztus 22., hétfő

off: Az IT egy fekete lyuk

Ma sorba vettem, hogy mit csinálnak mostanában azok, akikkel huszonévesen térdig legyalogoltuk a lábunkat minden szombaton:
  • Eszti N diplomával és X doktorival rendelkező bölcsész, úgy 6-7 éve IT supportos
  • Dani posztdok biokémikus, most data scientist, Perl és Python mágus
  • Szöcske fizikus phd, mostanában Java szoftverfejlesztő - érdekes választás
  • Zalán szoftver-fejlesztő maradt
  • Sanyi is maradt szoftver-fejlesztő
  • Ákos rájött az egyetem végén, hogy valami gyanús és nem tudom pont most mit csinál, de nem szivatja magát absztrakciókkal
  • Anikó szakirányú egyetemi előadások nélkül is rájött ugyanerre, ő pont most alszik...
  • Nekem valami gyanús, de hát 11-12 éves korom óta szoftverfejlesztő akartam lenni. Mi legyek? Vadakat terelő juhász?:)

Kicsit olyan ez az ipar, mint London: szinte mindenki itt van. Vajon mit csinálnánk egy brexit esetén?

2015. november 27., péntek

Howto szakításhoz

Az utóbbi pár évben egy outsourcing cégnek dolgoztam. Igyekszek anoním módon és nem sértően, de muszáj leírnom, mert marha vicces volt. Második alkalom, hogy ennek a cégnek dolgoztam, az előző alkalommal egészen pozitív élmény volt és az akkori manageremet a legjobbak között tartom számon és néhány akkori munkatársamet szintén a legkivállóbb munkásemberek közé sorolom.
Valami változhatott viszont az alatt a jónéhány év alatt, amíg én mással foglalkoztam, ezt már akkor  megéreztem, amikor beléptem az ajtón.

Az állásinterjún a HR-es lány több mint egy órát késett, amikor megérkezett egy kávéval és laptoppal leült velem szemben és mondta hogy beszéljek a szakmai múltamról. Elkezdtem beszélni, de nehéz volt nem észrevennem, hogy nem érdekli: a laptopján olvasott valamit. Nem a CV-met, mert az nem olyan vicces. A technikai emberekkel azért kellemesen elbeszélgettem, de nagyjából az volt az érzésem, hogy ez a cég nem érdeklődik irántam komolyan. 2 hét csend után aztán mégiscsak előálltak egy ajánlattal. Azt hiszem az előző jó élmény miatt döntöttem úgy, hogy elfogadom.

Pár év eltellett és ez idő alatt jobbára a levélcímem volt az egyetlen kapocs köztem és a munkaadóm között. Leadtam a munkaidőről a jelentést, elküldték a fizetésem, ennyi. Semmi harag, de én úgy éreztem, ideje valami mást csinálnom, mert itt ülve egyszerűen kikopok a szakmából, a munkám meg csak annyi amennyi, abból nem sokat tanul az ember. Zseniális volt a felmondás, se harag, se indulat, se sértettség, semmilyen negatív érzés. Egyáltalán semmilyen érzés. A HR-es lány nem ért rá, csak mondta, hogy tegyem az aszaljára a papírt, odatettem, kész. Szevasz, resource! Szevasztok, resource-ok!

Erről az egészről a Kispál és a Borz "Jutka" című dalából jut eszembe az a sor, hogy

"Hívhatjuk baszásnak"

Igazi hungaricum ez a régi magyar alkesz-bölcsész-rock.
Na, legközelebb mesélek róla, hogy mit csinálok munkán kívül. Nem hiszem hogy bárkit igazán érdekelne, de ez lesz a műsor, mert engem ez érdekel :)

2015. november 9., hétfő

kotlin 1.0-majdnem

A kotlin programnyelv közelít az 1.0 kiadáshoz és érezhetően nő az érdeklődés körülötte, gondoltam pár további tapsztalatot megosztanék arról, hogy hogyan alakult a történet az utóbbi hónapokban.

Kezdjük mondjuk azzal, hogy a fejlesztők néha felvetettek egy-egy kérdést fórumra blogra és így az aktív felhasználói közösség részt vehetett a kotlin nyelv alakításában. Ez szimpi.

Ennek keretében szinte utolsó elötti húzásként kötelezővé tették az annotációk elötti kukacot. Lehetett mindent telekukacolni. Szintén viszonylag nemrég kicsit lazítottak a nullpointer védelmen és már nem kell mindenhova !!-t meg ?-t írni, ha java kódot hív az ember.

Főleg az utóbbi pár hónapban a fejlesztők kidobtak egy csomó deprecated funkciót és jópár másikat pedig átneveztek. Ennek következtében elég sok időt rá kellett szánni a migrációkra. Erre számítnia kell annak, aki 1.0 elötti programnyelvet használ.

A compiler nem igazán lett gyorsabb, de végre feltalálták az inkrementális fordítót és az ideába integráltak egy fordító démont, ez kicsit segít a problémán.

Szerintem továbbra is elég kedvetlenül támogatják a maven felhasználókat, a gradle-t sokkal inkáb. A maven compiler például annyira kevéssel gyorsul a második fordítás során, hogy az simán lehet mérési hiba, szerintem egyszerűen csak nem működik az incremental compiler mavenben és kész. Az is ide tartozik például, hogy a régi dokumentációs eszköz, a kdoc soha nem kapott működő maven plugint, az új dokumentációs eszköz a dokka pedig még mindig nem elérhető a maven centralból. Na jó, szóval a másik kevésbé-siker-sztori a dokumentáció generálás.

A bytecode idáig minden release körül változott. Ez azt jelenti, hogy a kotlin 0.11-el lefordított library nem működött kotlin 0.12-vel. Ennek ellenére léteznek kifejezetten kotlin-hoz írt libraryk:
  • A jackson-hoz van egy kotlin modul, ami a kotlin data osztályait segít JSON-ba és vissza alakítani.
  • A kovenant egy kotlin framework Future ojjektumok köré
  • Quasar - actor és satöbbi library kotlinhoz. Olyan mint az akka scala-hoz.
Szóval legalább ez a néhány népszerű fejlesztő csapat rendszeresen adott ki frissítést a kotlin verziók megjelenése utáni napokban vagy általában inkáb órákban. Szép tőlük.

Elvileg a legutóbbi beta kiadással lezárták a módosításokat és mostantól kezdve igyekeznek majd kompatibilisek lenni.

Az IDE támogatás mint az egy IDE fejlesztő cégtől elvárható, elég kellemes volt idáig. Mondjuk nem érzem magam másodosztályú IDEA felhasználónak egy java fejlesztőhöz képest. Engem kicsit bosszantott, hogy minden új kotlin release-hez egy új IDEA verziót is be kell szereznem, mert a régivel már nem műxik a plugin. Nagyon sok időt nem kellett ezen elszúrnom, de minden alkalommal egy fél óra nekem az már sok. Az új IDEA-ba már alapból benne van a kotlin, remélem így kényelmesebb lesz.
Határozottan örülök neki, hogy lassan szobatisztává válik a kotlin, egy egész használható dolgot kapunk, de azért még van egy hosszú listám arról, hogy mit szeretnék kapni. Jön a karácsony :)
  • Valami olyasmi, mint a PMD java-ban igazán hasznos lenne kotlin-hoz
  • Sonar plugint!
  • gyorsabb compilert
  • több valamit, kevesebb semmit

2015. november 5., csütörtök

Hogy kezdtem programozni

Belefutottam egy érdekes oldalba a magyar neten, ahol emberek arról mesélnek, hogyan kezdtek el programozni. Érdekes történetek, ha elolvas egy párat az ember, kezd körvonalazódni neki, hogy mi vonzza ide az embereket. A saját mesémet inkáb be se küldtem, mert nem annyira jólvasalt, de ezen a blogon már biztosan megszokták azok, akik még mindig nem hagytak fel az olvasással.

Szóval általános iskolában volt egy tanár, akit "A Nagy Kopasz"-nak neveztek a háta mögött, de ezt ő is tudta. A Nagy Kopasznak olyan sallerja volt, hogy nem kért belőle az ember repetát, szó szerint a fal adta a másikat. Ezt persze inkáb csak fiúknál használta, lányok esetében beérte valami megalázással is, pl órai felelés közben unottan összefirkálta az arcát tollal vagy krétával. Ezt csak azért írom le, hogy kb körvonalazódjon: némileg joggal paráztam a Nagy Kopasztól, bár néhány pofont nyilván kibír az ember, de én általában katonai fegyelemhez szokott gyerek voltam. Ha a pokol mélyéről előkerülne az ellenőrzőm, akkor abból ez se derülne ki például, de mindegy, egyszerűen csak hidd el.

5. osztályban az iskolában elsőként a mi osztályunk kezdett számítástechnikát tanulni. 8086-os procik, floppy, monokróm CRT képernyők és MS-DOS. Ezen kívül volt egy pár videoton gép is szintén videoton tévékre rákapcsolva. A Nagy Kopasz ekkortájt se volt már it és fiatal és azt hiszem akkor látott életében elösször ilyet, de egyébként én is. Angolul senki nem tudott egy betűt se, mindent frankón magyar kiejtés szerint mondtunk ki, de azért haladgattunk valamilyen tankönyvéleségen végig.
A valahanyadik számítástechnika órán A Nagy Kopasz elakadt egy batch fileban és reménytelenül nézte a képernyőt. Végrehajtáskor valami hibaüzenet, a könyvben pedig valahogy így állt a kód, az osztály nagy része meg éppen most kezdett rájönni, hogy a számítástechnika mégse kúl és jobb lenne a bé opcióval élve műhelyben szétcseszni valamit. És akkor megmondtam A Nagy Kopasznak, hogy mi a gebasz. Rossz könyvtárban volt, A Nagy Kopasz pedig azt mondta: Jól van, fiam.
Ilyesmit nem sokat hallottam a tanaraktól, A Nagy Kopasztól pedig akkor egyszer, amit nem csodálok mert elbaszott kis idióta patkányok voltunk, de ez az egy mondat volt a szikra.

A következő nyáron a bátyámmal végig melóztunk és édesanyám fő támogatásával összegyüjtöttünk zsét a TSZ egy leselejtezett gépére. A bátyámat a játékok foglalták le, de engem azok valahogy nem foglaltak le, én saját játékokat írtam. Az első programom a Halál-labirintus című szerepjáték könyv egy BASIC változata volt.

2015. április 22., szerda

reneszánsz vízesés

A munkahelyemen nyilvánvaló waterfall process alakult ki az utóbbi nagyjából egy évben az azt megelőző agile-féleségből. Ez egy nem túl motiváló, de nagyon tanulságos folyamat, úgyhogy gondoltam megosztom veletek ezt a gondolatot, hátha valaki valami hasznos következtetést von le belőle.

Szóval ugyanarra a problémára két ellentétes választ ad a waterfall és az agilis módszertan, mindkettő teljesen megalapozottnak látja a lépést.

Az ügyfél szeretne minél több hasznos dolgot kapni a szoftverébe. Az agile metódikában erre azzal válaszolunk, hogy gyakrabban adunk ki frissítést. A waterfall-ban az ügyfél ugyanazt akarta, de a fejlesztési folyamat végén a tesztelés során, amikor szegény csóri felhasználóim már tudják, hogy ezzel a cuccal ki kell bírni néhány hónapot onnantól kezdve hogy kibökték azt, hogy "OK". Nos emiatt félelmetes mennyiségű "last minute" feature-t kértek, még az utolsó percekben is. Szó szerint amikor beütöm az release parancsot, akkor még pár percet tengek-lengek, mert egész biztosan csörögni fog az email miután lefuttattam a parancsot.
Ennek nem csak minőségi következményei vannak, hanem oda vezetett, hogy az elég hosszú fejlesztési ciklust minden ciklus után megtoldottuk. A csóri felhasználók pedig mégtöbb "last minute"-t kértek, mert még többet kell majd várniuk a következőre.

Nagyon hasonlóan történik a specifikációval is, egyre hosszabb lesz, és amíg az alá nincs írva, addig egy bitet nem verünk be. Emiatt persze a felhasználó egyre többet ül rajta, nem merik aláírni, amíg a legapróbb részletig minden bele nem kerül. Persze munka közben kiderül, hogy ez nem sikerült, de a következő alkalommal még hosszabb specifikációs ciklus következik.

Ezt nem magamnak, meg a szerény létszámú olvasóközönségemnek mondom, nyilván elmondtam a project vezetőinek is, egyetértés megvolt, de valahogy semmi nem történt. Azt hiszem ugyanazokat a problémákat látjuk, csak más lámpák gyulladnak ki.

2015. március 1., vasárnap

java 1.8 hash

A java 1.8-ra egy egész halom érdekességet hoz, talán a legnagyobb változások a java 1.5 óta. Az emberek mégis igen lassan mozdulnak rá, a cégek meg még lassabban. Ez a szokásos dolog. Az Oracle, hogy kellemes pozitív motivációval noszogasson minket, fejbelövi a java 1.7-et, pár hónap múlva nem több lesz frissítés. A Fedora project fejlesztői kicsit erőszakosabban modernizálnak és a fedora 21 új feature-i közé betették azt, hogy nincs java 1.7 rajta. Micsoda spártai (és balfasz) feature. Akárhogy is, lassan mozdulni kell és az élő projecteket át kell rángatni java 1.8-ra.

Ez egy igazán naiv idealista szemében rohadtul egyszerű lehet: Csere, restart, jónapot.

A probléma, amibe többszörösen beleakadtam, tulajdonképpen egy nem különösebben nagy dobra vert újdonság: új hash algoritmus, amely egész szépen muzsikál. Király, jobb teljesítmény ingyen. Mi baj lehetne?
A probléma ott van, hogy bár nagyon nem jó ötlet arra fogadást kötni, hogy a HashMap-ba tuszkolt adatok milyen sorrendben fognak kijönni amikor iterálsz rajtuk, nos ennek ellenére explicit módon egy csomóan mégiscsak fogadást kötöttek rá, általában tudtukon kívül. Egész idáig mindig nyertek, mert mindig ugyanúgy jöttek ki az adatok. Most szépen kipukkan a lufi, de még nem igazán látom, hogy mekkora a lufi.

A probléma ott van, hogy:
  1. Nagyon sok helyen használunk HashMap-et vagy HashSet-et
  2. A hibás feltételezéseket nehéz megtalálni, nem holmi grep-pelés, hanem el kell a nyomorult kódot olvasni, tesztelni kell
  3. Nagyon sok kódot
  4. Nagyon kevés időnk van rá

Szóval jó kis meló lesz ez, hajrá :)

"Hash, alkoss, gyarapíts"

2015. február 15., vasárnap

Reggelitorna

A munkahelyemet a lakóhelyemtől egy nagyjából 15 perces vonatút választja el. (legalábbis télen, nyáron nyilván bringával megyek). Ezt az időt eleinte sudoku fejtéssel töltöttem, 15 perc nekem általában elég egy közepes erősségű rejtvény megoldásához. Később viszont rászoktam arra, hogy viszek laptopot magammal és 15 perc alatt valamibe beletúrok. Internet hozzáférés viszont nincs, így semmi nem zavar, nem tudom megnézni a twittert, a feedly-t, a leveleimet és keresgetni se tudok a neten.
Ez egy egészen klassz módja a munkának, mert az ember tudja hogy sietnie kell (ugyanis mindjárt megérkezik), nem sok látnivaló van útközben (többnyire gyárak, ipari területek) és nem vonja el a figyelmemet semmi.

Az eredmények:
  1. A saját kis hobbi-projecteim egész jól fejlődgetnek és ebből tanultam egész sokmindent.
  2. Talán ennél jelentősebb egy nagy rakás bugreport egy tucat különböző szoftvernek, és persze a megfelelő módon: POC programmal, leírással, satöbbi. Néhány nagyon jó tapasztalat is származott néhány ilyen hibabejelentésből, például a jetty fejlesztői villámgyorsan reagáltak és 1 héten alatt megoldották, a CXF fejlesztői pedig a bejelentéstől számított 24 órán belül ki is javították a hibát.
  3. Nem mindegyik project volt ennyire jól ellátva munkaerővel, így néhányszor elém is oda került a labda és pár projectbe vendégmunkáskodtam egy-egy patch erejéig.
  4. Nagyjából sikerült leszoknom a sudokuzásról.

Problémák:
  1. A reggel 7:47-es vonaton többnyire nincs ülőhely, ezért vagy a 7:17-es vagy a 7:10-es vonattal járok.
  2. Ez az egész nyilván nem túl szociális, bár körülöttem a sok iphone-zombi se az.