A backend-fejlesztés jelene és jövője [teljes felvétel közkívánatra]

Címkék

A kerekasztal-beszélgetés 2024. május 8-án zajlott le a HWSW IT karrier fókuszú eseménysorozata, a Kraftie keretein belül.

Az elmúlt 10 évben a frontend és backend fejlesztés ellentétes pályán mozgott. Amíg a frontend ökoszisztémákban elsöprő változások zajlottak, majd szépen lezajlott a konszolidáció (egyelőre), addig a konszolidált backend ökoszisztémák egyre gyorsuló üzemben fragmentálódnak, melynek a motorja a számos feltörekvő nyelv, de nem szabad megfeledkezni DevOps vagy az AI hatásairól sem. A meetup keretében a backend-fejlesztés jelenét és jövőjét, illetve munkaerőpiaci kihívásait beszéltük át 5 különböző hátterű szakemberrel.

(A teljes tematika a YouTube-on a leírásban.)

Hozzászólások

Szerkesztve: 2024. 12. 29., v – 02:25

Egy szakaszt hallgattam meg, a "Nyugdíjba mehetek Java vagy C++ fejlesztőként?" címűt.

Nem értek egyet azzal, amit a panel tagjai mondtak. A "jó pap holtig tanul" érvet állítják annak szolgálatába, hogy miért kell ész nélkül minden új divatot azonnal követni. Pedig pontosan ez az az érv ill. ok, ami miatt nem érdemes túl gyakran váltani. A szóhasználatukban számomra rövidtávú, divatvezérelt üzleti gondolkodás tükröződik, amikor a programnyelveket és a rájuk épülő szoftverkörnyezetet modulárisan cserélgetjük. Az a baj, hogy ez a valóságot nem tükrözi; egy 10-15 éves tapasztalatot nem fogsz más nyelvben két év alatt felszedni, akkor sem, ha úgy érzed. Pár hónap alatt válhatsz éppen "produktívvá" -- ez el is várható valakitől, aki 10-15 éve dolgozik --, de nem leszel az új nyelv / környezet mestere. "Jack of all trades, master of none." Azt értem én, hogy a cégeknek az a kedvező, ha fogaskerekekként kezelhetik a programozókat.

Konkrétan a modern C++-szal (C++23) úgy dobálózni, mint egy könnyen megtanulható és könnyen félretehető nyelvvel, azt sugallja, hogy az illető nem igazán ismeri (és nem rettent még meg kellőképpen) attól a (lényegében) átfogóan megtanulhatatlan mosléktól, ami a C++. Az új nyelveknek tök mások a hangsúlyai, más "paradigmákat" támogatnak, tehát a korábbi tudás átvitele ill. -szint újra elérése nem triviális. És minél inkább multi-paradigmás egy nyelv, annál nagyobb moslék; pl. a C++-ban a funkcionális minták egyszerűen gyomorforgatóak, mind C-s, mind igazi FP szempontból. A szintaxis nem hóbort, hanem a kifejezőerő és kezelhetőség szempontjából masszívan meghatározó szempont; az évszázadok során a matematikai jelölésrendszer fejlődésének make-or-break hatása volt többször is.

A C++-t legtöbben csak hiszik, hogy tudják használni [*]; valójában a nyelv borzasztóan implicit volta miatt többnyire nem tudják pontosan, hogy mi történik (de hát végül is ez a C++ ígérete, "nem kell vele foglalkoznod"; kár, hogy hamis ígéret). Jó pár olyan friss commit-ot láttam, amelyben nyelvhasználati hibákat javítottak, nem szakterületi logikát; 15 évvel ezelőtt meg jó pár olyan kódkommentet, hogy "ezt úgysem érted, úgyhogy ne nyúlj hozzá". A C++23 szabványt, meg a több kötetnyi kiegészítő netes dokumentációt nullmértékű programozó-halmaz tudja mind szélességében, mind mélységében elsajátítani, és ahhoz nem lesz elég 2 év.

[*] Én nem hiszem ezt magamról. A C-t legalább megközelítőleg meg lehet tanulni.

(Én is "megtanultam" egyébként OCaml-ban dolgozni kb. 1 hónap intenzív tanulással, és utána másfél évig kifejezetten produktív voltam benne; kb. másfél éve hagytam abba. Viszont a nyelv rafkós vonatkozásaira sosem volt szükségem kód írásakor, és ha most újra kézbe kellene vennem, biztos kellene pár hét ahhoz, hogy ismét felpörögjek. Ez nem az a szint, mint amikor valaki 10-15 éven át OCaml-ban álmodik, és full kótyagosan is anyanyelvi szinten jön az ujjaiból a kód.)

A cloud (mint "backend technológia") pedig kifejezetten problémás szerintem; ennél zártabb (ennél inkább proprietary) API készlet nem is létezik. Nem tudsz hatni az API tervezőjére / implementálójára, nem tudod saját környezetben vizsgálni; számomra rosszabbnak tűnik, mint egy binary-only library vagy daemon.

A CLIPPER-es példa pedig nem elrettentő; engem legalábbis a COBOL-os / mainframe-es helyzetre emlékeztet. Nem zsákutca. Rendszeresen megtörténik, hogy a fejlesztő- ill. futtatókörnyezetet modernizáljuk (emuláljuk), azért, hogy az üzleti v. szakmai logikát tartalmazó eredeti forráskódot (vagy akár binárist) megtarthassuk. A COBOL / mainframe az egyik véglet, a másik meg lehet akár a dosbox is, amiben 30-40 éves abandonware játékokat futtatunk. Zsákutcának csak akkor nevezzük, ha a cloud a hitvallásunk (nyilván kizárólag anyagi szempontból).

Az "írjuk újra más rendszerben" többnyire veszteséges tárgyterületi logika szempontjából (volt rá a közvetlen családban is tanú; DOS-os FOXPRO-ban készült eredeti szakértői rendszert "írt át" egy másik csapat Windows-os GUIs FOXPRO-ra).

"Aki most kezdi, az szerintem ne ezzel tervezzen, hogy majd egy nyelvet megfog, és azzal majd nyugdíjba megy" -- valóban ne, inkább azzal tervezzen, hogy az adott nyelve(ke)t a lehető legalaposabban elsajátítsa és több területen bevesse; ami azért 1-2 évtizedig eltarthat.

"Miért akarna valaki egyetlen nyelvvel az elejétől a végéig elmenni" -- azért, mert tudatosan el akarja mélyíteni az ismereteit, amennyire csak lehet. Miért akar valaki 30 évig ugyanazon a hangszeren játszani? Miért nincs az, hogy valaki 2 évig szobrász, aztán 2 évig festő, aztán 2 évig fafaragó, aztán 2 évig üvegfúvó, aztán 2 évig bőrdíszműves? Vagy 2 évig matematikus, aztán 2 évig fizikus, aztán 2 évig vegyész? Vagy két évig németből műfordító/szakfordító, aztán két évig olaszból, aztán két évig norvégból, aztán két évig japánból? Mert a specializáció döntő, és ahhoz egy teljes karrier kell. Azt én értem, hogy az informatika divatvilágában az ilyen emberek gyakran nem kifizetődőek a cégeknek; de a kérdésre ettől még van értelmes válasz.

"Piros csempe" -- ez az analógia hihetetlenül nem állja meg a helyét; teljes mértékben semmibe veszi a tanulás folyamatát, konkrétabban az agyban a szinapszisok kialakulását és megerősődését. Agyi plaszticitás létezik, de a "piros csempéhez" való ragaszkodás nem fakszni, hanem biológiai alapon (is) nyugszik. (Javasolt olvasmány: Neuroverzum.)

"Senki sem gondolja, hogy a Java jelenlegi állásával ő harminc év múlva ugyanezzel az állással fog nyugdíjba menni" -- valóban nem; pont azért akar esetleg 30 évet a Java-nak szentelni, hogy végig (ill. egyre inkább) mestere maradjon. Azzal nem értek egyet, hogy egy "teljesen más nyelv lesz, csak egy másik szám lesz mögötte".

"Az a nyelv, amit ők szeretnek, az miért sokkal jobb, mint az az adott másik nyelv" -- bármilyen szakmában a szakmabeliek vitatkozni fognak ilyen kérdéseken; sőt, még konferenciázni is. Részben azért, mert mindenki a saját tanulmányai és tapasztalata alapján a leghatékonyabb, részben pedig azért, mert vannak "multi-instrumentalist"-ok, akik érdemben és objektíven össze tudnak hasonlítani nyelveket; például hogy "miért jobb a Go, mint a Rust, vagy fordítva".

... Hihetetlenül zavar ez az üzleti, moduláris, kicserélhető fogaskerék szemlélet; az egésznek egy PR ízt ad.

"Alkalmazkodóképesség hiánya" -- sokkal inkább arról van szó, hogy a divattal sok esetben nem érdemes, vagy nem etikus azonosulni. Az egész bemutatott szemléletmód figyelmen kívül hagyja a magasabb társadalmi és emberi értékeket; olyanról, mint Flow, önmegvalósítás, az alkotás öröme, az erőfeszítés értelme, futólag sincs szó. Holott az élet második felében ("nyugdíj felé") ezeknek kiemelt jelentősége van. Kiégett, megcsömörlött munkavállalókkal nem lesz egy cég sem sikeres. (Pl. a flow-hoz magas kihívás és magas kompetencia kell egyszerre; az utóbbihoz meg sok befektetett, összpontosított munka.)

"Hajléktalan bevásárlókocsija" -- ez a metafora (esetleges több évtizedes programozói tapasztalatra) a beszélgetés ezen szakaszának megkoronázása. Tök jól alkalmazható azokra a gépész szakemberekre is, akik fölül eladták a gyárat; hajrá! /s

"Hacker news" -- pusztán FOMO. Én legalábbis nem tartom karrier-alakító forrásnak vagy erőnek.

Az egész bemutatott szemléletmód figyelmen kívül hagyja a magasabb társadalmi és emberi értékeket...

Még nem végeztem a videóval, de így is meggyőződésem, hogy egyszerűen elbeszélsz a résztvevők mellett, egész pontosan olyasmit vársz tőlük, amire ők nem vállalkoztak.

Ők a piaci trendeket elemzik, nem azt, hogy ennek az emberiség magasabb értékeire milyen lesz a hatása.

Nemcsak a fenti mondatodnál, hanem több más ponton is azt érzem, hogy nem azt érted ki a mondandójukból, amit valójában közvetíteni szerettek volna. A "Hacker newst" említő résztvevő például biztonsági szakember, aki nyilván máshogy áll ehhez a kérdéshez, mint te, hogy mást ne említsek.

(Ezzel együtt elismerem, hogy részben az igen alapos hozzászólásod hatására kezdtem el megnézni.)

olyasmit vársz tőlük, amire ők nem vállalkoztak [...] Ők a piaci trendeket elemzik

Rendben, elfogadom, hogy ez a cél, de a szóhasználat / hangnem néha nem ezt tükrözi. (Elfogadom azt is természetesen, hogy ez egy nem előre koreografált, hanem improvizált "panel" beszélgetés.) A "hajléktalan bevásárlókocsija" metafora pl. nem piaci trend, hanem egy személyes (és indokolatlanul durva, sarkított) értékítélet; érzed a különbséget az "elavult, eladhatatlan szaktudás" kifejezéshez képest?

Aztán hallgasd meg 1:23:36-tól 1:23:49-ig: "amikor abban pontosan ugyanannyira lehet rossz kódot írni". Ennek zérus az információtartalma; sem a piacról nem mond semmit, sem konkrét nyelvekről. Annyit fejez ki, hogy "idegesít, amikor a fejlesztők programnyelvekről vitáznak". Hitelteleníti a műsor elemző, lehetőség szerint objektív hangnemét.

A "hajléktalan bevásárlókocsija" metafora pl. nem piaci trend, hanem egy személyes (és indokolatlanul durva, sarkított) értékítélet.

Szerintem annyi a megfejtés, hogy máshol van a "humorszintetek". Ha megfigyeled, a hozzászóló, aki bedobja ezt a hasonlatot, rögtön el is veszi az élét azzal, hogy a saját bevásárlókocsijáról kezd beszélni.

Aztán hallgasd meg 1:23:36-tól 1:23:49-ig: "amikor abban pontosan ugyanannyira lehet rossz kódot írni". Ennek zérus az információtartalma; sem a piacról nem mond semmit, sem konkrét nyelvekről.

Én ezt a poént is értettem, de akkor konkretizálom neked egy saját példával.

A kutatók között egy csomó olyan akad, aki szilárdan hiszi magáról, hogy ő tud programozni.

Csak hát nem.

Egyszer 3 hétig debugoltam egy kollégám által elkövetett Fortran kódot. (Ez nekem egyébként pszichésen elég fájdalmas tud lenni, mert nem tudom a problémát elengedni.) Közben négyszeresen egymásba ágyazott, GOTO-val szervezett ciklusokat fejtettem vissza, ötbetűs, értelmetlen nevű szubrutinok "kilétét" derítettem fel.

És megtaláltam. 

Ott követtem el a hibát, hogy bíztam a Kolléga ép eszében. Soha nem gondoltam volna ugyanis, hogy nem a saját kódjába, hanem az általa használt, de amúgy más által írt cirka 120.000 soros könyvtárba fog belerondítani úgy, hogy három random helyen fixen definiálja három tömb méretét 10-re. És végignézte a háromhetes szívásomat és nem szólt egy szót se, mert gondolom már nem is emlékezett rá, hogy mit művelt.

Én ez után az eset után hosszan haragudtam a Fortran nyelvre, míg rá nem jöttem, hogy tulajdonképpen a Fortran programozókra haragszom.

Mert mindenben lehet jó kódot írni, még Fortranban is, csak szükségeltetnek bizonyos képességek.

Elgondolkodtató. Köszi.

(Szerk.) Mindkettőnknek igaza van talán. Egyrész mondhatjuk, hogy a nyelv mellékes, mert az emberi tényező sokkal fontosabb a minőség (főleg a szélsőségek) szempontjából. Másrészt mondhatjuk, hogy más nyelv ugyanabból az emberből mást hoz ki, és így nyelvek összehasonlítása nem érdektelen.

Megint oda lyukadunk ki, hogy a legnehezebb másokkal együtt dolgozni; az én kreativitásomat ne korlátozza a nyelv, és a kifejezésemet, gondolatmenetemet ne akarja gúzsba kötni -- de a másik randalírozását igenis szorítsa határok közé, amennyire csak lehet :)

Szerkesztve: 2025. 01. 01., sze – 07:39

meh, nemide