O mneSkúsenostiBlogKontakt
LinkedInGitHubGitLabWhatsApp
Všetky články

5 min čítania

Polčas rozpadu

careerailearningopinion

V roku 2018 som začal po večeroch kupovať istotu.

Desiatky kurzov, všetky z vlastného vrecka, pozerané po práci, keď dom konečne stíchol. Angular, ten 2+ prepis, ktorý zahodil všetko, čo nás naučil AngularJS, bol jednoducho to, čo som chcel ako ďalšie, a v pracovnom čase mi to nikto podať nemal.

Do roku 2021 sa z toho stala plynulosť, dotiahnutá takmer k dokonalosti. Jadro frameworku ma už dávno nestálo žiadne premýšľanie; skúsenosť siahala tak hlboko, že som ladil aj takú okrajovú vec, ako sú mixiny. Tie reťazili factory do factory, každá brala základ a vracala niečo širšie, a celý reťazec končil v prázdnej triede, ktorá existovala len preto, aby bola podlahou.

mixinUnsubscribe(mixinColor(mixinDisabled(Base)))

Z hlavy, rýchlo. Ten unsubscribe bol môj, aby nič, čo sme vypustili, nemohlo pri deštrukcii nechať visieť subscription. Za osem rokov som stretol presne jedného ďalšieho vývojára, ktorý ich písal takto.

To, čo som k tej zručnosti cítil, nebola ctižiadosť. Bol to pocit istoty. Túto, myslel som si, budem používať roky. Nespochybniteľné.

Aritmetika

Straty mi naskakujú bez námahy. Ručne písané aktory, prenesené z jazykov, ktoré ich mali poriadne. Callback pyramídy, potom promise reťazce, ktoré som sa naučil, aby som z tých pyramíd unikol, a potom async/await, ktoré väčšinu tých reťazcov poslalo do dôchodku. Záchranná technika, ktorú bolo treba zachrániť.

Nič z toho nie je sťažnosť. Učiť sa ďalšiu vec je súčasť práce a kto čakal, že ho jedna zručnosť uživí tridsať rokov, zle si prečítal zmluvu.

Ale keď ten vzorec predĺžite dopredu, vyzerá to zle. Ak je životnosť toho, za čo ma platia, zhruba päť rokov, nikto nad tridsaťpäť by nemal mať čo predať.

A pritom najzamestnateľnejší ľudia, akých poznám, sú tí, čo to robia najdlhšie. Takže tá aritmetika je niekde chybná.

Noc, keď som si to postavil sám

V roku 2024 som si na domáci server nasadil model.

Môj notebook nemal dedikovanú grafiku, takže čokoľvek vážne tam nikdy nebolo reálne. Server áno. Naklonoval som projekt, riadil sa jeho README, postavil izolované Python prostredie vo WSL a stiahol dolphin-mistral. Rozbehnutie trvalo asi hodinu. Nič z toho nebolo ťažké, a práve to stojí za povšimnutie: stavalo to len na veciach, ktoré som už vedel.

Nahováral som si, že som postavil súkromný Google. Jeden domáci server a jedna grafika sa vyhľadávaču v rýchlosti nevyrovnajú a mne to bolo úplne jedno: nič, na čo som sa spýtal, neopustilo hardvér, ktorý vlastním, a na rozdiel od vyhľadávacieho okienka si to držalo niť toho, čo sme už povedali.

Potom som našiel Python knižnice, vďaka ktorým som doňho prestal písať a začal sa s ním rozprávať. Volanie API, odpoveď späť hlasom. Pomalšie, než by to bolo dnes. Ale sedel som so slúchadlami na ušiach a viedol rozhovor so strojom v inej miestnosti, s hardvérom, ktorý mi patril, a každý kúsok toho som zapojil ja.

Sci-fi, podľa akéhokoľvek meradla, s ktorým som vyrastal.

Potom pod ten prvý pocit prišiel druhý, tichší a oveľa horší. Použil som každú zručnosť, na ktorú som bol hrdý, na to, aby som postavil vec, pri ktorej som si začal klásť otázku, či tie zručnosti ešte vôbec niečo znamenajú.

Časť, ku ktorej sa stále vraciam, je tá grafika. Môj vlastný stroj to nedokázal. Model bežal inde a ja som k nemu siahal cez sieť.

Znalosť prestala byť rezidentná. Stala sa niečím, na čo sa pýtam. Postavil som to v hardvéri dva roky predtým, než mi došlo, že sa to už stalo aj v mojej hlave.

V skutočnosti nič neumrelo

Takmer nič z toho zoznamu strát nie je mŕtve.

RxJS sa dnes používa. Java streamy sa dnes používajú. SCSS loopy, vstavané funkcie T-SQL, lodash, server-sent events, Docker images, ktoré stále píšem a publikujem: všetko živé, všetko stále v nasadení. Vedel som naspamäť desiatky RxJS operátorov a RxJS používam stále. Len si ich už nepamätám všetky a nie do takých detailov, a nestojí ma to vôbec nič.

Technológia nevypršala. Vypršalo moje vybavovanie z pamäte.

To je celý príbeh. Automatizované nikdy nebolo inžinierstvo. Bola to vyhľadávacia tabuľka, ktorú som si s inžinierstvom pomýlil, pretože to bola tá časť, ktorá zvonku vyzerala ako čarodejníctvo: okamžitá, ľahká, vrstva bežiaca pod tou viditeľnou, ktorú som vedel čítať a väčšina ľudí nie.

Vedieť to čítať ale nikdy nebolo to isté ako vedieť sa rozhodnúť. Model dokáže bezchybne odrecitovať všetkých sedem úrovní propagácie transakcií v Springu a vedel to vždy. Vybrať tú, ktorá obalí prevod peňazí, a vedieť, čo rollback urobí s auditným záznamom pod ňou o druhej v noci, je úplne iný orgán.

Odpovede, ktoré nikto nezapísal

Neskôr som sedel v prepise, ktorý nemal vyjsť. Legacy monolit, termín vyjadrený excelovou tabuľkou a správanie, ktoré nikto v tíme nevedel úplne vysvetliť, vrátane mňa. Dokumentácia existovala, ale bolo jej málo a už roky nesedela s realitou. Čo sme mali, bol kód.

Naučili sme sa, čo ten systém znamená, počas písania toho, čo ho malo nahradiť. Nová technológia, tesnejší návrh, menej chýb, lepšie čísla, oproti dátumu, ktorý sa nehýbal.

Nič z toho nebolo vybavovanie z pamäte. Bolo to čítanie situácie. Ktoré správanie bolo nosné a ktoré bola nehoda spáchaná pred rokmi, ktorú sa všetci naučili obchádzať. Ktorá chyba bola v produkcii tak dlho, že na nej ľudia začali závisieť. Kedy sa ísť opýtať a kedy by to opýtanie stálo viac než rozhodnúť sa.

Žiadna z tých odpovedí neexistovala ako text, kým sme ju nevypracovali. Nie na wiki, nie na Stack Overflow, nie v žiadnom korpuse, na akom kedy niekto trénoval model.

O tom rebríku

Férová námietka: taký úsudok vzniká z rokov drilovania základov, takže zautomatizujte základy a nikto si ho už nevybuduje. Rebrík je preč.

Nemyslím si, že ho tie základy niekedy vybudovali. Ten môj vznikol tak, že ma ako juniora hodili do hlbokej vody, do poisťovacieho systému pre desaťtisíce ľudí, bez sandboxu, kde každý commit išiel rovno do produkcie. Učil som sa rýchlo sčasti preto, že som chcel, a hlavne preto, že som musel.

Užitočným ma nikdy nespravilo vyhľadávanie informácií. Spravilo to nesenie váhy o kúsok skôr, než som si to očividne zaslúžil.

Tá cesta je stále otvorená a pravdepodobne širšia, pretože daň, ktorá kedysi zožrala juniorovi prvé roky, klesla takmer na nulu.

Nezmenilo sa to, že vám tú váhu musí niekto podať. Ak nejaká priečka mizne, je to práve táto, a jej odobratie je rozhodnutie ľudí, nie niečo, čo urobila technológia.

Buďte presní v tom, čoho sa vlastne bojíte.

Čo sa úročí

Hral som osemnásť rokov na trúbku, od svojich piatich. Arbanove etudy drilované dovtedy, kým neboli moje, a mozole na perách ako dôkaz odpracovaných hodín. Dnes už nehrám a nič z toho nevyšlo nazmar, pretože tou hodnotou nikdy nebola trúbka.

Prenieslo sa všetko, čo stálo okolo nej. Počuť, že je niečo mierne mimo, skôr než to viem vysvetliť, tak ako viete, že tón je nízky, skôr než pomenujete interval. Ukázať sa aj v dňoch, keď sa mi nechce. Byť ochotný byť v niečom viditeľne zlý, kým nie som.

To prežilo nástroj. Prežilo to AngularJS. Prežije to aj toto.

Tak prestaňte brániť tú časť, ktorú stroj zvládne lepšie. Ten súboj prehráte a vaša hodnota nikdy nebola tam. Choďte a postavte sa tam, kde sú následky. A čítajte diff skôr, než ho spustíte, pretože tá istá zručnosť, ktorá vám dovolí stavať rýchlo, je jediné, čo vám dovolí zachytiť, čo je zle.

Ak ste práve uprostred tohto a nedá vám to spávať, radšej sa ma opýtajte, než by ste s tým sedeli sami. Na to moja schránka je, a nielen na prácu.

Nie ste zastaraní. Zastaraná je vaša vyhľadávacia tabuľka a vy ste vždy boli oveľa viac než ona.

Pôda sa znova pohne; vždy sa pohne. Jediná otázka je, či mienite stáť na tej novej skôr, než sa zaplní.

Zručnosť sa dá zrušiť. Reflex ešte nikdy nikto nezrušil.