Home

Czego planuję się nauczyć w 2019 roku (z zakresu programowania)

Jako część moich planów na 2019 rok, zbudowałem sobie listę tematów, które chcę zgłębić w tym roku. Obejmują one wiele dziedzin, a oto te, które wpadają do worka związanego z programowaniem.

Nauczyć się nowego języka

Temat planowałem już zgłębić w 2018 roku, poniekąd zaliczony (zgłębiłem TypeScript, ale nie o to chodzi). Naukę języka traktuję jako rozszerzenie mojej perspektywy na programowanie, dlatego myślę o nauczeniu się czegoś z innego worka niż to co obecnie znam (JS). Dlatego odpadają syntax-sugery na javascripcie (Coffescript, Typescript) oraz języki o podobnym poziomie abstrakcji (Python, Ruby, PHP). Równocześnie jako „naukę” traktuję luźno napisanie jakiejś w prostej, ale funkcjonalnej aplikacji.

Języki które biorę pod uwagę (jeszcze nie wybrałem) to:

  • Go – bo jest niskopoziomowy, a zarazem nowoczesny, co pozwoli mi poznać pewne koncepty bez bólu. Nie wiem co prawda czy Go przyda mi się w mojej karierze, a jako aplikację do nauki pewnie wybrałbym jakiegoś CRUDa.
  • Rust – bo jest ciekawy i potężny, ale równocześnie nie wiem czy nie polegnę na nim – nie planuję poświęcać na naukę aż tak dużo czasu.
  • ReasonML lub Elm – bo to dwa funkcyjne języki (oparte na różnych dialektach – Haskellu i OCaml), które finalnie kompilują się do JS. W samym Javascripcie staram się pisać maksymalnie funkcyjnie, jednak język tego nie wymaga i nie jest to takie naturalne. Nauka w pełni funkcyjnego języka wymaga zmiany sposobu myślenia i dlatego mnie to fascynuje – równocześnie wciąż mogę pisać w nich aplikacje chociażby w React (więc nauka będzie nie tylko dla nowego doświadczenia, ale może się i przydać w jakimś projekcie). Myślałem też o podejściu do Haskella, jednak na ten moment wydaje mi się zbyt „hardcorowy”, więc może następnym razem.
  • PHP – tak… do tego wymieniłem go jako język o podobnej abstrakcji, który zdecydowanie nie rozwinie moich umiejętności, a jednak z czysto zawodowych powodów jego znajomość mi się przyda. Nawet ten blog jest napisany na WordPressie, a przez ogromną popularność PHP (WordPress, większość ecommerce) jest sporo ciekawych projektów czy zleceń które chętnie bym się podjął, ale nie czuję się wystarczająco silny bo komercyjnie tykać się PHP. Więc kto wie.

Zgłębić testy e2e

Testy e2e często nie są możliwe do pisania w komercyjnych projektach (a szkoda), dlatego dotychczas robiłem to po godzinach. Nauczyłem się nieco genialnego Cypressa i planem jest zgłębić go do poziomu „ninja”. Wydaje mi się że to fajna nisza, a zarazem możliwość zmiany dotychczas niezbyt fajnego sposobu pisania testów e2e w Selenium na nowy poziom. Na pewno o Cypressie napiszę parę materiałów.

Oprócz samych scenariuszy e2e chcę poznać różne metody automatyzacji testów pod kątem np. visual regression – poprzez robienie screenshotów UI, porównywanie ich przy każdym buildzie i akceptacji zmian.

Nauka e2e to dla mnie część większego planu rozwijania się pod kątem testowania (myślę nawet by na pełen etat zostać testerem na jakiś czas), ostatnio pisałem o tym czemu lubię snapshot testy.

Opanować animacje we frameworkach

Animowanie DOM przy użyciu frameworków nie jest takie proste – nasze elementy musza istnieć by dało się je animować, a frameworki cyklicznie przerenderowywują stan dokumentu, tracąc przez to progress animacji.

Moje dotychczasowe animacje ograniczały się do animacji/transition CSS lub ewentualnie okazyjnym użyciu jakiejś biblioteki.

W tym roku chciałbym zapoznać się z ekosystemem animacji w Reakcie (Angular ma swoje, ale póki co go nie muszę używać) i popróbować różne pomysły, takie jak przejścia między stronami, requestAnimationFrame itd.

Wejść na poważnie w React Native

Firma w której obecnie pracuję – Ideamotive, specjalizuje się w aplikacjach w React Native. Jest to dla mnie świetna okazja by wejść w ekosystem i uczyć się pod okiem ludzi, którzy siedzą w temacie.

Sam React Native jest dla mnie fascynujący i to nie tylko pod względem programistycznym ale… biznesowym. Biorąc pod uwagę koszt napisania i utrzymania potencjalnie trzech zespołów, perspektywa zunifikowania platformy i codebase jest bardzo kusząca. Szczególnie, że ogromna ilość aplikacji to tzw. „wyświetlarki API„.

Sam mam kilka interesujących pomysłów na projekty dedykowane bezpośrednio na telefony, więc nauka RN jest dla mnie sporym kamieniem milowym w rozwoju i karierze.

Trochę DevOps

Jako front-endowiec tematy devopsowe są dla mnie o tyle interesujące, że na codzień raczej nie odpowiadam za tę stronę cyklu życia aplikacji. Możliwości jakie daje Docker, serverless i różne serwisy cloudowe są dla mnie wybawieniem i pozawalają skupić się na kodzie zamiast infrastrukturze.

Z drugiej strony Dockera i AWS też trzeba się nauczyć i to jest właśnie mój cel – wyjść z nauką Dockera trochę ponad podstawy które mam obecnie oraz zapoznać się z narzędziami AWS czy Google pozwalającymi mi np. na sprawne deployowanie cloud functions.

Nauczenie się w minimalnym stopniu tej dziedziny pozwoli mi być dużo bardziej niezależnym – mając już trochę wiedzy backendowej, jestem w stanie zbudować MVP aplikacji samemu.

To tyle z moich planów rozwojowych z programowania na ten rok. Piszę ten wpis trochę jako bicz nad sobą, by łatwiej znaleźć motywację do nauki. Następnym razem podzielę się planami z innych dziedzin.