Všimol si v praxi nasledovné: bývalý profi Java programátor z Telekomu začal v januári s JS projektom - na frontende SPA s Vue, komunikujúcu cez REST so serverless backendom bežiacim v JS v Lambdách nad AWS. Po dvoch dňoch oboznamovania sa s novými princípmi a jazykom plne kódil v JS, po dvoch mesiacoch sme spolu dokončili celú serverless web aplikáciu. Ani slovkom si nesťažoval na JS ani na serverless, ani na microservices princípy, na nič. Naopak, celá serverless architektúra sa mu páčila tak, že ju bol v Telekome odprezentovať bývalím kolegom, lebo umožňovala písať web aplikácie výrazne rýchlejšie a prehľadnejšie. A JS sa mu vyslovene zapáčil, obzvlášť kvôli Promisom. Dnes robí na inej web aplikácii, v Jave, ale frontend robí naďalej ako SPA a backend v Jave, ale už len ako REST API.
Iný profesionálny Java developer, šéf developer vývoja bankových aplikácií. Drvivou väčšinou robia aplikácie pre banky nie ako desktopové apky, ale vo forme web aplikácií s Vaadin frameworkom. Nikdy HTML/CSS/JS či Ajax neriešili, proste si frontend navrhli vizuálne, z komponentov poskytovaných Vaadinom. Ale aj nový Vaadin prešiel na web komponenty na frontende, konkrétne na Polymérové. To bolo pičovania na tú zmenu, to ste ešte nezažili. Deň na to ako sme sa o web komponentoch porozprávali, ako pochopil ako sú tie komponenty napojené na Java backend, že sú navyše reaktívne a samé sa aktualizujú, po tom ako si to cez deň vyskúšal, večer už hurá, nech žije reaktívny pattern, uznanlivo pokyvkával hlavou ako mu to zjednoduší a urýchli vývoj.
Takže nie len ten článok čo som sem v predošlom príspevku vložil, ako bol profi Java developer od Sun nadšený z JS, ale ani profesionáli z môjho okolia, voči JS a novým princípom vývoja web aplikácií ktoré prišli vďaka Node platforme, nemajú nič proti. Všetci v tom vidia posun vpred.
Potom prídem na nejaké bezvýznamné fórum, kde anonymne každý druhý 20 ročný murár s fušovaním do programovania ako s voľnočasovou aktivitou sa cíti povolaný kritizovať nejaký jazyk. A to nie preto, žeby ho v dobe jeho vzniku vedel za daných podmienok navrhnúť lepšie. Nevedel. Ani jeden jediný z tých kritikov. Tak prečo potom kritizujú? Možné sú len tieto dôvody:
Prvý: ješitnosť. Keď murár konečne dogooglil, že najviac hype je okolo Go, tak sa s vypätím posledných síl po šichte naučil na ubytovni pri sviečke aspoň základný syntax Go a ako prvé sa nerozhodol niečo naprogramovať, nemá na čom, notebook by mu zo skrine ukradol jeden z desiatich ukrajinských spolubývajúcich, no tak aspoň hejtuje z mobilu na fórach každý jazyk, ktorý nemá rovnaký syntax ako Go.
Druhý možný dôvod nie je o nič lepší: nedostatok znalostí / praxe. Kuchár, ktorý sa časom naučil programovať, typicky v PHP, ale tam aj končí jeho rozhľad. Nevie, že existuje mnoho jazykov postavených na rôznych paradigmách a nikdy sa nedelia na dobré a zlé, ale podľa účelu za ktorým vznikli a podľa vhodnosti či nevhodnosti na ten či onen typ úlohy. Bez tohoto potrebného nadhľadu a hlbšej znalosti teórie programovania tak delia jazyky jediným spôsobom: na dobré a zlé. Presnejšie na ten jediný čo vedia a "tie ostatné".
Ďalším dôvodom je nedostatok kritického myslenia: programátor, ktorý sa naučil programovať hlavne z tutoriálov na nete a tak čokoľvek, čo nájde na nete napísané, považuje za slovo božie. Vlastné názory, premýšľanie nad tématikou, to je mimo neho, to je nad jeho mentálne kapacity a ak sa k niečomu vyjadrí, najskôr si vygoogli cudzie argumenty a potom si sem len nakopíruje, či nalinkuje.
Ďalšie možné dôvody sa mi nechce písať, stačí ak si uvedomíte jedno: ak aj máš akademický background, nestrápňuj sa kritikou JS, lebo v danej dobe, za daných podmienok, za danej úrovne techniky a teórie, by si JS navrhol lepšie. A uvedom si, že to vedia aj vývojári JS a neopravili dané problémy len preto, aby ostal spätne kompatibilný.
Ale aby som aj ja len nekritizoval, tu je návod ako na JS pre menej bystrých: nainštaluj si VS Code, nainštaluj si Flow, maj zapnutý Linter a nastav aby Ti Flow zbehol kód pri ukladaní a každý kód začni dvoma riadkami:
// @flow
'use strict'
Potom nebudete mať problém s vašimi "neprekonateľnými problémami" s JS. Žiadne == nebude povolené, iba ===, žiadne nesprávne typy odovzdané funkciám, na všetko budete upozornení. Následne sa zamestnajte v reálnom tíme a aj tam aj sami prídete na to, že sú vám statické typy za behu hovno platné, a že ochranou pred chybami je TDD, nie typový systém.
Happy coding, ovce
