Dobrowolski IT Blog

Web development 2020 - technologie, nowinki, ciekawostki

November 28, 2019

Uważam, że każdy developer powinien być specjalistą w swojej dziedzinie, w stacku, w którym pracuje na co dzień. Znam przykłady developerów, którzy brodzą w swoim brodziku od kilku czy kilkunastu lat - poznali jakąś technologię i się jej trzymają. Myślę, że to zgubne podejście, bo branża IT rozwija się bardzo dynamicznie i każdy szanujący siebie developer powinien być ciekawy jak zrobić dane rozwiązanie lepiej, szybciej, z większą wydajnością i satysfakcją. Trendy w web developmencie różnią się od świata mody - zakodowane rozwiązania można sprawdzić używając statystyki i porównać, a także rozważać aspekty techniczne. Kończy się 2019 rok i dlatego jak co roku chciałbym dostarczyć Wam porcję motywacji na 2020 rok!

Front End

Najczęściej używanym językiem i moim ulubieńcem jest JavaScript. Wiadomo, że warto znać pierwsze wersje i standardy, ale nie zapominajmy, o wersjach z 2017, 2018, 2019 roku. Sporo developerów zakończyło swoją przygodę na ES5 i nie doświadczyło klas, operatorów, rozszerzonych operacji na tablicach, funkcji async/await, Object.values/entries, asynchronicznych operatorów, rest/spread operatorów, nowych funkcji wyrażeń regularnych, promise i wiele wiele innych. JavaScript rozwija się bardzo pod względem asynchroniczności, która cały czas jest optymalizowana i upraszczana. Jeśli chodzi o moją predykcję JS idzie w kierunku TypeScriptu stworzonego przez Microsoft. Richard Feldman na React Conf zaryzykował swierdzeniem, że “władzę nad całym Javascriptem przejmie Typescript”. Posiadanie informacji o typach znacznie ułatwia pracę developerom, mimo, że istnieje niełatwy próg wejścia w zaawansowane typowanie. TS eleminuje sporą ilość bugów i pozwala na przyjemny tworzenie nowych rozwiązań. Jeśli przeraża Cię typowanie całej aplikacji spróbuj wykorzystać ją do najważniejszych, kluczowych danych, które przepływają przez Twoją aplikację (potem pewnie się przekonasz do typowania wszystkiego i unikania typu any), albo zacznij używać narzędzi dedykowanych jak prop-types w React.js.

Bardzo często można przeczytać o wojnie frameworków. Wybrać React, Vue czy Angular? Moim zdaniem nie istnieje złote rozwiązanie, pomimo, że piszę na co dzień w React.js. Zaobserwowałem, że ze sporego procenta osób wypływa nienawiść - “Tylko Angular! A tamten inny to jest w ogóle do niczego”. Jako, że lubię dyskutować z innymi to zawsze wchodzę w te tematy, które szybko się kończą ze względu na niewiedzę rozmówcy. Proponuję napisać zwykłe todo, albo inną, prostą aplikację w tych trzech frameworkach. Poczytać o nich. Tworzę obecnie w React.js, ale tworzyłem komercyjne rozwiązania w Angular.js i Vue.js. W ciągu kolejnych lat jak Angular nie pokaże czegoś zachwycającego to liczba użytkowników ograniczy się do utrzymywania istniejących systemów bankowych lub absolwentów uczelni wyższych. Na koniec 2018 roku z 20 000 badanych osób w ankiecie stateofjs aż 34% osób zadeklarowało, że używało Angulara wcześniej, ale już nie zamierza. Do mniejszych projektów użyłbym Vue.js, które jest lekkie, szybkie i wygodne. Do wszystkich poważnych projektów zawsze wybieram React.js. Tutaj warto wspomnieć o połączeniu z Redux (słyszałem, że w języku polskim poprawną formą jest Reduksie, ale szanujmy twórcę, który chciał by było to “x” wewnątrz), który jest najpopularniejszym rozwiązaniem do obsługi data layer. React bardzo ewoluował od wersji 16.8. Doszły hooki - m.in. state hook, effect hook, a co się z tym wiąże nowe funkcjonalności po stronie Redux. Warto sprawdzić konferencje React Conf 2018 i film 90% Cleaner React With Hooks autorstwa Ryan Florence. Dla ambitnych polecam dodatkowo wystąpienie Dana Abramova. Może w 2020 warto je przetestować jako alternatywna dla klasowych komponentów, mapStateToProps, mapDispatchToProps i metod życia komponentów? Programista nie możne zapominać o testach!!! Tutaj najczęściej wykorzystywane jest Jest, Mocha i Jasmine. Do budowaniu projektów używam Webpack - moim zdaniem to najlepsza obecnie opcja. Wszystkim bardziej kreatywnym i osobom lubiącym CSS polecam odejście od Bootstrapa. Kiedyś był świetnym frameworkiem CSS, potem jego zastosowanie ograniczyło się tylko do gridu, a obecnie wiele rozwiązań można zrobić lepiej, szybciej bez załączania jQuery, następnie skryptu i stylów Bootstrapa, a następnie nadpisywania w CSS stylów predefiniowanych. Możesz poszukać statystyk, mi gdzieś umknęły, ale widziałem 12% spadku używania dla tej technologii w porównaniu z poprzednim rokiem. Coraz większą popularność zyskują aplikacje, które można stworzyć na mobile i desktop z wykorzystaniem Electron lub np. React Native. Na fali hype jest także Web assembly, które niezwykle zwiększa performance i działa z szybkością zbliżoną do rozwiązań natywnych. Pozwala na kompilację kodu napisanego w takich językach jak C/C++ do kodu docelowego, który może być użyty w przeglądarce. Duży hype jest na Progressive Web Apps, czyli aplikacje, które po spełnieniu odpowiednich warunków dostarczają natywne doświadczenia. Nie rozpisuję się teraz więcej, bo w przyszłości planuję napisać o tym wpis. Kontynuując wątek performance muszę wspomnieć o Server Side Renderingu i najlepszym obecnie toolu do generowania stron pisanych w React - Gatbsy.js. Niesłychanym faktem jest, że strony powstające w Gatsby mają wyniki zbliżone 100 w Google Page Insights (perfekcja). Na chwilę obecną kiedy dostaję jakieś szybkie zlecenie zawsze wybieram ten framework, a jako CMS używam NetlifyCMS. Blog, który właśnie czytasz powstał na Gatsby.js - to dlatego nie widzisz uciążliwego ładowania stron wypluwanych przez serwer. Padło słowo klucz - “serwer”, więc przechodzimy teraz do backendu.

Back End

Najlepsze serwisy backendowe w 2019 widziałem w Java, Pythonie i Node.js. Podtrzymuję to zdanie od paru lat i zachęcam do nauki. Jeśli znasz już JavaScript to polecam Ci użyć Express.js, a jeśli znasz Express.js to rekomenduję opakować wszystko w komponenty i dołożyć TypeScript - Nest.js. Framework posiada podejście Angularowe i moim zdaniem wyciska z Angulara wszystkie najlepsze features. Pozdrowienia dla Kamila Myśliwca, który jest autorem Nest.js. Polecam dla testów napisanie prostej aplikacji z użyciem Nest.js, a dla leniwych sprawdzenie przykładowej aplikacji o kotach z oficjalnego repozytorium. Ciekawe statystyki zbiera GraphQL implementowany w coraz większej liczbie projektów. Aż 62% osób z badania stateofjs wykazuje chęć nauczenia się jego. GraphQL to sposób do komunikacji z API i alternatywa dla tradycyjnego REST. Facebook wcześniej wykorzystywał GraphQL do prywatnych projektów, a w końcu zdecydował się opublikować go za darmo. GitHub oparł na tym rozwiązaniu swoje nowe API. Może warto dowiedzieć się czegoś więcej? Jeśli chodzi o aspekty AI i solidnego języka programowania to polecam wszystkim Pythona. Nie wspominam o umarłych językach jak PHP. PHP był popularny kiedyś i oparto o niego sporą część internetu. Więcej czasu nie chcę poświęcać na ten język, szanuję każdą pracę i każdy język, a zawód archeolog uważam za jak najbardziej potrzebny.

Inne technologie

Obserwuję rosnące słupki dla Virtual Reality (VR) i Augmented Reality (AR) czyli rzeczywistości wirtualnej i rozszerzonej. React już dawno wprowadził opcję wsparcia obu technologii. Powoli sprawdzają się predykcje z wywiadu ze mną z portalu Bulldogjob - coraz większe zainteresowanie ma sztuczna inteligencja, a tym samym pisanie w Python, R, Lisp i Prolog. Myślę, że przełom 2020 i 2021 to będzie przełom w świecie AI. Miałem ostatnio przyjemność pracować w projekcie Solution4Labs, w którym streamowaliśmy obraz telefonu na okulary HoloLens. Użyliśmy technologii webRTC. Ogólnie bardzo ciekawym zjawiskiem jest streaming i video. Cały czas rozwija się ta branża bijąc się o użytkowników. Youtube, Twitch, Facebook, Skype, Messenger, Google, Netflix, HBO GO, a od niedawna Disney+ to niektóre przykłady serwisów, które przekazują użytkownikom obraz wideo. Jednak pod wartwą wizualną wiąże się to z masą pracy. Bardzo zaskoczyło mnie stworzenie interaktywnego dzieła Black Mirror: Bandersnatch. W internecie możesz poszukać o tym jak developerzy tworzyli część wyborów. Co będzie później? Może sterowanie głosowe. Niekoniecznie chcemy klikać, bo to zabija rozrywkę... Wróżąc przyszłość coraz bardziej rośnie branża cybersecurity i cloud computing, którym za kilka lat wystrzelą słupki poważnie w górę. Może warto już dzisiaj zgłębić któryś z tych tematów i perfekcyjnie opanować jeden z nich?

Tym razem oszczędzę Ci podsumowania. Jeśli zaciekawił Cię jakiś temat z listy wyżej - nie bój się zgłębić wiedzy na jego temat. Pozdrawiam!