1518320352
Minicube

Advertise on podcast: Minicube

Categories
Country
United States
This podcast has
15 episodes
Language
Hungarian
Explicit
Yes
Date created
2020/06/12
Latest episode
2021/11/04
Average duration
7 min.
Release period
46 days

Description

Minicube, ha kockaságokról - legfőképpen egy fejlesztő szemével - akarsz hallgatni, de csak pár perced van, akkor ez a podcast Neked való! See acast.com/privacy for privacy and opt-out information.

Unlock Minicube podcast Email contact info,
Listeners & Audience details

Email contact information

Direct podcast contact details

Listeners

Audience numbers & engagement insights

Audience details

Podcast Insights

Podcast episodes

Check latest episodes from Minicube podcast


Tudatlan döntések
2021/11/04
See acast.com/privacy for privacy and opt-out information.
Amit automatizálni lehet, azt automatizálni kell
2020/12/24
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast tizennegyedik epizódja! A mostani részt a legutóbbi két háztáji fejlesztésem ihlette, amik közül az egyik már elég régóta elindult. Nem tudom ti hogy vagytok vele, de én piszok lustának tartom magam, legalábbis ha egyszerű, favágó munkáról van szó, különösen ha mindez monoton és többször is meg kell ismételni. Anno amikor először munkaidőben fejlesztettem, még nem is fejlesztői munkakörben, az is egy ilyen feladatot hivatott kiváltani. Végtére az ipar legnagyobb részében azért írunk szoftvereket, hogy emberi munkát váltsunk ki vele, na meg excel táblákat. Pontosan ez történt akkoriban is, volt egy szoftver, ami megevett egy excel táblát és egy htmlt köpött ki magából, amit aztán lehetett is kinyomtatni és odaadni a termelőknek. Ezzel csak az volt a gond, hogy a programban voltak hibák, emiatt gyakran kellett belenyúlni a kimenetbe, de persze ehhez még számolgatni is kellett. Kb a tizedik ilyen után megelégeltem és nekiláttam írni egy kis sciptet, ami elvégezte ezt az utólagos kozmetikázást. Persze mindezt nem alaptalanul, ugyanis ez évről évre előjövő probléma volt, ugyanis a téli időszakokat a fejlesztési osztály leginkább ilyenekkel töltötte, ezért úgy éreztem a belefeccölt idő megtérül, arról nem is beszélve, hogy adott egy célt, ami mentén kódolhatok és sok olyan rész is volt itt, ahol újat tanulhatok. Excel táblák kezelése, batch feldolgozás, PDF generálás, stb. Ráadásul mivel egyszemélyben voltam a megrendelő és a fejlesztő is, így kellően motivált is voltam, hiszen tudtam, hogy mennyi munkától fogom megmenteni magam és a kollégákat is. Utóbbi csoport pedig biztos hálás is lesz mindezért, ami sosem árt egy munkahelyen. Ez persze eléggé megrészegített, emiatt utána el is határoztam, hogy teljes időben ezzel akarok foglalkozni, amit ott sajnos nem lehetett, így váltottam is. Ez viszont már egy másik történet. Persze ez később is megmaradt bennem, hogy amit lehet és megéri, azt oldjak meg automatizáltan. Hogy miért mondom, hogy megéri? Mert ha valamivel napi 1 percet töltök, de automatizálni 3 nap munka lenne, akkor annak az automatizálásnak a megtérülési ideje olyan hosszú, hogy valószínűleg bele sem vágok, maximum a kihívás miatt. Mivel elég sok kis apró projektem van, amiket használok is, ezért a hozzájuk tartozó build és akár deploy folyamatot is részben vagy teljes egészben egy CI szerver - esetemben a jó öreg jenkins - által futtatott scriptek és/vagy erre hivatott eszközök oldják meg. Nemrégiben pont szembesültem azzal, hogy mi is van akkor amikor ez kimarad. Van ugyanis egy régi mobilapp, amit fejlesztettem és ehhez évről évre hozzá kell nyúlni, de igen ritkán. Ennek a buildeléséhez és digitális aláírásához csináltam egy scriptet, tehát az első és legfontosabb lépés már megvolt. Viszont pont amiatt, mert ritkán kell használni nem oldottam meg, hogy Jenkinsen is fusson, hiszen úgy gondoltam ez a kis script elég. Ám időközben újratelepítettem a gépem, emiatt a script habár ott volt, de a megfelelő eszközverziók már kevésbé. Így amikor a legutóbb kellett volna felrakjam, akkor szomorúan konstatáltam, hogy az eszközök már nincsenek meg a gépemen vagy nem olyan csillag eggyüttállásban, amivel ez működne. Úgyhogy a vége az lett, hogy dockerizáltam ezt is és mostmár jenkins futtatja ezt is. Persze ezek nem feltétlenül olyan problémák, amikkel bárki találkozna, hiszen ehhez hobbiprojektek kellenek, vagy saját vállalkozásban kell űzni az ipart. De tudnék említeni még egyéb példákat is a közelmúltból. A videós oldalamon az egyes sorozatokhoz és a videókhoz is tartoznak bélyegképek. Az oldal indulása idején még úgy voltam vele, hogy saját magam szerkesztgetek képeket az egyes részekhez, de
Tényleg csak kitartás?
2020/11/01
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast tizenharmadik epizódja! Mitől lesz valaki jó programozó? Sokan feltették már ezt a kérdést és sokan meg is akarták válaszolni. Még éppen nekem is zajlik egy ilyen kampányom, amivel a videóportált szeretném népszerűsíteni egy rövid kérdőívvel: Vajon jó programozó válna belőled? Mondanom sem kell, hogy elég vegyes reakciókat vált ki, aminek az oka nem titok: egyetlen logikai vagy matek kérdés sem szerepel benne. A kérdések a kitöltő elhivatottságára, kitartására vonatkoznak. Na és akkor itt fogtok felhördülni Ti is, hiszen az összes ilyen tesztben matek és logikai feladatok szoktak lenni, nyílván okkal, ugye? A kérdőív nem is az én szüleményem, hanem Angela Duckworth kutatása, aki két tulajdonságot vizsgált, amik szükségesek a legtöbb cél eléréséhez. A tanulmány szerint azok, akik hosszú távon is képesek tenni egy célért és megvan az önuralmuk ahhoz, hogy ne térjenek el ettől különféle pillanatnyi ingerek hatására sem, azok tudják elérni a céljaikat és sikeresek lenni. Na de hogy jön ez az egész a programozáshoz? Azért, mert a programozás tanulása sosem ér véget. Folyamatosan fejlődik, bővül. Mintha a szorzótáblát nem 10x10-ig tanulnánk meg, hanem a végtelen x végtelenig. Pont ezért kell hozzá rendkívül sok kitartás, még azoknak is, akiknek jobb képességei vannak, hiszen lehet ők gyorsabban haladnak előre, de ha az út nagyon hosszú, kitartás nélkül ők is feladják. Fókusz nélkül pedig hiába lenne jó képessége, minden mással fog foglalkozni tanulás helyett. A másik ilyen, hogy akárki akármit mond, a matek egyre kevésbé része a szakmának. Persze vannak területek, ahol igen, így ha az ember például kriptográfiával akar foglalkozni, akkor nem ússza meg mindezt. Viszont a piac hatalmas és rengeteg olyan része van, ahova nemigen kell több annál, mint amit egy 8 osztályban összeszed az ember. Persze ez lehet csak duma, de aki hallgatja a Letscode podcastot, az talán emlékszik arra, hogy meséltem egy biztonsági őrről, aki nem sorozatok nézésével és facebookkal töltötte el a munkaidejét, hanem megtanult programozni. Hát de biztos csak valami kis cégnél tudott elhelyezkedni, azt is csak protekcióval, ugye? Nem éppen, nagy nevű multinál. Mindezt úgy, hogy hétszámjegyű fizetést kapott évekkel ezelőtt. Mi kellett hozzá? Matektudás? Logika? Aligha. Inkább végtelen sok kitartás, eltökéltség, hogy a munkaidejében ne valami agyatlan játékkal teljen az idő, hanem a tanulásra tudjon koncentrálni. Lehet erről is kellene egy felmérés, hogy kinek milyen szintű matek tudásra van szükség a szakmában. Persze hozhatnám a saját példámat is. Én programozni a szabadidőmben tanultam meg, nem kellett hozzá semmiféle gyorstalpaló - hiszen akkoriban még nem léteztek -, se mások noszogatása. Rengeteg oktatóvideót, előadást és hasonlókat néztem meg. Mivel növényorvosként dolgoztam és a mezőgazdaság télen igencsak áll, sokszor mindezt munkaidőben, így előnyben voltam azokhoz képest, akik egy 12 órás műszak mellett akarnak ilyesmit. Nekik ez a folyamat hosszabb és nehezebb lesz, de továbbra sem lehetetlen. Akkoriban magyar nyelven ezek nemigen voltak elérhetőek, ezért már az elinduláshoz is kellett az angol. Ma már némileg jobb a helyzet, de az angol nyelv továbbra sem nélkülözhető. Viszont a legtöbb helyen elég, ha az ember érti az írott szöveget, nem mindenhol kell beszélni is azt. Ehhez pedig mi kell? Nyelvérzék, ugye? Vagy kitartás? Ez volt a minicube podcast, találkozunk legközelebb! Sziasztok! See acast.com/privacy for privacy and opt-out information.
Mit is tesztelünk?
2020/10/27
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast 12. epizódja. Ma egy kicsit a manuális tesztelőkről fogunk beszélni, illetve arról, hogy mikor és mit nyomkodnak éppen és miként lehet tönkretenni a munkájukat egy tollvonással. Hogy szemléltessem, vegyük például Bélát, aki manuális tesztelőként dolgozik egy nagynevű multinál. A csapatában és az egész projekten úgynevezett SCRUM szerint dolgoznak, ami a valóságban inkább egy egy mini waterfallnak felel meg, de ebbe most ne menjünk bele. Maradjunk annyiban, hogy próbálnak kéthetente releaselni egy új verziót. Ezeket a releaseket sikerül is tartaniuk, ami a mai világban - ahol egyesek percenként, mások meg évente releaselnek - ez még igen jónak számít. Minden ilyen iteráció hétfőn kezdődik és a következő hét péntekig tart. Béla két hete úgy néz ki, hogy eldöntik mik is férnek bele ebbe a két hétbe, a fejlesztők elkezdenek rajta dolgozni, a tesztelők is elkezdik összerakni a teszt planeket, amik leírják hogy miként lehet letesztelni az adott új featuret. Közben persze a product oldalt és fejlesztőket is folyamatosan nyaggatják, hiszen mindig lehetnek fekete foltok a feladatokban. Az egyes featureök külön branchen kerülnek fejlesztésre, a fejlesztők pedig amit tudnak automatizáltan tesztelnek, de közel sem end-to-end. Ha valami kész van, akkor megy be master branchre, ez pedig kikerül egy tesztkörnyezetbe, lehet is nyomkodni a tervek alapján. Ekkorra általában a két hétből már egy eltelt, így a tesztelőknek van egy hetük letesztelni ezt. Hogy biztos legyen elég idő, a második hét keddi napja az utolsó, hogy kód bekerülhet a masterbe, ekkor kezdődik az úgynevezett feature freeze. Ez tök jó, de Béla nem ma kezdte, szóval kedden délelőtt talál valami turpisságot, amiről kiderül, hogy biza egy bug, mégpedig nem is kicsi. Ez így nem mehet ki, meg kell javítani. Meg is kapja a fejlesztő a nemes feladatot, hogy javítsa meg, de vészesen szorít az idő, ráadásul a feature freeze már életben van. Sebaj, mert a feature freeze nem érvényes a hibajavításokra, arra ott van a code freeze, ami szerdán van. A fejlesztő megtolja az igát rendesen, be is kerül a javítás masterbe, el lehet kezdeni tesztelni. Ezúttal szerencséje volt, Béla se talál kivetnivalót a featureben, így pénteken terv szerint kimegy a release, amiben már benne van a hibajavítás is. Aztán vasárnap csörög a telefon valakinél, ugyanis nagy baj van, mert a korábbinál még nagyobb hiba került a rendszerbe. Hát mégis hogy lehet ez? Hiszen a többi csapat tesztelői is tesztelték az alkalmazást. Igen ám, de melyik verziónak és mely részét tesztelték éppen? Ugyanis amit a hét elején teszteltek, az nem ugyanaz volt, mint kedden, vagy a fejlesztőnk módosításai után, hiába halasztják a regressziót a végére. Mit kellett volna tenni? Halasztani a releaset? Hát azt nem szeretik a menedzserek. Esetleg tesztelni külön feature branchen? A feature brancheket kirakni külön teszt környezetekbe és ott le lehet tesztelni. Működhet, de mi a garancia, hogy a módosítások nem akadnak össze valaki máséval a masteren és nem okoznak valami galibát? Sőt, ha már galiba, leteszteli a feature branchen a Béla, rámondja az áment. Frankó, mergeljük be… de valaki megelőzött és most rá kell húzzam a mastert. Ha nincs conflict, az még a jobbik eset, de ha van akkor végképp más szoftvert fogunk kireleaselni, mint amire Bélánk áldását adta. Megvan, revertáljuk a commitokat! Működhet, csak akkor megint visszajutunk oda, hogy a revert mit okozhat? Mikor fog ez kiderülni? Ugyanez a helyzet azzal, hogy cherry pickelgetünk. Feature flagek! Ez lesz a megoldás, ugye? Már majdnem jó, de csak bizonyos esetekben működhet, mikor egy teljesen új funkcionalitást tudunk vele ki/be kapcsolni, hiszen ha valami korábbi logikában valam
Not just codemonkeys
2020/09/01
A programozói pályát sokan sokféleképpen képzelik el, de azt elmondhatjuk, hogy a középpontban szinte minden ilyen elképzelésben maga a kód áll, emiatt is jött a kifejezés, hogy valaki pl jó kóder. Ezzel nincs is baj, habár számomra a kóder szó inkább pejoratív, de ez egy másik történet. A gond ott van, hogy sokan így is képzelik el a szakmát, vagy éppen így élik meg azt, hogy semmi más dolguk sincs, mintsem kódot írni. Ennél messzebb viszont nem is lehetnénk a valóságtól (legalábbis remélem). Ugyanis a kód az habár fontos produktuma a munkánknak. Álljunk csak meg! Mégis mi a produktuma a mi munkánknak? Mert hogy nem az általunk írt kód az tuti. Na és miért mondom ezt? Mert minket senki sem kért meg soha egyetlen if-else ágra, vagy hogy írjunk SQL-t. Minket egyszerűen nem ezért fizetnek. Hanem azért, hogy problémákat oldjunk meg az ügyfél/ügyfelek számára. Az, hogy történetesen ennek része az, hogy pl. SQL-t írunk, vagy éppen CSS-t hegesztünk, az csupán a szakmánk sajátossága. A cipészt sem kérik meg arra, hogy oda meg oda üssön egy apró szöget, valamit ragasszon meg itt és ott, hanem javítsa meg a cipőt, az hogy mindezt hogy oldja meg, már az ő szakterülete. Viszont azon a bizonyos kódon kívül még rengeteg mást kell tudnia egy jó fejlesztőnek. Az egyik ilyen, hogy tudnia kell, mikor nem is szabad nekiállni valaminek, mert nem fog működni. Sőt, ezelőtt nem árt, ha egyáltalán tudja, hogy mit is kell csinálnia, ugyanis az ügyfelek nem a jól meghatározott üzleti igényekről híresek. Tehát azt már látjuk, hogy nem tudjuk elkerülni azt, hogy kommunikáljunk a projekt egyéb résztvevőivel, akik bizony nem fogják megérteni a technikai részleteket. Ezt tudnunk kell lefordítani másoknak, valamint visszafele is, az általuk megfogalmazott igényeket is tudnunk kell valahogy technikai nyelvre fordítani. Ha ez nem lenne elég, ha nem egyéni vállalkozóként dolgozunk, akkor nagy valószínűséggel csapatban, emiatt egymás közt is kell kommunikáljunk. Bizony, a sarokban ülő programozó, aki egymaga fejleszt valamit egy kihalófélben lévő faj. A tudást meg kell osztani másokkal, dokumentációt kell írni - bármennyire nem szeretjük azt -, hiszen gondoljunk bele mi mennyi ilyet olvasunk? Valaki ugyanúgy beletette az energiát előttünk, hogy ne a kódból próbáljuk kitalálni mi is történik, vagy éppen stackoverflow válaszokból összehalászni azt. Na persze ne feledkezzünk el a meetingekről sem. Itt abba nem mennék bele melyik hasznos vagy éppen haszontalan, ezt cége válogatja, de valószínűleg itt vagyunk a legmesszebb a kódtól, hacsak nem lenémítva kódolunk a másik monitoron közben. Ha már kód, akkor bizony egymás kódját is át kell nézni, a benne talált hibákat érthetően és lehetőleg nem sértőn megírni a másiknak. De gyakran közösen is kell kódolni vagy éppen hibát keresni, logokat, metrikákat bámulni, hogy megtaláljuk a hiba okát, ha nem esünk rögtön a javításának, akkor mindezt felvinni valahova. Ha pedig felvisszük valahova, akkor elő is kerülnek a projektmenedzsment rendszerek, ahol szintén sok időt töltünk el. Képzeljük el, hogy házat akarunk építeni. Van egy elképzelésünk, odahívjuk a kőművest, ácsot, stb. és kiadjuk nekik, hogy ezt kell csinálni, van rá öt nap, ők meg rögtön nekiállnak? Dehogy fognak, hiszen lehet amit elképzeltünk nem is megvalósítható, vagy éppen nem biztonságos, időtálló. Azért ők a szakemberek, hogy megmondják, ha valami szakmailag nem lesz oké. Ők fogják megmondani azt is, hogy mennyi idő alatt lesz kb kész. Ugyanez a helyzet nálunk is, mintha minden egyes ticket a projektmenedzsment rendszerben egy újabb építkezés lenne, viszont nálunk sokkal komplexebb elképzeléseket kell megvalósítani, esetleg azok nem annyira letisztultak, így a konkrét megvalósítás keves
Mi a cél?
2020/08/10
Sziasztok, az én nevem Papp Krisztián és ez itt a minicube podcast tizedik epizódja. Az elmúlt időszakban kicsit megakadt a podcast és videókészítés is, aminek az oka roppant egyszerű, ugyanis vizsgára készültem, de igyekszem bepótolni a lemaradást. A mostani epizódban megint egy kicsit elmélkedni fogunk, ezúttal az interjú folyamatokon. Mindez onnan jött, mert a minap láttam egy gyakorlati repülős vizsgát még régről, ahol a repülés előkészítést és hasonlókat ellenőrizték. A vizsga során szépen végig kell menni a folyamaton és bemutatni azt, mindezt gyakorlati szemszögből. Sok döntést kell meghoznia a vizsgázónak ezzel és azokat a döntéseket megfelelően meg is kell indokolnia. Ezekből igen hamar kiderül, ha valaki nem látja a teljes képet. Erről eszembe jutott, hogy volt egy hasonló tárgyam még a mesterképzés alatt, amitől mindenki rettegett. Volt aki csak azért költött el egy vizsgaalkalmat, hogy beülhessen meghallgatni valakit, aki vizsgázik, ugyanis erre nem lehetett a szokásos módon felkészülni, mert hasonló volt, mint egy tantárgyakon és éveken átívelő szigorlat. A neve is utalt erre, integrált szántóföldi növényvédelem. Nyílván a hallgatók többségének nincs sok köze a mezőgazdasághoz, de a lényeg, hogy nemigen vannak kőbe vésve a dolgok. Tehát nagyon sok tényező határozza meg akár csak a vetésidőt is az adott növény esetében, kezeléseket, stb. Az oktató kedvenc kérdése pedig az volt, hogy “mi a cél?”. Ez pedig szinte bármely kérdésre adott választ meg tud menteni, ha meg tudjuk indokolni azt. Ha a saját szakmánkra tekintünk, akkor nem hasonló a helyzet itt is? Nem az van, hogy egy adott cél eléréséhez százféle módon el tudunk jutni? Szinte minden technikai döntés mögött van valamilyen ok vagy cél. Legyen mondjuk a cél egy videómegosztó szolgáltatás. Rengeteg technikai kérdés fel fog merülni a fejlesztés során. Milyen nyelvben írjuk, milyen adatbázis lesz mögötte, a frontendre kell-e valami keretrendszer, ha igen akkor melyik? Hol fogjuk hostolni, satöbbi. Mennyi minden derülne ki a jelöltről, ha ilyen kérdéseket megválaszolna? Persze egy juniortól nem várhatjuk el, hogy ilyen távolról lássa a dolgokat, ezért az esetükben más módszerekhez kell fordulni. Igaz egyfajta szintfelmérésre is alkalmas lehet, hiszen ha az indoka egy adatbázis mellett annyi, hogy azt ismeri, az sem egy rossz válasz, de máris tudjuk, hogy nem kell nagyon nyüstölni szegényt az adatbázisok összehasonlításával. Akkor most gondoljunk abba bele, hogy mi hogy felvételiztetünk? Milyen kérdéseket teszünk fel, hogy néz ki ez a folyamat, mi képezi a részét? Tegyük fel, hogy van egy online tesztünk. Mi bizonyítja, hogy az adott ember oldotta azt meg? A személyes körön vagy egy online call alkalmával rákérdezünk erre-arra, hogy kiderítsük az illető írta-e a kódot/tesztet? Simán csak megnézhetjük a rossz válaszokat és megnézhetjük, hogy egy kis rásegítéssel megy-e, ezzel legalább nem csak eldöntendő kérdésekre kapunk bináris eredményt, hanem kicsit belelátunk abba is, hogy az illető jelölt hogy gondolkodik és úgy is érezheti ezzel, hogy van lehetősége javítani, mint egy szóbelin az írásbeli után. Sajnos a legtöbb interjú teljesen személytelen, kitöltünk valami tesztet, adnak valami feladatot, ami alapján egyik nap felhív valaki, hogy bocsi, nem te voltál az igazi, vagy épp fordítva. Ez alapján már meg se fogjuk próbálni újra annál a cégnél, mert semmi irányt nem kaptunk, hogy vajon mit rontottunk el. Olyan ez, mintha annyit mondanának arra a kérdésre, hogy miért nem feleltünk meg, hogy “csak”. Természetesen ez lehet azért is, mert rengeteg embert futtatnak át a rendszeren és nem lenne idő mindenkivel személyesen foglalkozni, ezt aláírom. Azonban akikkel foglalkoznak is, azokkal tényleg fogla
Nagylányok és kisfiúk
2020/07/21
Sziasztok, az én nevem Papp Krisztián és ez pedig a Minicube podcast kilencedik epizódja. Pár hete tettem látogatást vidéken, ami nyílván a családdal telik leginkább. Ilyenkor látom a keresztfiam is, na meg belecsöppenek a különböző nevelési módszerekbe is. Az egyik ékes példája ennek, amikor az egyik családban a nyolcéves gyerek megnézheti a nyolc mérföldet, míg a másik családban a tizennégy éves ellenben nem. Régen ezzel nemigen törődtek, mert akár horrorsorozatot is levetítettek kora délután, de mára már nem ez a helyzet. Szóval itt akad két tábor. Az egyik mindentől meg akarja védeni a gyerekét, míg a másik azt mondja, hogy a gyerek abból tanul, hogyha megégeti magát. Szerencsénkre a gyerekeknél a természet megoldja, hogy hamar átvészeljék a bajokat, kevésbé törjön a csontjuk, hamarabb gyógyulnak, ésatöbbi, tehát a tanulási fázis elején védve vannak valamelyest, hogy a saját mozgásterükben ne tudjanak kárt tenni magukban. Tehát külső behatás, mulasztás nélkül nem kell nagyon aggódni, hogy gond lesz. Képzeljük el mi lenne, ha a gyerekek egy autó sebességével futnának. Olyan képességekre tesznek szert, amire még nincsenek felkészülve. Ha ezzel a tempóval esnek el, akkor bizony nem egy kis horzsolás lesz a vége. A hazafele úton aztán sokat agyaltam ezen és rájöttem, hogy bizony sok tekintetben hasonlít ez arra, amit lehet látni a szakmánkban is. Hiszen ahogy a két szülő máshol húzza meg a határokat, úgy sokszor elég jól elválik a keretrendszerek, nyelvek és függvénykönyvtárak azon két csoportja, akik egyike minél jobban lekorlátozza a mozgásterét az adott kód használóinak annak érdekében, hogy hülyeséget csináljon, meg akad a másik tábor, akik azt vallják, hogy a nyelv használói már felnőttek, tehát teljesen szabad kezet kapnak és emiatt az ő felelősségük, ha hülyeséget csinálnak. Ha megégetik magukat, akkor így jártak, majd tanulnak belőle. Amíg csak maga a fejlesztő járhat pórul azzal, mert valamit engedtünk neki, de nem kellett volna, addig nincs akkora gond. Sajnos azonban az esetek többségében a fejlesztő nem saját szórakoztatására kódol, hanem valaki fizet ezért. Emiatt nem csak a fejlesztő fog tanulni ebből a hibából, hanem bizony a megbízó is kárát láthatja ennek, ami könnyedén a fejlesztő problémája is lesz. Emiatt igen nagy a felelősség a nyelvek, keretrendszerek fejlesztőin, hiszen rajtuk múlik, hogy a használóik kapnak-e a kezükbe ollót, amivel mondjuk vágni tudnak, de nyílván kárt is tehetnek magukban. Ha a helyükben lennénk, mivel oldanánk meg azt, hogy mégse történjen baj? Vagy nem adunk nekik eszközöket vagy megtanítjuk nekik, hogy hogy is tudják azt használni és felügyeljük őket addig. Sajnos a felügyelet nemigen működik ebben az esetben, így más irányba kell nézelődnünk. Na most mi is történik, amikor még épp hogy belekezdtünk a keretrendszer megismerésébe, de elakadtunk és ahelyett, hogy megpróbálnánk megérteni a problémát - mert a dokumentációban nem térnek ki erre, vagy nem találjuk meg az adott részt -, a google első találatából másolunk egy olyan kódrészletet, amit nem is értünk. Ott van, működik, lendít is a projekt haladásán, de nem követtük le ezt a tempót. Ennek bizony hasonlóan ahogy a túl gyorsan rohanó kisgyerek, esés és nem egy apró horzsolás lesz a vége. Lehet holnap, lehet egy év múlva, de az ilyesmi megbosszulja magát. Tehát látjuk, hogy már az is nagyon sokat segít, ha az adott rendszer elég laza, tehát nem köti meg a kezünket, de a dokumentáció jól felépített, könnyen kereshető és a best practiceket fogja erőltetni és csak annak végén mintegy kiegészítésként írja le, hogy mi is az amit még be lehet vetni, de az milyen következményekkel járhat. Ez azért is fontos lehet, mert ez ott van előttünk, e
Jó zsaruk és rossz zsaruk
2020/07/13
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast nyolcadik epizódja. Van az a mondás, hogy a code review-t ötből négy ember élvezi. Nyilván, hiszen az ötödik az, aki ellenben úgy érzi, hogy szívatják, mert épp az ő kódját nézik át. Természetesen a fenti arányok nem minden cégre érvényesek, mert mások és mások a szokások, sőt! Van ahol maga a kód review sem bevett szokás. Na de mi is ez az egész? Miért van ilyesmire szükség? A kód review során az érintettek- akik általában a csapatból, vagy az alkalmazást magukénak vallók közül kerülnek -, ki vadul nekiesnek a beküldött pull requestnek. Ez a pull request a verziókövetőben lehet külön branch, fork, akármi. Itt sokan sokféle dolgok után kutatnak, jó vagy éppen rossz példákat követve. A célja az egésznek az lenne, hogy mások is lássák a kódot, megértsék azt, ha pedig kifogásolnivalót találnak benne, akkor azt jelezzék az illetőnek. Sajnos sokan elkövetik azt a hibát, hogy szemre checkstyleozzák a kódot, vagy egyéb statikus analizáló szimatával mennek végig rajta, felemlegetve az összes kimaradt final kulcsszót, hiányzó entert és hasonlót. Ezzel az a baj, hogy akármilyen jól is gépel az illető, aki épp átnézi a kódot és akármilyen gyorsan is észleli ezeket a hibákat, sosem fog a gépek nyomába érni. Ezért ami ilyet ellenőrízni lehet automatikusan, azt ellenőrízni is kell, sőt mi több… ha bármi gond van, törjön az a build! Na de tegyük fel nincs ilyen kollégánk a cégnél. Akkor továbbra is a cél, hogy mások is lássák a kódunkat. Na de minek? Nincs ezeknek jobb dolga? Ők is kódolnak és még a határidők is szorosak, nyomjatok már rá az approve gombra és vehessem fel a következő taskot, nem igaz? Van az a bizonyos mondás, hogy “the only way to go fast is to go well” azaz az egyetlen mód, hogy gyorsan fejlesszünk, az az, ha jól csináljuk azt. Tehát pontosan azért van erre szükség, hogyha a következő task, amit valaki más felvesz és a mi általunk patkolt kódrészleteket érinti, akkor ne azzal teljen el a fél napja, hogy megpróbál rájönni mi az és 0. lépésként átnevezgessen, refaktorájon. Helyette amikor odajut, akkor egy olyan kóddal találkozzon, amit már vagy ő maga is látott, vagy mások is látták és megértették. Ha pedig nem értették meg elég gyorsan, akkor nem magukban keresték a hibát, hanem szóvá tették és javítotva lett. A mostani csapatomban már megállapítottuk, hogy én vagyok a rossz zsaru, a másik budapesti backend fejlesztő pedig a jó zsaru, ugyanis én vagyok az, aki köti az ebet a karóhoz és sokkal szigorúbb, ha bármi nem tetszik a kódban, míg ő hamarabb elengedi a dolgokat. Nyilván itt nem egyéni preferenciára kell gondolni, mert a kód review nem ennek a helyszíne. Persze meg lehet mondani, hogyha valami szerinted másképp jobb lenne, de érvek nélkül sokat nem ér. Az egyik leggyakoribb érv, amivel védekeznek az esetleges kommentjeimmel szemben az a “dehát a kódban máshol is így van”. Persze, mert akkor mikor az készült még nem voltam itt, hogy megcsináljam és azóta se jutottam el oda. Nyilván nem ezt fogom válaszolni, meg rövid is az adás, hogy belekezdjek a monológomba, de maradjunk csak az úgynevezett boys scout rulenál. A cserkészeknél volt egy ilyen szabály, hogy a portát mindig jobb állapotban hagyd, mint ahogy érkeztél. Ez igaz a kódra is. Lehet, hogy aki előtted beletúrt szemét módon nem javította ki azt az elírást, nem emelte ki azt a 8x másolt kódrészletet egy helyre. Viszont ha Te ránézel érzed, hogy az ott nincs jól, így ha tele is van a kód ilyenekkel, akkor se fogd arra, hogy máshol is úgy van. Az esetek többségében hamarabb kijavítasz dolgokat, mintsem végeznél a kommentháborúval. Energiát spóroltál vele és még jobb is lett a kód. Win-win. Nyilván ez nem mindig il
Vészhelyzeti eljárások
2020/07/08
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast hetedik epizódja! A mai témánk egy kis előzetes sztorival kezdődik, ugyanis az életben igen sok szakmából lehet példákat venni, mivel a szoftverfejlesztés mint olyan egész újnak számít. Mondjuk a példa, amit hozni akarok nem egészen a legjobb, mert nem ezeréves múltra tekint vissza, de szerintem mindenképp tanulságos. Repülés. Erről mindenki egyből a szabadságra asszociál, holott rengeteg szabály köti a pilótákat és szinte minden repülési helyzetre megvan az előírás, amit követni kell. Vegyük mondjuk a motorindítást, erre a légcsavarod gépeknél kétféle helyzet is van, hidegen - tehát aznap először -, vagy melegen, mikor valaki nemrég tette le a gépet. A kabintető csukva, pedálok beállítva, övek becsatolva, légcsavar kis szögön, gáz levéve, parkfék behúzva. Ezután főkapcsoló fel, strobe light be, üzemanyagpumpa be és innen jön majd az indítás. Mindennek megvan az oka a listában. Ha a kabintető nincs csukva, a légcsavar szele leviheti, a pedálokat azért állítjuk be előre, mert később, ha már be vagyunk csatolva akkor nem érjük el. Becsatolva azért vagyunk, mert a levegőben macerás lenne már megtenni, a légcsavart kis szögre azért állítjuk, mert motorindításhoz ez hatékonyabb, nem fojtja le a motort, gázt levesszük, mert később a hideg-meleg indítás függvényében állítjuk, a parkfék pedig azért, hogy ne kelljen lábbal fékezni a repülőt és véletlenül sem tudunk elgurulni így. A főkapcsoló kell, hogy bármilyen elektromos rendszert elérjünk, a strobe light jelzi, hogy motorindításhoz készülünk, az üzemanyagpumpa pedig egy kis terhet levesz a motor válláról. Na most ebből a listából is kihagytam valamit, mivel ha indításkor fogyasztók vannak bekapcsolva, akkor az indítás okozta áramingadozás akár kárt is tehet bennük, ezért azokat is le kell kapcsolni. Na de miért mondom én el ezeket? Azért, mert ezek a checklistek léteznek a fejlesztésben is. Vegyünk pl valaminek az élesítését, ott is egy meghatározott sorrendiséget kell tartani, különben valami nem lesz az igazi. Az adatbázis sémát frissíteni kell a deploy előtt, ha adat kell bele akkor azt bele kell tolni az új verzió kikerülése előtt. Tesztelni is ezután kell majd a tesztelőknek és így tovább. Persze ez egyáltalán nem újdonság, hiszen ezt sokan már most is checklistek mentén végzik. Na de amiről inkább beszélnék az az, hogy mi a helyzet azzal, ami nem tartozik bele a “normal operations”-be, azaz nem egy hétköznapi dologról van szó. Mi a teendő ilyenkor? Mit teszünk, ha érkezik az xy pagerduty, miszerint az oldal elszáll ötszázas hibával. Ha visszatérünk a repüléshez, ott léteznek úgynevezett emergency checklistek is, tehát ha valami gond van, akkor megvan a protokoll arra, hogy hogy is tudjuk abból a helyzetből a legkisebb veszteséggel kihozni magunkat. Mindennek megvan az oka itt is. Mi a teendő ha motortűz van? Üzemanyagcsapot elzárjuk, üzemanyagpumpát lekapcsoljuk, teljes gáz és a kabinfűtést is kikapcsoljuk. Mivel a motortérben a legfőbb éghető anyag az olaj és az üzemanyag, ezért megpróbáljuk elzárni azt a tűz elől. Elzárjuk a csapot, ami a motortérbe vezet és teljes gázt adunk, hogy minél hamarabb elhasználjuk ami még ott van. A pumpát lekapcsoljuk, hiszen nem akarunk odapumpálni semmit, a kabinfűtés pedig a motortérből szivja a levegőt a kipufogó körül, így ha lekapcsoljuk, akkor a mérgező gázokat nem szívjuk be a kabinba. Ezután pedig elkezdjük a kényszerleszállást. Megvannak a lépések, megvan a sorrend is és megvan mit miért csinálunk. Nincs sok idő cselekedni, de ha valamit kihagyunk, akkor könnyen halálos következménye lehet. Na és mi a helyzet a legtöbb tech cégben, ha valami gond van? Vakon lövöldözünk. Ez sok esetben még
Mentoring
2020/06/29
Sziasztok, az én nevem Papp Krisztián, ez pedig a minicube podcast hatodik epizódja! Ahogy nézegetem a különböző beszélgetéseket ilyen-olyan fórumokon, rengeteg témával lehetne előállni, amik legtöbbje nem közvetlenül a technikai képességekhez kapcsolódik, így esett most a választás a mentoringra, mint olyanra. Sajnos ez a témakör sokak számára ismeretlen, vagy nem éppen olyan formában ismert, mint azt kellene. Ebben benne van részben az is, hogy ez főleg multicégek gyakorlata, így a KKV szektorban ilyesmire nincsenek emberek, kapacitás, meg hát a csocsóasztal és a céges sörözés a fő ütőkártya. Na de mire is jó ez a mentoring dolog? Egyáltalán miért éri meg? Gondoljunk vissza pályafutásunk kezdetére. Mennyire gyorsan haladtunk előre a szakmában? Elég volt ez a tempó? Persze, hiszen most itt vagyunk x évvel a hátunk mögött. Na de a kérdés, hogy vajon hol lennénk most ha van valaki, aki segít és igazgatja az utunkat? Ott vagyunk az xy helyen, vagy éppen egyedül és csinálgatjuk a kis dolgunkat, mennek a projektek és még büszkék is vagyunk, dől a lé, mehetünk a bahamákra nyaralni. Amit csinálunk azt értelemszerűen jónak érezzük, mert nemigen van interakció mással, akivel össze tudnánk vetni. Illetve van valaki. Mégpedig a mi jövőbeni énünk. Próbáljuk ki és nézzük meg egy korábbi projektünket. Az esetek többségében lehet elszörnyedünk majd, persze ez nagyban függ attól is, hogy mikori kódot nézünk meg. Adnánk valami tanácsot a múltbéli énünknek? Persze itt nem arra gondolok, hogy “töröld ki a francba és inkább írd újra”, hanem valami építő kritikára. Ha adnánk, akkor lehet valaki más is tudott volna egy ilyen tanácsot adni. Megkönnyítette volna az életünket? Igen? Na itt a mentoring lényege. Persze ha valaki visszanézi a korábbi kódját és nem talál benne semmiféle kifogásolnivalót, akkor így járt, biztos elérte a nirvanát, viszont ami inkább előfordulhat, hogy nem fejlődött ezalatt az idő alatt semmit. Na ez már nagyobb probléma. Ha nincs viszonyítási alap, nagyon könnyen benne tudunk ragadni egy bizonyos szintben, mert hát nekünk így jó. Ezért sem szokták szeretni, ha valaki új kerül a csapatba és változtatni akar valamin, még ha az jót is tenne, mert már megszoktuk, hogy így volt, minek szól bele? Na de vissza a mentorálásra, hogy is néz ki mindez a gyakorlatban? Egyáltalán mit is csinál egy mentor? Segít a szakmai és személyes tanulásban, fejlődésben, hogy elérjük a céljainkat. Persze ha ez a cél a péntek délután 5 óra, akkor sok mindent ő sem tud hozzátenni. Na és ezt hogy fogja megoldani? Olyan, mint egy tanár? A válasz egy határozott NEM. Nézzünk egy példát, hogy miben másabb: A karrierem során én is vétettem egy csomó hibát, amikről akkor még nem tudtam, hogy hibák. Ez lehet valami rosszul megválasztott nyelv, keretrendszer, biztonsági rés, akármi. Emlékszem, mikor még vadul freelancerkedtem, egy vasárnapi napon szólt az üzlettársam - aki a designal foglalkozott, hogy holnap mutatná meg az oldalt az ügyfélnek, de talált egy csomó hibát és meg kéne javítani őket. Akkor a fejembe vettem, hogy megjavítom mindet, de közel se volt olyan könnyű, így reggel 7-kor fejeztem be, aludtam egy órát és indultam a napi 8 órát leróni. Na most képzelhetitek, hogy milyen jól telt az a hétfő. Persze tesztek nem voltak a kódra, emiatt amit kijavítottam, azzal egy csomó más hibát is ejtettem a kódban, hiszen piszokfáradt voltam. Mostani fejjel legalább magas szintű teszteket kellett volna írni rá, meg nem szabadott volna hajnalig nyomni, mert másnap mikor néztem, rengeteg bagatel hibát szúrtam ki benne. Tehát lenne egy-két szavam az akkori énemhez. Ráadásul ezt a bemutatót el is lehetett volna napolni, mint utólag megtudtam. Ezekre a hibákra tudta volna felhívni a figyelme
Signal Noise Ratio
2020/06/25
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast ötödik epizódja! A mai témánk igen egyszerűnek tűnhet, legalábbis ha az azonos nevű wikipédia oldalból indulunk ki, de mi most a fejlesztésre vetítve fogjuk megvizsgálni ezt. Ugye a dolog nagyon egyszerű, van a jel, van a zaj és a kettőnek van egy viszonya. Nyilván minél nagyobb a zaj jelhez viszonyitott aránya, annál rosszabb a helyzet. Na de hol érdekel ez bennünket? Hát bizony nem a fórumokon az értelmes bejegyzések versus trollkommentek aránya, habár erre a példára is applikálható. Minket inkább a kód érdekel, amit ugye nem a gépnek, hanem embereknek irunk. Ezért itt is igencsak fontos a zaj, mint olyan. Na de mi lesz itt a zaj? Volt már olyan, hogy megnyitottatok egy kódbázist és csak percekig bogarásztátok, hogy mi történik? Mi miatt lehetett ez? Szar a kód, vágja rá rögtön mindenki. Jójó, de mégis miért az? Lehet azért, mert félrevezet. Mivel? Pl olyan kommentekkel, amik nem is szükségesek. Nincs hozzáadott értékük, csak a helyet foglalják, tehát ez is csak zaj, amit az agyunk próbál kiszűrni, de ez nem megy könnyen. Hasonló a helyzet a hosszú copyright fejlécekkel is, meg az importok a fájl elején, amiket az IDE már magától eltüntet előlünk, hogy ne is lássuk azt. Ezek már annyira beleették magukat egyes nyelvekbe, hogy van ahol már nyelvi elem is van rá, mint pl a c#-ban a regionök. Konkrétan megadhatunk régiókat, amiket el tudunk rejteni, mert annyi minden lenne előttünk. Ezzel pedig nevesitett régiókat tudunk létrehozni, amibe aztán mindenfélét belehányhatunk anélkül, hogy a külső szemlélőt ez terhelné. A kérdés itt az, hogy vajon jó-e az, hogy már nem csak az IDE, de maga a nyelv is ad eszközöket erre? Egyik oldalról jönnek az olyan checkstyle szabályok, hogy ne legyen hosszú a fájl, aztán jön az, hogy dugjuk el az importokat, amik aztán maguk 40-50 sort is elfogalhatnak, meg dugjuk el a régiókban levő dolgokat, amik szinte kiáltják, hogy ebből baj lesz. Aztán bumm, 600 soros osztályokat gyártunk. Az importok amúgyse ok nélkül kerültek be a fájlba. Ha sok van, akkor az azt jelenti hogy a fájlnak sok a függősége, ezzel instabillá téve azt, de ez már egy másik téma. Na de tegyük fel nincs rengeteg import, meg nincsenek kommentek, amik hibásan azt irják le mit csinálnak és nem azt, hogy miért. Miféle zaj lehet még a fájlban? Metódusok, amiknek semmi közük ahhoz, amit mi épp meg akarunk oldani. Ezért is fontos, hogy valamiféle sorrendiség legyen benne és azok a függvények vagy metódusok, amik egymást hivják sorban legyenek. Nyílván van kódnavigáció, de több sort látunk egyszerre és jó lenne, ha amit látunk az összetartozó és lényeges. Persze itt elő is jön a sokszor félreértelmezett single responsibility is, csak kicsit más szemszögből. Ami nem oda tartozik, azzal ne is terheljük a saját agyunkat. Ide tartozik még a pattern driven development, amikor úgy érezzük, hogy fú, de kipróbálnánk az xy tervezési mintát, de hol kéne azt… Hát persze, hogy az éles kódban, amivel aztán majd más is fog szívni. Ebben az a legjobb, hogy elkezdjük lefejleszteni a dolgot, a nulladik időpillanattól kezdve az adott mintát használva, még ha nem is oda való és aztán ebből lesznek azok a singletonok, amiket utólag cserélni lehet, mert nem is singletont akartunk, a visitorok, amik egy elemet járnak be, meg a builderek, amik igazából factoryk, meg a factoryk, amik igazából egy osztályba rejtett new statementek. Folyamatosan megtévesztjük az olvasót, mert az amit lát, nem szolgál semmiféle értéket. Majdnem elfelejtettem azt, amire igencsak tudok ugrani, főleg reviewkon. Lehet csak engem zavar, de ha egy fájl nincs megformázva, valahogy az is képes elterelni a figyelmem és megnehezíti az értelmezését. Itt egy behúzás, ott kicsit más
Hivatásos gyorstalpalók
2020/06/21
Sziasztok, az én nevem Papp Krisztián és ez pedig a minicube podcast negyedik epizódja. A minap a teraszon olvasgattam Uncle Bob Clean Agile c. könyvét, aminek a végefelé találtam valamit, ami szöget ütött a fejembe. A craftsmanshipről volt szó, és épp a hivatás vs munka témakört tárgyalta, erről pedig eszembe jutott az, hogy eddig is elég nagy ütemben képezték a különböző gyorstalpalókban az embereket, de most a COVID után talán mégjobban beindult ez a gépezet. Arról, hogy ez mennyire jó ötlet nem akarok most tárgyalni, ellenben kicsit gondoljunk bele ezen emberek motivációjába. Mivel is hirdetik az ilyen képzéseket? Leginkább a fizetésekkel. Teljesen természetes, hogy egyes embereknek ez lesz a legfőbb motiváló tényező. Persze egyéb módon is próbálják odacsábítani a dolgozókat a cégek, na meg valakinek már az is elég, hogy egy klimatizált irodában, home office lehetőséggel dolgozhat 8 órában. Amitől én félek az leginkább az, hogy nem alakul ki bennük a szakma szeretete, ami azokban van, akiknél már az első nyolc osztály alatt beakadt a számítástechnika. Sokaktól lehet majd hallani, hogy otthon már egy percet sem foglalkozik vele, hiszen ott már nem akar dolgozni lévén "azt nem fizeti meg senki". Számára a napi nyolc órával véget ér az egész, nem is fog egy perccel sem többet dolgozni, hiszen az teher. Otthon végképp nem fog szakmai cikkekkel foglalkozni, keretrendszerekkel, nyelvekkel játszani. Félre ne értsetek, semmi baj nincs ezzel, amíg nem okoz problémát. Miféle problémára gondolok? Leginkább arra, hogy mennyi ember fog kiégni, aki felugrott erre a vonatra, elkezdi csinálni, de legbelül nem ezt akarja csinálni? Hogy fognak bejárni nap, mint nap a munkahelyre, vagy éppen felcsapni otthon a laptopot a home office alatt? Pedig fejlődni kell, mert a szakma nem áll meg. Ha egy pillanatra nem figyelünk oda, elrobog mellettünk. Nyílván mondhatjuk, hogy majd a munkaadó belénk invesztál és segit a fejlődésben, de mi van ha mégsem? Mi van ha vállalkozóként dolgozunk? Meg különben is, nem a mi felelősségünk az, hogy fejlesszük magunkat? Persze fogunk mi is gyorsulni, lesz itt is ami idővel szimpla ujjgyakorlattá válik. De az eszközöket, amik akár sokszorosára gyorsithatják a munkát ezzel nem fogjuk megismerni. Lehet velem van a baj, de már kisgyerekként is mindig azt mondogatták, hogy olyan szakmát válasszak, amit szeretek és akkor egy percet sem fogok dolgozni az életben. Szóval szerintem ezt a szakmát is csak akkor lehet eredményesen, hosszútávon végezni, ha az ember szereti azt. Nyílván rengetegen panaszkodnak a különböző legacy kódok és problémás ügyfelek miatt, akik "megnehezítik az életünk", de ezek egyfajta velejárói a szakmának. Ha nem lennének változások a specifikációkban - amiket annyira szeretünk -, akkor nem is szoftvert kellene írni az adott problémára. Persze tisztában vagyok vele, hogy nem egyszerű az ember idejét menedzselni. Kell egy kis család, barátok, kell dolgozni, szórakozni, pihenni.. alapból se könnyű megteremteni az egyensúlyt, pláne ha az ember még egy kicsit utánaolvasna a dockernek, játszana a kubernetessel, megirna egy hello world-öt Rustban. Na és a kérdés itt az, hogy mitől vesszük el ezt az időt? A pihenésből? A szórakozástól? Netán a barátoktól? Vagy lehet nem is kell semmitől elvenni az időt, mert mindez inkább feltölt bennünket, szórakoztat, mert újdonság, mert érdekel? Na ezekről nem esik szó, amikor az embert a programozói pályára csábitják. Ez volt a minicube podcast, találkozunk legközelebb! See acast.com/privacy for privacy and opt-out information.

Podcast reviews

Read Minicube podcast reviews


0 out of 5
0 reviews

Podcast sponsorship advertising

Start advertising on Minicube relevant audience podcasts


What do you want to promote?