
Czy czujesz, że tracisz czas zastanawiając się, z którym front-endowym framework`iem zacząć przygodę z programowaniem?
Niepotrzebnie. Wybór między Angularem i Reactem będzie dla Ciebie prawdopodobnie bez znaczenia. Czytaj dalej by dowiedzieć się dlaczego!
Wpis kieruję do osób zaczynających naukę programowania i stojących przed wyborem zarówno języka programowania, jak i związanych z nim narzędzi/bibliotek/framework`ów. Oczywiście, doświadczeni programiści planujący wdrożenie nowych rozwiązań do swoich projektów będą je porównywać z innej perspektywy, ponieważ stoją przed całkowicie innymi wyzwaniami niż osoby, które dopiero będą kodowały swoje pierwszej projekty do portfolio.
Nie wskażę czy lepszy jest Angular czy React. Niech Cię to jednak nie zniechęci przed dalszą lekturą. Oba rozwiązania są świetne i każdy z nich stanowi znaczne ułatwienie w pracy programisty. A skoro oba są częścią “standardu branżowego” i świetnie spełniają swoją rolę, to po co dzielić włos na czworo? No właśnie…
Dość często jest mi dane odpowiadać na wiadomości, w których padają mnie-więcej takie pytania:
- Czy można znaleźć pracę jako programista Angular, skoro jest mniej popularny?
- Czy dalej łatwo jest znaleźć pracę jako programista React, skoro każdy się go dzisiaj uczy i trudno się wyróżnić?
- We wszystkich ogłoszeniach o pracę pojawia się React, czy to oznacza, że Angular już nie będzie wykorzystywany?
- Czy programista Angular/React zarabia więcej niż programista Angular/React?
- Czy muszę znać JavaScript, aby pracować jako programista Angular/React?
- Który framework będzie najbardziej poszukiwany w ciągu roku na rynku pracy (VueJS/React/Angular)?
… i wiele innych w podobnym tonie. Doskonale rozumiem skąd się biorą i jakie były motywacje ich autorów. Wiadomo, że nauka programowania będzie czasochłonna i na efekty (najczęściej w postaci pracy w nowej branży) trzeba będzie poczekać. Nikt nie chce inwestować czasu i energii na coś, co ostatecznie nie przybliży go do wyznaczonego celu. Pozwolę sobie podsumować te pytania innym, bardziej trafnym:
Czego powinnam/em się zacząć teraz uczyć, aby w ciągu najbliższych kilku miesięcy znaleźć pracę w IT jako Front-end Developer?
Szukając odpowiedzi na tak postawione pytanie, wyszukiwarka internetowa niechybnie podpowie nam, któryś z setek wpisów zalecających Reacta lub Angulara wraz z ich ogólną charakterystyką. Obie technologie wielokrotnie rozłożono na czynniki pierwsze, dzięki czemu można się dowiedzieć, że:
- React to biblioteka, a Angular to framework.
- Że tzw. learning curve w React jest niski, a w Angular wysoki .
- Że jeden używa TypeScript, a drugi JSX Script i któryś musi być lepszy.
- Angular wspiera Dependency Injection, a React nie. Ale za to jeden z nich wspiera One-way data binding.
- Jeden do zarządzania stanem wykorzystuje Redux , a drugi NgRx.
Ale co to tak naprawdę znaczy? Czy odpowiada na nasze pytanie? Nie sądzę.
Nie wolno jednak na takie artykuły się obrażać. Zestawienia tego typu są w pełni uzasadnione i są świetnym źródłem wiedzy, ale… dla kogoś kto nie ma żadnego doświadczenia w pracy z wytwarzaniem biznesowego oprogramowania nie mają żadnej wartości.
Pracuję z wieloma początkującymi programista i wiem, że bez doświadczenia naprawdę nie wiadomo jakie znaczenie może mieć dla kogoś to, że Angular to framework, a React to biblioteka, skoro oba są niezwykle popularne i robią praktycznie to samo.
Natura wybranego frameworka będzie miała znaczenie przy wdrażaniu nowego narzędzia, do już istniejącej aplikacji. A przy budowaniu nowej aplikacji od podstaw? Pewnie będzie miało mniejsze znaczenie. Inne też będzie miało znaczenie, gdy będziemy pracować dla klienta biznesowego/bankowego, który potrzebuje dobrać rozwiązanie idealnie dopasowane pod pozostałe stosowane technologie i doświadczenie zespołu, a inaczej, gdy będziemy tworzyć nową aplikację społecznościową o bogatym UI od podstaw ze świeżo zwerbowanym zespołem.
Skąd osoba spoza branży może o tym wiedzieć? Często zapominamy, że dla wielu ludzi samo stwierdzenie, że ktoś pracuje “w maintenance, nie w developmencie” jest abstrakcją, kolejnym zaklęciem branżowym. Trudno więc się dziwić, że nagle o wyborze danego narzędzia i drogi zawodowej decydują przypadkowe argumenty jak “ilość gwiazdek na Githubie”, “ilość zapytań na Stack Overflow”, “wykorzystanie danej technologii przez firmę XYZ” czy ogólny hype (ktoś pamięta w ogóle czasy “hype driven development`u”?).
Na co zatem zwracać uwagę?
Jeśli wciąż nie wiesz którego z nich powinneś/aś się zacząć teraz uczyć, aby w ciągu najbliższych kilku miesięcy znaleźć pracę w IT, to odpowiadam:
jeśli dopiero zaczynasz naukę programowania, a w dalszej perspektywie masz ambicję pracować w IT, to taki wybór nie ma sensu.
Albo inaczej: to bez znaczenia.
Po pierwsze, pracy w IT w obu technologiach jest dużo. Naprawdę dużo. Każdy obiecujący junior z opanowanymi podstawami inżynierii oprogramowania i dobrą znajomością jakiegokolwiek framework`a ma szanse na zdobycie pracy. To, że teraz najbardziej popularny jest React, nie znaczy, że nie ma zapotrzebowania na programistów Angular. Aplikacje napisane rok czy dwa lata temu, kiedy w rankingach popularności prym wiódł Angular, wciąż muszą być rozwijane. Tylko dlatego, że aktualnie najbardziej popularna jest jedna technologia, nie znaczy, że w każdym projekcie programistycznym miała miejsce rewolucja technologiczna i całkowicie zmieniono “stack”. Zdziwilibyście się, ile wciąż jest projektów korzystających z leciwego jQuery, do których cały czas są rekrutowani deweloperzy, za normalne rynkowe stawki. Jeśli obawa przed brakiem perspektyw zatrudnienia nie pozwalała Wam dokonać wyboru, to mam nadzieję, że została ona przegnana. Możecie wybrać którykolwiek z nich, wyspecjalizować się w nim i ze spokojem patrzeć w przyszłość (najbliższą 😉 ).
Po drugie, wiele osób zapomina, że frameworki i biblioteki to tylko narzędzia, które mają nam ułatwić codzienną pracę związaną przede wszystkim z rozwojem aplikacji internetowych. Na to składa się w dużej mierze również HTML, CSS i preprocesory, JavaScript, stosowanie dobrych praktyk i pisanie czystego kodu, pisanie testów, praca z systemami kontroli wersji. Wydaje mi się, że wiele osób zapomina, że Front-end Developer to też programista (nazywany niekiedy na UoP jako Software Engineer), a nie tylko operator jednego framework`a. Dlatego postawienie pytania w formie: uczyć się X czy Y, nie mając podstawowej wiedzy z zakresu webdevelopment`u jest po prostu błędem. Czasami też trafiam na pytania typu “czy muszę umieć programować, aby pracować jako Front-end Developer?”. Niestety musisz. Przede wszystkim dlatego, że głównym językiem aplikacji internetowych jest JavaScript i jego dobre opanowanie jest wbrew pozorom (ze względu na jego naturę) trudnym zadaniem.
Co więcej, spotkałem wielu kandydatów na juniorów, którzy przerobili bezwiednie szereg kursów on-line lub odtworzyli wszystkie projekty z dokumentacji danego narzędzia i choć na pierwszy rzut oka sprawiali wrażenie osób obytych z kodem, to bardzo szybko wychodziły na jaw braki w podstawowej wiedzy. W przypadku rozmowy kwalifikacyjnej trzeba się liczyć z tym, że rekruter zada pytania z zakresu JavaScript, wzorców projektowych, projektowania OOP i zasad SOLID… i wszystkiego, co przyjdzie mu do głowy, aby zweryfikować przygotowanie techniczne kandydata i jego zdolność do pracy i perspektyw na rozwój w strukturach rekrutującej organizacji. Nawet dobra znajomość framework`a, którą zaprezentujesz na rozmowie technicznej nie uratuje Cię, gdy w trakcie kolejnych pytań okaże się, że nie masz wystarczającej wiedzy o wytwarzaniu oprogramowania oczekiwanej nawet od juniora. Z drugiej strony, jeśli wykażesz dobrą znajomość podstaw, a podwinie Ci się noga na specjalistycznych pytaniach, sprawdzających stopień znajomości danej technologii, to i tak zostawisz po sobie lepsze wrażenie. Nawet najlepsi programiści w firmie, do której aplikujesz nie będą wiedzieć wszystkiego i wiedzą jak ważna jest zdolność do przyswajania nowych informacji i jaką rolę pełnią solidne podstawy.
Pamiętaj, że ze względu na wzrost zainteresowania branżą IT, w odpowiedzi na oferty pracy na juniorskie pozycje może przyjść kilkadziesiąt lub kilkaset zgłoszeń, a i tak często trudno jest spośród takiej liczby wybrać odpowiedniego kandydata, któremu będzie można zaufać i bez strachu powierzyć deweloperskie zadania. Jest to spowodowane często wspomnianym wybiórczym podejściem kandydatów do nauki, koncentrujących się na zapamiętywaniu struktur kodu w danej technologii, bez wiedzy umożliwiającej im ich zrozumienie.
Dlatego uważam, że pierwotne pytanie powinno raczej brzmieć:
Czy mając opanowany podstawy i decydując się na naukę któregoś z nowoczesnych framework`ów zwiększam swoją szansę na zdobycie pracy w ciągu kilku następnych miesięcy?
Na to pytanie odpowiadam zdecydowanie: Tak.
Zależy mi na tym, aby każdy kto planuje zmianę w swoim życiu zawodowym miał możliwość spojrzenia na niektóre tematy z innej perspektywy. Jeśli decydujesz się nauczyć programować, to masz przed sobą długą drogę do przejścia i stawiając się przed pytaniem “czy zostać programistą Angular czy React?”, nieświadomie ryzykujesz przeskoczeniem kilku pierwszych kroków. Nie ma dróg na skróty i poprzez koncentrowanie się na jednym specyficznym narzędziu tracisz z pola widzenia całą listę ważnych tematów, które musisz poznać i opanować, jeśli faktycznie zależy Ci na pracy programisty. Ostatecznie pytanie, które powinieneś/aś sobie zadać niech brzmi:
Czy jak opanuję JavaScript i podstawy programowania aplikacji internetowych, to powinnam/ienem nauczyć się któregoś z nowoczesnych framework`ów, aby zwiększyć swoją szansę na zdobycie pracy w ciągu kilku następnych miesięcy?
Tak, zdecydowanie.
Którego?
To bez znaczenia.
-
[WROCŁAW] Programista Full Stack PHP JavaScript Angular [II EDYCJA]Product on sale
9 600,00 zł7 800,00 zł -
Front-end Web Developer Angular & NodeJS [WROCŁAW] [III edycja]Product on sale
9 214,00 zł7 800,00 zł -
[WROCŁAW] Programista Full Stack PHP JavaScript Angular [I EDYCJA]Product on sale
9 800,00 zł7 000,00 zł