Angular oczami backendowca
Praca we frontendzie kojarzy się sporej części programistów, zwłaszcza tych związanych z „prawdziwymi” językami, z całkowitym chaosem i koszmarem. W ostatnich wpisach wspominałem, że zmieniłem projekt. Wiązało się to z dodaniem do swojego stacku technologicznego kolejnej cegiełki. Jest nią Angular. Do tej pory pracowałem głównie z backendem i językiem C#. Jak w takim razie odnajduję się w nowym środowisku? O dziwo bardzo dobrze.
Na świeżo
Oczywiście rozpoczęcie projektu wiązało się z koniecznością poświęcenia dodatkowych godzin na intensywną naukę. Ale praca programisty tak wygląda. Jest to ciągła nauka. Więc konieczność poznania nowego frameworka nie jest niczym niezwykłym.
Na początku warto zaznaczyć, że w moim przypadku wejście w technologie frontendowe wiązało się z rozpoczęciem świeżego projektu. Klient chce, żeby nowa wersja jednej z podaplikacji była przepisana na Angulara i m.in. do tego zostaliśmy wynajęci.
Rozpoczęcie pracy z Angularem od świeżego projektu, który w dodatku samemu się zakłada ma swoje plusy i minusy. Na pewno różnią się one w zależności od tego czy robi to osoba, która po prostu zmienia technologię czy jest całkowicie świeża w programowaniu. Ja oczywiście będę mówił z perspektywy osoby, która trochę kodu już wcześniej napisała w różnych projektach.
Dużym plusem zaczynania od zera jest dla mnie możliwość łatwego testowania różnych rozwiązań i bawienia się technologią. Dodatkowo terminy nas nie gonią, a zespół jest malutki bo dwu osobowy. Przez to sprawdzanie różnych wariantów podejścia do problemu daje możliwość lepszego nauczenia się co z czym dobrze się komponuje. Dodatkowo mały, dopiero co utworzony projekt to też mało rzeczy, do których trzeba się dopasować, i które nas ograniczają. Dlatego też czuję, że mam duże pole do manewru i możliwość faktycznie samodzielnego dążenia do optymalnego rozwiązania.
Jednak nowy projekt, niezależnie od doświadczenia w innych technologiach, to też ryzyko, że stworzymy coś co na dłużą metę będzie słabe. Kiedy wskakuje się do kodu działającego już na produkcji i rozwijanego przynajmniej od roku to dostaje się gotowe schematy. Można zakładać, że te schematy sprawdzają się w trochę dłuższej perspektywie czasu. A w technologiach takich jak Angular możliwości dojścia do rozwiązania jest na tyle dużo, że czasami ciężko na pierwszy rzut oka przewidzieć jak dane podejście sprawdzi się w trakcie rozrastania się aplikacji.
Przeszłość wspiera
Teraz powiem o czymś czego w pierwszej chwili można nie zauważyć. Chodzi mianowicie o to jak doświadczenie w pracy z technologiami backendowymi pomaga mi w pracy z Angularem.
Pierwsze na co warto zwrócić uwagę to fakt, że nowy Angular domyślnie wykorzystuje Typescript. Jest to nakładka na Javascript, która przypomina trochę C# i także została stworzona przez Microsoft. Powoduje to, że piszę kod w czymś co po części już znam. Niby to frontend, a jednak są klasy, są modyfikatory private, są gettery/settery itd. Dzięki temu sam język nie jest spowalniaczem pracy i nie wymaga, przynajmniej na ogólnym poziomie, uczenia się nowego paradygmatu czy bardzo odmiennej składni. Oczywiście nie trzeba sięgać za głęboko, żeby trafić na konstrukcje typowo javascriptowe, ale jak to mówią liczy się pierwsze wrażenie.
Kolejna sprawa to nawyki wyniesione z backendu. Ciężko mi sobie wyobrazić np. pisanie wszystkiego w jednej metodzie albo pchanie całego stanu aplikacji w jakichś globalnych zmiennych. Język typu javascript pozwala na bardzo dużo. Przez to też rodzi wiele pokus chodzenia na skróty. Jednak kiedy człowiek jest przyzwyczajony do pewnego minimum jakości kodu to dużo łatwiej jest mu zapanować nad radosną twórczością, której nie będzie w stanie utrzymywać.
Angular i frontend == chaos?
Spaghetii!
Rozumiem skąd w wielu programistach na co dzień pracujących z technologiami backendowymi takie przekonanie, że Angular czy ogólnie świat frontentu to coś czego lepiej nie dotykać bo się człowiek tylko ubrudzi. Na pewno częściową winę ponosi za to bardzo powszechne korzystanie z jQuery. Zwłaszcza przez osoby bez doświadczenia w programowaniu i często nawet nie znające czystego javascriptu. Siłą rzeczy takiego kodu można zobaczyć w internecie najwięcej. Nie pomaga też fakt, że mimo wszystko próg wejścia do frontendowego świata jest niższy niż do backendu, a więc istnieje dużo większa szansa, że trafią tutaj osoby, które nie powinny się zabierać za programowanie. Tworzy to obraz piaskownicy dla dzieciaków, która nie ma za dużo ładu i porządku.
Framework na dziś
Drugą kwestią jest powszechna opinia, że we frontendzie człowiek nic tylko uczy się nowych wersji istniejących bibliotek albo kolejnych nowych bibliotek właściwie non stop bo powstają one co kilka godzin. Całkowicie się z tym nie zgodzę. Owszem, prawdą jest, że bibliotek mniejszych i większych powstaje co chwilę bardzo dużo ale w ogromnej większości są to jakieś pojedyncze metody, które ktoś po prostu wrzucił do sieci, i którymi nie warto się przejmować. Tak naprawdę jeśli weźmiemy tylko powszechnie stosowane rozwiązania takie jak Angular, React czy Vue to sytuacja jest dużo stabilniejsza. Poza momentem odcięcia się Angulara 2 od AngularJS te frameworki są w miarę stabilne i wiedza zdobyta kilka lat temu absolutnie nie jest przestarzała. W pracy korzystam teraz z Angulara 5 jednak absolutnie nie mam problemu z używaniem porad dotyczących Angulara 2, ba, czasami nawet pewne rozwiązania z AngularaJS (Angular 1.*) mogę przy niewielkim nakładzie pracy przenieść do swojego kodu.
Nie jest źle
W tym momencie mogę śmiało powiedzieć, że praca we frontendzie, jeżeli chodzi o korzystanie z frameworków i bibliotek, a także szukanie wiedzy i rozwiązań nie różni się aż tak bardzo od pracy w backendzie. Środowisko wydaje się coraz stabilniejsze. Oczywiście, tak jak wspomniałem łatwiej tutaj znaleźć osoby, które są bardzo słabe z programowania i robią coś w tych technologiach tylko dlatego, że wystarczy być minimalnie ogarniętym życiowo, żeby w weekend zacząć robić swoją aplikację. Ale nie warto się nimi przejmować, ważne żeby samemu dbać o kod, który się pisze, wtedy nasza praca nadal będzie przyjemna i bezstresowa.
Leave a Comment