Czy JavaScript to język wart Twojej uwagi oraz szacunku na dzielni?

JavaScript jest z nami od 1995 roku — ale czy nadszedł już czas, kiedy bycie programista JavaScript nie wywoła oburzenia wśród kolegów Java-owców, że jak Ty programujesz w JavaScript to nie zasługujesz na miano programisty-profesjonalisty — bo JavaScript to nie jest język programowania zasługujący na respekt na dzielni — i co najwyżej możesz mówić o sobie koder.

Uwaga! Teraz będzie trochę wstępu — głównie pitu-pitu — do JS wracam tutaj.

Andrzej Krzywda (pozdro!) dał mi tylko 30 minut na napisanie tego postu, więc proszę o przebaczenie mi wszystkich byków, błędów, innych słownych pierdolników — więcej grzechów nie pamiętam, za wszystkie serdecznie żałuję - poprawię się — obiecuję — mea culpa!

A teraz zabiorę Was w podróż w czasie, do roku 2006 — kiedy ja — absolwent szkoły średniej o profilu matematyczno-informatycznym zdałem maturę i doszedlem do wniosku, że studiowanie jest dla innych — że nie po to otwierali granice EU — żebym teraz studiował 5 lat! C’mon! Spakowałem się i wylądowałem w UK.

Mniej więcej po roku wykonywania najróżniejszych prac fizycznych doszedłem do wniosku, że prospekty są marne — i jak się nie zabiorę za jakis konkretny fach to będzie bieda — i wymyśliłem — wait for it.. — zostane programista!

Jak to się wszystko w ogóle zaczęło

Kupiłem sobie kilka książek od heliosa oraz kilka kursów na eduweb.pl (pozdro dla Grzegorza) — idę o zakład, że połowa ludzi wykonujących dziś zawód front-end dev w Polsce zaczynała naukę z kursów Grzęska!

Tak się zaczęła moja przygoda z HTML, CSS i JS. Oh, cóż to były za czasy! W HTML wpisywało się wersje! W CSS3 można już było zrobić zaokrąglone rogi — zaokrąglone — bez użycia JPG! Olaboga!

W tamtych czasach JavaScript to był jeden plik o nazwie index.js, w którym jedyną i pierwszą zasadą było żeby zadeklarować funkcję przed jej użyciem! Miał tysiące linii — i wrzuciło się go na produkcję — bez komplikacji — bez minifikacji — bez testów. YOLO. Pełna partyzantka.

Fakt, faktem, w tamtych czasach JavaScript używało się głównie do tworzenia głupich animacji menu, czasami do walidacji formularzy i od święta do ładowania danych poprzez XHR.

Ale już niedługo los JavaScript miał się odmienić — wymienie 2 Panów, którzy wg mnie mieli gigantyczny wpływ na rozwój JS.

W kolejności w mojej liscie all-stars:

  • John Resig — tworca jQuery
  • Ryan Dahl — tworca NodeJS

A reszta drogi Panie, jak to mówią.. to już historia!

Dzięki jQuery JavaScript stał się dużo bardziej przystępny — albo przynajmniej mniej straszył — oraz nie było już potrzeby pisania rzeczy specjalnie na Firefoxa lub na IE.

jQuery była wg mnie jedną z pierwszych bibliotek, która stała się nowym standardem w świecie JavaScript.

NodeJS to byl tzn GAME CHANGER — pozwalał na egzekucję JavaScriptu na serwerze — JAVASCRIPT NA SERWERZE — piekło zamarzło! Ale co ważniejsze, dzięki NodeJS cały ekosystem JavaScript ostro ruszył do przodu — bo teraz narzędzia do pracy z JavaScript mozna bylo pisac w JavaScript! Incepcja.

Te dwie rzeczy moim zdaniem dały gigantycznego kopa całemu JavaScript community oraz TC 39 (goście, co mówią, że coś jest w języku albo nie) — rozpoczęto w ogóle rozmawiać o zmianach w języku.

Był rok 2010, i wtedy dopiero miała się zacząć jazda bez trzymanki!!! Na ring wszedł NPM — pomysł skopiowany w całości od innych ekosystemów ale jakże potrzebny w świecie JS!

Powstał Backbone.js, AngularJS oraz Ember.js — w tym samym czasie powstał również Grunt oraz Gulp.

Aż się kurde spociłem na samą myśl o tamtych czasach! Nowe frameworki powstawały szybciej niż Helios był w stanie drukować o nich książki!

JavaScript wszedł ostro w świat aplikacji webowych i kazał FLASH-owi oraz SILVERLIGHT-owi pakować mancho i wypier**.

Z narodzinami Backbone/AngularJS/Ember przyszła kryska na pisania aplikacji w jQuery — które powstawały — ale każda z nich którą ja osobiście widziałem na oczy — to za każdym razem była jakaś grecka tragikomedia — brakowało porządnego module system + bundler — co w przypadku Backbone/AngularJS/Ember zapewniał NodeJS + GRUNT/GULP.

Wraz z pojawieniem się Backbone/AngularJS/Ember biznesy rzuciły się jak reksio na parówki - i KAŻDY większy nowy system w firmach gdzie pracowałem powstawały w JS — a wraz z tym trendem pojawia się nowa nazwa na tego typu aplikację — SPA — single page application.

Zmienił się paradygmat — albo jakieś inne podobnie brzmiące słowo — przeglądarka lądowała cale JS i tylko wykonywała zapytania XHR aby pobrać dane! Nie trzeba przeładowywać strony? Nie trzeba czekać na odpowiedź z serwera z wygenerowanych HTML?!?! WOW! Emejzing!

Mniej więcej w tym samym czasie na scenę wchodzi MongoDB — i wszyscy dostali dzikiego szału — NO SQL — “Co to znaczy NOSQL?! Nie wiadomo, nikt nie wiedział, ale działa z NodeJS! I to mi wystarczy!” :D Między 2012-2015 w każdej firmie gdzie pracowałem MongoDB rządziło i to być może dzięki MongoDB NodeJS dostał nowe bardzo odpowiedzialne zadanie — będziemy budować APIs w NODEJS! Bo można! I bo był rok Pański 2012 AD!

Rok 2013, Google ma swojego AngularJS i Facebook nie chce być gorszy. Do gry wchodzi React! Boom!

Przez pierwszy rok myślałem, że wsadzanie HTML do JS to jakiś przeklęty szatański pomysł! Nie po to go stamtąd wciągaliśmy, żeby teraz go z powrotem tam wsadzić! Ale łatwość nauki Reacta zrobiło swoje — React + Flux przejęło pałeczkę jako nowy cool-kid-on-the-block od AngularJS — a pojawienie się Reduxa tylko przyspieszyło wzrost popularności Reacta.

W porównaniu do aplikacji napisanych w AngularJS oraz ich słynnego two-way-binding — wtedy wszyscy jeszcze myśleliśmy, że to dobry pomysł — React + Redux uratował zdrowie psychiczne wielu Front-End-wców.

Gdzie jestesmy dzis

No dobra… ale dość już tego pitolenia o tym co było. Na czym stoimy dziś.

NodeJS + NPM stał się standardem w świecie JS — używają go wszyscy. Nie ważne czy piszesz API w NODEJS czy aplikacje w Angular/React/Vue (btw, npm został niedawno wykupiony przez GitHub).

Aktualna wersja ES to… tego to nawet najstarsi indianie nie pamiętają — bo po co?:) ES6 wyszło w 2015, ES7 w 2016, ES8 w 2017 — wychodzi kurde, że jesteśmy na ES10! Na co dzień aktualna wersja ES nie ma to żadnego znaczenia. Kod piszemy tak aby babel wiedział co z nim zrobić — nie ważne na jakim stopniu adaptacji są przeglądarki ponieważ całość i tak zostanie transpilowana do ES5.

Większość oficjalnych i nieoficjalnych starter-packów używa webpack + babel — więc to też można uznać za standard.

TypeScript też ostro zyskuje na popularności — między nami profesjonalistami mogę Ci w tajemnicy powiedzieć, że mimo, że ja osobiście na TypeScript-em nie przepadam — to wystarczy aby TypeScript uratował Ci dupę chodź jeden raz to naprawdę warto by go używać.

W mojej codziennej pracy piszę JavaScript dla BE w NodeJS (serverless API) oraz FE React/Angular/VUe — syntax jest identyczny. Jedyny inny język, którego używam regularnie to BASH — zeby sobie napisac skrypty do wrzucania czegos na AWS :D Wszystko co konfigurujemy jest albo w JSON albo w YAML. Życie jak w Madrycie!

Jeden język. Robisz wszystko. FE + BE. Sweeeeeeeeeet!

Piszą nawet w nim soft na zegarki — serio.

Podsumowując, JavaScript się w tańcu nie pierdoli. Może nie jest to Ruby — ale tez jest zajebiście!

PS. Programisto! Pamiętaj! Mimo że JS jest git, to najlepszy język programowania na dziś to ten - który już znasz!

Yo! Piotr Bogusław Seefeld