Utrpenie moderného vývojára

Frustrácia pokračuje. Musím sa na tom už smiať 😀

Keď som kedysi začínal s 3D grafikou, tak som mal problém, že počítače neboli dostatočne rýchle a výkonné. Niekedy to platilo aj o bežnej 2D grafike. V tej dobe bola väčšina mojich kamošov programátori. Radi si ma za to podpichovali so slovami, že oni takéto problémy riešiť nemusia.

A mali v istom ohľade pravdu. Bola to zlatá éra vývoja. Bezpečnosť nebola až taká téma. Ani škálovateľnosť či modulárnosť sa nezdala byť témou dňa. A v zásade väčšinou nikto nepotreboval svoj kód kompilovať. Písalo sa v perly, pythone, jave, ASP, PHP… Ba čo viac kód nebolo treba testovať voči rôznym špecifickým situáciám na množstve operačných systémov a zariadeniach. A na písanie jednoduchého kódu nebolo zapotreby super počítače. Mnoho ľudí tomu verí aj dnes. Situácia sa pritom celkom zmenila.

Prišla nová doba a s ňou aj móda. Programovacie jazyky začali používať modely, objekty a všakovaké vylepšováky, ktoré vniesli do kódu určitý pátos. Programátori si dnes nevystačia s bežným textovým editorom, ale potrebujú rôzne IDE (Integrated Development Environment), ktoré im pomáhajú sa v tomto bordely orientovať.

Medzi prvé masovo populárne IDE patrili netbeans a eclipse. Open Source editory určené v prvom rade na vývoj java aplikácii. Samotné IDE boli v Jave napísané, čomu odpovedala aj rýchlosť s akou sa na týchto editoroch pracovalo. Len spustenie samotného editora trvalo dlhšie ako spustenie samotného operačného systému alebo takého 3Ds Max či Photoshopu. Na zamyslenie…

O nič lepšie na tom nebola ani práca so samotným programom. Rýchlosť s akou sa v nich pracovalo na starších počítačoch bola závratná. Človek si mohol odskočiť na kávu… veď java.

A tak ako som s programovaním začal, tak som aj skončil. Jednak nemám rád, keď aplikácie na moje príkazy neodpovedajú alebo musím na výsledok čakať. A v neposlednom rade ma objektovo orientované programovanie ani obmedzovanie v akýchsi MVC architektúrach nebavilo. Prišlo mi to značne obmedzujúce. Priam limitujúce až do takej úrovne, že som veril, že sa to neblaho podpíše na všetkom, čo v tom bude napísané. A presne to sa aj stalo. Všetko je pomalšie a pritom s nulovou invenciou na funkcionalite. Viac zdrojov (výpočtového výkonu) za rovnakú funkcionalitu.

A tak zo zvedavosti som sa začal pýtať ľudí, čo so mnou v tých časoch začali programovať a vydali sa cestou vývojárov. Ukázalo sa, že takmer nikto z nich už nedokáže alebo nechce ďalej programovať. Jednoducho to je príliš komplikované a zadebnené desiatkami nezmyselných závislosti. Celá krása jednoduchosti je fuč. Príliš veľa na bežného smrteľníka. Nikto nechápe čo sa stalo a prečo sa to stalo. Chápu to len premotivovaní evanjelisti a promotéri nových technológií.

To čo sa kedysi dalo napísať pár riadkami a bolo závislé na pár vrstvách je dnes rozložené do desiatok od seba nezávislých technológií a vyžadujú si desiatky samostatných súborov s množstvom kódu. Jedna vrstva zlyhá a takmer nič nefunguje. Zázrak, že vôbec niečo funguje…

Dostať jednoduchú stránku na internet vyžaduje nie len skúseného ale aj veľmi trpezlivého developera, ktorý sa ukája v tom ako celý tento masochizmus dokáže rozbehať aspoň na virtuálnom serveri či inom izolovanom priestore. Používať zdieľaný hosting je zrejme amatérčina. A k tomu aby sme vedeli moderné weby užívať sú zapotreby špecifické konfigurácie. Fakt pokrok! Hlavne v dobe kedy je potreba šetrenia zdrojov či možnosť škálovateľnosti…

Pán boh chráň ak sa v týchto hotových aplikáciach snažíte niečo upratať a opraviť. Sto stranové dokumentácie ku všetkému sú dnes nevyhnutnosť. Pozícia Technical Writera získava nový rozmer.

Niektorí príčetní sa z toho snažia dostať cez statické weby. Akurát to je neuveriteľná cesta späť. A s rovnakou chorobou ako sa začal prasiť vývoj webu sa začali tí istí poškodení jedinci usilovať o riešenie v neriešení. Na to aby si človek mohol spraviť túto modernú statickú stránku potrebuje inštalovať vývojové prostredia pre špecifické a moderné programovacie jazyky ako je Node.js, Golang, Ruby, v lepšom prípade Python, PHP, Java a pod.

Poviete si, že nainštalovať program je jednoduché. Nie však Ruby! Ani Node.js. Ešte ako tak Python a Javu. Všetko ostatné si vyžaduje najprv nainštalovať niečo iné. Napr. na macu homebrew. Ten je vo svojej podstate fajn nápad, akurát prevedenie je čistá tragédia. Homebrew nefunguje ako bežný repozitár, ktorý by ponúkal hotové binárne (spustiteľné a vykompilované) knižnice a aplikácie ako je to v Linuxe. On si všetko v pozadí kompiluje. A tak jednoduchá knižnica na vývoj Node.js sa mi na mojom síce postaršom laptope aj so všetkými závislosťami kompilovala dobré 4 hodiny.

Môj laptop je dôchodca. Nerád ho vystavujem takýmto šokom. Kompilácia totiž bolí. Procesor ide vtedy často naplno. To znamená obrovské prehrievanie procesora. Chudáčik ledva odfukoval. Ale zvládol to.

A čo získame? Ďalší repozitár ako je napr. npm 😀

No nie je to krásne? Do operačného systému inštalujeme repozitár pre ďalší repozitár. Aby sme tak vôbec mohli urobiť je potreba stiahnuť celú sadu vývojárskych knižníc, ktoré obsahujú presne tie knižnice, ktoré sa budeme pomocou repozitára obchádzať. Genialita hodna nobelovky.

Problém však je, že toto celé podstúpiť len preto aby som mohol vyvíjať na Node.js mi príde trošku scestné? V čistom čase som absolvoval zhruba 5 hodín inštalovania určitej vývojovej platformy, ktorá by mala byť dostupná na 3-4 kliknutia. Napr. kliknem na App Store, vyhľadám Node.js a kliknem inštalovať. Celé. A veselo programujem. Ideálne do pár minút.

Možno si vravíte, že je načase vymeniť počítač. Ja si to nemyslím. Počítač zvláda renderovať FullHD videá, spracovávať 3D vizualizácie, ale má problém s jednou vývojárskou knižnicou?! Knižnicou, ktorá má slúžiť na tvorbu serverových a webových aplikácií. To mi nevychádza. A hlavne nerozumiem prečo je potrebné to kompilovať?

A toto platí o všetkých moderných technológiach ako je Vue.js, React.js, TypeScript, Less, Sass a pod., o čom som už písal v inom článku.

Podľa niekoho je cestou docker. A má pravdu. Docker je úžasná technológia. Jedna z tých, o ktorej som sníval od doby ako som objavil možnosť virtualizácie. Docker celý proces zjednodušil. Teda až na pár drobností. Na to aby Docker mohol fungovať na Macu je zapotreby grafické rozhranie. A celé ma to stojí iba 1,66GB dát na disku. O objemnosti aplikácii som v minulosti tiež písal. S pachuťou v ústach mi však neostáva nič iné. Naviac grafické prostredie je pomalé a závislé na množstve ďalších vrstiev. Celé zle.

Prečo je grafické rozhranie vynútené je dosť cez čiaru. A nie je mi to jasné nakoľko nejde o platformu pre bežných užívateľov. A ak už, tak by predsa stačila inštalácia dodatočnej grafickej nadstavby. Zvláštne sú aj iné veci, ale som rád, že docker existuje. Lebo prežiť v dnešnej dobe ako vývojár bez dockera je pre mňa nepredstaviteľné.

Ohromujúce je, že takéto pochybné dohody s diablom sú vo všetkom. Každá jedná technológia si niečo vynútila a stala sa súčasťou každodenného života a pridala len ďalšiu záťaž do celého ekosystému. Myslím si, žeby sa mali páni vývojári spamätať.

Samozrejme je to ich vec, ja tomuto celému dávam zbohom a budem sa na to pozerať z bezpečnej vzdialenosť. Vec sa má tak, že kedysi veci boli jednoduchšie. A žili sme. Tvorili sme. Dnes je však všetko prehnane komplikované. Cez rôzne nezmyselné UX paradigmy či iné sentimentálne úchylnosti sa snažíme ťažko budovanú funkcionalitu orezávať. Následne jednoduchá aplikácia stojí na miliónoch riadkoch zbytočného kódu, ktorému beztak nikto nerozumie. Nadovažok stačí letmý vánok a celé sa to zrúti.

Je preto najvyšší čas prestať stavať babylonské veže a vymýšľať vymyslené. Nekomplikujme si život. Je príliš krátky. Riaďme sa heslom – jednoduché veci slúžia najlepšie. V opačnom prípade my slúžime našim vlastným výtvorom.


Publikovaný

v

od