React nadal jest najpopularniejszym i najlepiej płatnym frameworkiem na rynku pracy. W minionym roku pojawiły się jednak trendy, które mogą zwiastować koniec beztroskich lat
1. Jaki jest najbardziej pożądany framework na rynku pracy w 2023?
W minionym tygodniu portal devjobsscanner.com podzielił się ze światem raportem na temat frontendowych frameworków na rynku pracy. Analizie objemuje okres od października 2021 do listopada 2022 i oparta jest o oferty pracy z portali takich jak Glassdor i LinkedIn. Co zaskakujące, nie wszystkie trendy pokrywają się z wnioskami jakie wyciągnąć można chociażby z State of JS 2022. Jak zwykle zachecam wszystkich do samodzielnego sprawdzenia raportu, a ja poniżej dziele się moimi kilkoma spostrzeżeniami.
- Jeśli zastanawiacie się jaki framework jest najpopularniejszy i najlepiej płatny, to w tej kwestii zaskoczeń nie będzie. React niezmiennie króluje w obu tych kategoriach.
- Docierające do nas ze wszystkich stron informacje o zwolnieniach w IT mogą napawać niepokojem. Patrząc tylko na surowe dane, sumaryczna liczba ofert pracy utrzymywała sie w 2022 roku na stałym poziomie. Może to oznaczać die rzeczy. Albo kryzys dotknął tylko specyficzną część rynku, albo odbicie w ilości ofert pracy zaczniemy dostrzegać dopiero w 2023 roku
- Analizując opinię deweloperów w State of JS ciężko nie zauważyć tendencji spadkowej Angulara. Wygląda jednak na to, że tendencja ta nie odbija się na rynku pracy. Na przestrzeni ostatnich 6 miesięcy zapotrzebowanie na deweloperów znających React spadło o 10 punktów procentowych. Po drugiej stronie barykady zapotrzebowanie na deweloperów znających Angulara wzrosło o 10 punktów procentowych. W obu tych przypadkach ciężko mówić o przypadkowych wachaniach – trend utrzymuje się już pół roku, a zmiany są naprawdę znaczące. Mówimy tu o pojawieniu się bądź zniknięciu z rynku 50 tysięcy ofert pracy.
- Angular jest frameworkiem z największym odsetkiem pozycji juniorskich. Oczywiście ilościowo na rynku pojawia się więcej ofert dla Junior React Deweloperów niż Junior Angular Deweloperów. Wiąże się to jednak z dużo większą konkurencją podczas wchodzenia na rynek pracy. W ostatnich latach React stał się domyślnym frameworkiem do nauka frontend dewelopmentu. Być może w 2023 nauka Angulara będzie sposobem na zhackowanie systemu i łatwe zdobycie pierwszej pracy w IT.
- Rozkład ofert pracy pomiędzy frameworkami jest bardzo uzależniony od geograficznej lokalizacji. W krajach takich jak Francja, Hiszpania czy Szwajcaria rynek jest po równo podzielony pomiędzy bibliotekę od Mety i framework od Google. Vue w żadnym kraju nie dorównuje popularnością swoim starszym braciom, ale wyraźnie wyróżnia się popularnością w Chinach i Belgii. Biorąc pod uwagę masowe powroty do biur, to lokalne, nie gloabalne trendy mogą się okazać kluczowe jeśli chodzi o analizę rynku pracy.
- Technologiczne nowości takie jak Svelte, Solid czy Astro z roku na rok zyskują na popularności wśród deweloperów. Tendencja ta nie znajduje jednak pokrycia w rynku pracy. Cytując stary polski film Rejs – „Proszę pana, ja jestem umysł ścisły, mnie się podobają melodie, które już raz słyszałem”.
The Most Demanded Frontend Frameworks in 2022
Zainstaluj teraz i czytaj tylko dobre teksty!
2. React Native 0.71
Początek tego roku to wyjątkowa posucha jeśli chodzi o nowości. Na szczęście pociąg releasów w odóżnieniu od pociągów PKP nie zawodzi (Ba Dum Tsss) i w minionym tygodniu opublikowany został React Native 0.71. Nowości jest sporo, dlatego bez zbędnego przedłużania przejdźmy do mięska.
TypeScript
Według State of JS 2022, tylko u 27% deweloperów czas spędzony na pisaniu JavaScript przeważa nad czasem spędzonym z TypeScript i tylko 11% deweloperów nie korzysta z TypeScript wcale. Nie dziwi więc, że React Native wreszcie zdecydował się zainwestować w tą technologię na poważnie.
Przed wersją 0.71 typy do React Native można było doinstalować pod postacią paczki @types/react-native
. Wiązało się to z szeregiem problemów – od rozbieżności typów przy korzystaniu z Nightly Release, przez wymaganie dodatkowej konfiguracji, po brak sensownych wartości domyślnych. Od wersji 0.71 typy stały się częścią głównej paczki i dystybuowanę będą wraz z nią. Ponadto dokumentacja frameworku została zaktualizowana tak, żeby przykłady wykorzystywały TypeScript. Wisienką na torcie zniam jest szablon nowych aplikacji, który również został zaktualizowany, tak żeby od samego początku wymuszać na programistach wykorzystanie języka od Microsoft.
Gap property
Większość frontend deweloperów na pewno kojarzy property gap
, które pozwala w wygodny sposób zdefiniować odstępy między elementami w Flex Box i Grid View (jeśli nie kojarzyjcie, to zajrzycie tutaj). Niestety deweloperom React Native nigdy nie dane było doświadczyć podobnego luksusu… Na szczęście od React Native 0.71 sytuacja ulegnie zmiania, bo od wersji tej framework będzie wspierał analogiczne property.
React Native coraz bliżej webowych standardów
Czy wiecie, że React Native możecie wykorzystać również do budowania webowych aplikacji? Do tego celu wykorzystywany jest specjalny renderer React Native for Web. Wbrew pozorom, projekt ten nie jest tylko ciekawostką, bo korzystają z niego takie firmy jak Twitter, Uber, Expo czy Major League Soccer.
Nietrudno się domyślić, że standardy mobilnych aplikacjii znacząco różnią się od webowych standardów. Z tego powodu autor React Native for Web przygotował Proposal, w którym sugerował ujednolicenie API w wielu miejscach i uzupełnienie go o brakujące na wbie elementy.
Pierwsze efekty prac nad implementacją Proposala trafiły do React Native 0.71. Do API trafiła cała paczka properties związanych z accessibility (m.in. aria-label
i aria-hidden
) , <img />
(m.in. alt
) i <input />
(m.in. rows
, autocomplete
). Ponadto zaimplementowane zostało całe API dotyczące wydarzeń związanych z kursorem.
Źródła:
https://reactnative.dev/blog/2023/01/12/version-071
3. Gluon
Gluon to alternatywa dla Electrona i Tauri, która chce podbić świat zmieniając fundamentalne założenia architektoniczne przyjęte przez konkurencję.
Po pierwsze, zamiast dołączać przeglądarkę do aplikacji, Gluon wykorzystywał będzie przeglądarkę już zainstalowaną na komputerze użytkownika. W ten sposób sama aplikacja znacząco się odchudzi, ale odpowiedzialność za aktualizację przeglądarki spadnie na użytkownika. O ile w przypadku Electrona i Tauri dokładnie wiedzieliśmy gdzie będzie uruchamiany nasz kod, tak teraz musimy mierzyć się ze wszystkimi problemami web deweloperów (różnice w zachowaniu między przeglądarkami, brakujące API).
Po drugie, Gluon jest zaprojektowany w taki sposób, żeby umożliwić podmianę Node.js na Deno czy Bun. Daje to nam programistom swobodę wyboru, ale równocześnie nie zmusza nas do wyjścia zbyt daleko poza strefę komfortu. Bez problemu potrafię sobie wyobrazić sytuację, kiedy dla zwiększenia wydajności aplikacji Node.js będzie podmieniany na przykład na Bun.
Na razie Gluon znajduje się w fazie alpha. Projekt wzbudził jednak spore zainteresowanie społeczności i w ostatnich tygodniach rozwija się bardzo prężnie. Zdecydowanie jest to jeden z projektów, które warto śledzić w 2023.
Źródła:
https://gluonjs.org/docs/guide/introduction/
Zainstaluj teraz i czytaj tylko dobre teksty!
4. Structura.js
Niemutowalne zmienne mają wiele zalet. Jęśli nigdy nie modyfikujemy naszych obiektów, to możemy zapewnić, że tak długo jak nie zmienia się referencja do obiektu, tak długo sam obiekt również się nie zmienia. To dzięki temu zachowaniu frameworki takie jak React czy Angular mogą w optymalny sposób implementować Change Detection. Zamiast porównywać ze sobą wielokrotnie zagnieżdżone obiekty, wystarczy porównać ich referencja, aby przekonać się czy są identyczne. Niestety jak zapewne wiecie, samodzielna implementacja niemutowalności bywa kłopotliwa.
// Immutability with plain JS
const obj = {
a: {
c: 3,
},
b: 2,
}
const obj2 = {
...obj,
a: {
...obj.a,
c: 42, // we want to overwrite c
},
}
Od lat ulubionym narzędziem programistów do implementowania niemutowalności był Immer. Wykorzystywał on API znane już deweloperom, pozwalał pozbyć się ręcznego kopiowania obiektów z kodu i zręcznie optymalizował pamięć. Chyba najpopularniejszym połączeniem jest Immer + Redux. Możecie z niego korzystać nawet jeśli nie jesteście tego świadomi, bo Redux Toolkit domyślnie korzysta właśnie z takiej konfiguracji.
// Immutability with Immer.js
const obj = {
a: {
c: 3,
},
b: 2,
}
const obj2 = produce(obj, draft => {
draft.a.c = 42;
});
Immer ma już jednak swoje lata, dlatego w tym tygodniu do sieci trafiła alternatywa w postaci Structura.js. Jest ona zdecydowanie szybsza od konkurencji (nawet 22x), bo skupia się na zapewnieniu bezpieczeństwa podczas kompilacji, a nie uruchomienia programu. Takie podejście na pewno nie zadowoli wszystkich, ale zdecydowanie znajdzie swoją niszę.
// Immutability with Structura.js
const obj = {
a: {
c: 3,
},
b: 2,
}
// this example, despite being indistinguishable from the immer one,
// is ~18x more performant!
const newState = produce(obj, (draft) => {
draft.a.c = 42;
})