niedziela, 27 lutego 2022

Jak zosta膰 programist膮 front-end w 2022 roku?

Cze艣膰, w tym wpisie przedstawi臋 plan dzia艂ania kt贸ry u艂atwi Ci zostanie frontendowcem :). 

Troch臋 o zawodzie

Frontendowiec zajmuje si臋 warstw膮 wizualn膮 aplikacji webowych... ale nie tylko. Standardowe zadania w pracy s膮 zwi膮zane z tworzeniem interface u偶ytkownika. Sk艂adaj膮 si臋 na nie:
  • Implementowanie nowych funkcjonalno艣ci i poprawianie / zmienianie ju偶 istniej膮cego kodu
  • Stylowanie - czyli u偶ywanie CSS do nadawania odpowiedniego wygl膮du
  • Opracowanie logiki zwi膮zanej z wy艣wietlaniem danych pobranych z backendu
  • Dbanie o to, by do backendu trafia艂y odpowiednie dane przez wprowadzanie walidacji
  • W bardziej 艣wiadomych firmach - dbanie o dobry UX i u艂atwianie korzystania z aplikacji osobom niepe艂nosprawnym
Z tym wszystkim wi膮偶e si臋 te偶 wsp贸艂praca z innymi osobami w teamie i praca z systemem zarz膮dzaniem zadaniami, a tak偶e uczestniczenie w spotkaniach. Praca na froncie daje du偶o satysfakcji, poniewa偶 mo偶na od razu ogl膮da膰 rezultaty swoich prac na ekranie. Wymagana jest znajomo艣膰 angielskiego pozwalaj膮ca przynajmniej na czytanie dokumentacji.

Dopiero zaczynam i chc臋 zosta膰 frontendowcem - co robi膰?

Powiniene艣 w bardzo dobrym stopniu opanowa膰 trzy technologie - CSS, HTML i JS. 
CSS
Wst臋pem do stylowania mo偶e by膰 tutorial od MDN lub od FreeCodeCamp. CSS nie jest j臋zykiem programowania i charakteryzuje go bardzo du偶a ilo艣膰 regu艂, kt贸re nale偶y pozna膰 by z nim skutecznie pracowa膰. Pracuj膮c w JS, mo偶esz zdebuggowa膰 kod, w CSS niekt贸re rzeczy musisz po prostu wiedzie膰. Koniecznie musisz przy艂o偶y膰 si臋 do poznania takich zagadnie艅, jak:
HTML
HTML to "szkielet" strony, kt贸ry zawiera odpowiednio podzielone na sekcje dane. W praktyce znajomo艣膰 HTML to g艂贸wnie wiedza na temat najcz臋艣ciej u偶ywanych znacznik贸w, umiej臋tno艣膰 pobierania danych z formularzy, linkowania zasob贸w, skrypt贸w. Wydaje mi si臋, 偶e HTML to najprostsza technologia z tych trzech. Dobry wst臋p znajdziesz na FreeCodeCamp czy na MDN. Nie zaszkodzi te偶 przeczyta膰 ksi膮偶ki na temat HTML, kt贸ra ugruntuje Twoj膮 wiedz臋. 

JS
Wchodzimy w "prawdziwe" programowanie. Javascript pozwala na sterowanie logik膮 aplikacji. Jest to j臋zyk kt贸ry dynamicznie si臋 rozwija, posiada mn贸stwo framework贸w i bibliotek. Niemniej jednak powiniene艣 skupi膰 si臋 na nauce podstaw Javascriptu i opanowa膰 go przynajmniej w takim stopniu, kt贸ry pozwoli Ci rozwi膮zywa膰 problemy programistyczne na przyk艂ad na exercism.org czy Codewars.
Wej艣cie w JS b臋dzie znacznie prostsze, je艣li programowa艂e艣 ju偶 w jakim艣 innym j臋zyku. 
Proponuj臋 Ci przerobienie od deski do deski jakiej艣 nowej ksi膮偶ki wprowadzaj膮cej do JS. Mo偶e to by膰 na przyk艂ad cykl YDKJS (You don't know JS) od Kyle'a Simpsona, albo ksi膮偶ka Head First, ale uzupe艂niona wiedz膮 o nowych rzeczach kt贸re wesz艂y do JS po 2015 roku. Mo偶esz te偶 przerobi膰 du偶y tutorial https://javascript.info, kt贸ry jest de facto ksi膮偶k膮 online.
Dlaczego proponuj臋 Ci przerobienie ca艂ej ksi膮偶ki? Tylko w taki spos贸b, b臋dziesz mia艂 pe艂ny wgl膮d na temat tego co oferuje j臋zyk.

Dodatkowo wypada zna膰:

Git
Konieczny do pracy z kodem. Praca z gitem jest prosta, do podstawowych zada艅 wystarczy obejrze膰 kilka nagra艅 dotycz膮cych commitowania.

Biblioteki CSS
U艂atwiaj膮 stylowanie, jednocze艣nie wymuszaj膮c okre艣lon膮 struktur臋 strony zdefiniowan膮 przewa偶nie przez klasy css. Przyk艂ady - Bootstrap, Bulma. Poleca艂bym zapoznanie si臋 z nimi po tym, jak opanujesz przynajmniej cz臋艣膰 teorii dotycz膮cej CSS. 

Projekty do wykonania

Sama nauka teorii nie ma wi臋kszego sensu, dlatego r贸wnolegle powiniene艣 pracowa膰 nad swoimi projektami. Za艂贸偶 konto na Githubie i wrzucaj tam kod, na forach programistycznych mo偶esz poprosi膰 o pomoc w rozwi膮zywaniu problem贸w czy o code review.
Aby dobrze pozna膰 HTML i CSS proponuj臋 Ci wpisanie w Google frazy 'free adobe xd website templates' i nast臋pnie zakodowanie kilku z nich tak, aby dobrze wy艣wietla艂y si臋 zar贸wno na du偶ym, jak i ma艂ym ekranie. Gdyby ten tutorial powstawa艂 w 2015 roku, poleca艂bym 艣ci膮ganie darmowych plik贸w psd, jednak od wielu lat nie spotka艂em si臋 z designem zrobionym w Photoshopie.
To co zakodujesz, umieszczasz na Githubie i dajesz spo艂eczno艣ci na grupach Facebookowych lub forach do sprawdzenia. B艂臋dy poprawiasz, robisz kolejne, coraz lepsze projekty.
Gdy zrobisz projekt wykorzystuj膮cy tylko CSS i HTML, mo偶esz przej艣膰 na wy偶szy poziom skomplikowania, u偶ywaj膮c w kolejnym SCSS, dodaj膮c jakie艣 walidacje do formularzy czy obs艂uguj膮c ich wysy艂k臋 w JS.  
Og贸lnie, polecam robienie projekt贸w wykorzystuj膮cych formularze, zak艂adki, okna dialogowe, sekcje zwijane, czyli wszystko co jest bardziej skomplikowane ni偶 zwyk艂e divy z tekstem.
Warto popr贸bowa膰 dodawanie i usuwanie element贸w do drzewa dom z u偶yciem "zwyk艂ego" JS. 

Jak ju偶 sobie dobrze radzisz z projektami tego typu, mo偶esz spr贸bowa膰 si臋 z technologiami u艂atwiaj膮cymi tworzenie dynamicznych stron, czyli aplikacji webowych. Tutaj 3 g艂贸wne technologie do wyboru:
  • React
  • Angular
  • Vue
Wydaje mi si臋, 偶e naj艂atwiejsze jest wej艣cie w Reacta. Angular posiada bardzo du偶o funkcji, wykorzystuje te偶 TS i RXJS, kt贸re to technologie te偶 powiniene艣 pozna膰. Aby u艂atwi膰 sobie prac臋 z wy偶ej wymienionymi technologiami, zainstaluj sobie z NPM narz臋dzia angular-cli lub create-react-app. Na temat Vue si臋 nie wypowiem bo pisa艂em w nim tylko hello worldy :)
Reacta i Angulara najlepiej jest uczy膰 si臋 z oficjalnej dokumentacji, oraz przez robienie projekt贸w. 
Najbardziej oklepane to lista todo czy aplikacja pogodowa, kt贸ra 艂膮czy si臋 z wystawionym api. Og贸lnie ka偶dy projekt wykorzystuj膮cy api b臋dzie ok. By膰 mo偶e zechcesz nauczy膰 si臋 te偶 Node (lub innej technologii backendowej) i baz danych, co pozwoli Ci na stworzenie "prawdziwego" projektu od A do Z. 
Najwi臋cej nauczysz si臋 podczas tworzenia rozbudowanego projektu, zawieraj膮cego na przyk艂ad logowanie (przez has艂o i login lub Facebooka, Google), wy艣wietlanie paginowanych danych, obs艂ug臋 r贸l, walidacj臋 formularzy, ustawienia u偶ytkownika i tak dalej. Dobrym pomys艂em jest pr贸ba stworzenia aplikacji klonuj膮cej funkcje strony ju偶 istniej膮cej, na przyk艂ad Reddita. Mo偶na te偶 napisa膰 aplikacj臋 rozwi膮zuj膮c膮 jaki艣 codzienny problem. Je艣li taki projekt realizowa艂by艣 np. z backendowcem, by艂by to 艣wietny wpis w CV.

Tych informacji jest strasznie du偶o, jak spami臋ta膰 wszystko czego si臋 nauczy艂em i jak dzieli膰 czas na nauk臋?

Je艣li powa偶nie my艣lisz o pracy jako frontendowiec, Twoim celem powinno by膰 znalezienie pracy. Z tego powodu, warto podczas nauki zapisywa膰 sobie rzeczy, kt贸re mog膮 pa艣膰 podczas rozmowy o prac臋. Co to znaczy zapisywa膰? Gdy napotykasz na now膮 rzecz, zr贸b sobie fiszk臋 w programie Anki. Wi臋cej na ten temat tutaj. Pocz膮tkowo podczas nauki b臋dziesz robi艂 bardzo du偶y progres, jednak pojawi膮 si臋 te偶 problemy z tym, 偶e wszystko Ci si臋 miesza. 
Jak m贸wili Rzymianie, repetition est mater studiorum - powtarzanie jest matk膮 nauki. Regularnie wracaj wi臋c do materia艂贸w, kt贸re przerobi艂e艣 jaki艣 czas temu.
Aby si臋 nie pogubi膰 a偶 tak bardzo w nauce, rzeczy przerobione w sieci zapisuj sobie w formie mind-mapy. Poni偶ej moja mapa z MindMeister.
Warto uczy膰 si臋 ze 藕r贸de艂 dobrej jako艣ci, takich, jak MDN, oficjalne tutoriale od tw贸rc贸w bibliotek czy framework贸w, dobre ksi膮偶ki. Z艂e 藕r贸d艂a to np. W3Schools, www.tutorialspoint.com i inne strony przedstawiaj膮ce tematy "po 艂ebkach". Polecam te偶 zapisanie si臋 na kilka newsletter贸w dotycz膮cych przerabianych technologii, co pozwoli Ci by膰 na bie偶膮co z nowo艣ciami.

Czy powinienem kupowa膰 p艂atne kursy?
Moim zdaniem to strata pieni臋dzy. Kursy bardzo cz臋sto przedstawiaj膮 t膮 sam膮 wiedz臋 jak膮 znajdziesz w zwyk艂ej dokumentacji lub tutorialu, kt贸r膮 mo偶esz r贸wnie 艂atwo znale藕膰 w kursie za darmo na YouTube.

Brak komentarzy:

Prze艣lij komentarz