Wiktor Jaszczuk: dlaczego specjalizuję się w React Native

Wiktor Jaszczuk

Spyrosoft Academy host and Frontend Tech Lead

Aplikacje mobilne towarzyszą nam już od ponad dziesięciu lat i stanowią dosyć ważny element życia dużej części społeczeństwa.

Wraz z miniaturyzacją urządzeń, zwiększeniem mocy obliczeniowej, wydłużeniem żywotności baterii oraz coraz tańszemu dostępowi do mobilnego internetu, telefon komórkowy czy też tablet stał się nieodzownym narzędziem zarówno w sferze rozrywki, jak i życia zawodowego. Samo urządzenie to tylko połowa sukcesu - dopełnieniem są aplikacje. 

Pamiętam jakby to było dzisiaj wielki boom na aplikacje mobilne jakieś 8 lat temu. Każda firma, serwis internetowy chciał mieć swoją własną aplikację. Lawinowo zwiększała się ich ilość w sklepach głównych graczy na rynku – Apple i Google. 

W tamtym czasie zapragnąłem poznać nieco ten świat. Tworzenie aplikacji na telefony komórkowe wydawało mi się bardzo ciekawym zajęciem, na pewno różniło się dla mnie znaczne od tworzenia serwisów internetowych.  

Pierwszą przygodę z wystawieniem swojej aplikacji na urządzenia mobilne miałem z archaiczną i nieco zapomnianą już teraz technologią Adobe AIR. Sama idea wydawała się ciekawa – przy pomocy kilku komend udało się nam zapakować do aplikacji tworzoną przez nas miesiącami grę w technologii Flash i uruchomić ją na telefonie z Androidem. Dzięki temu mogliśmy upiec dwie pieczenie na jednym ogniu, mogliśmy tworzyć gry przeglądarkowe jak i zwiększyć nasz zasięg udostępniając grę w sklepie internetowym. Bez dodatkowego zespołu programistycznego, bez żmudnego uczenia się języków takich jak Java, czy też ObjectiveC lub Swift. 

W tamtym czasie zostałem zarażony ideą tworzenia jednego kodu źródłowego na wiele platform i choć przestałem pisać gry i wróciłem do rozwoju serwisów webowych, ciągle tęskniłem do tego podejścia. Brakowało mi jednak do tego dobrych, pewnych narzędzi.  

Nie chciałem specjalizować się w rozwoju aplikacji w językach natywnych. Wolałem poczekać na lepszy moment.  

Jaskółką zwiastującą wiosnę była technologia PhoneGap czy też później Cordova. Tutaj zainteresowało mnie użycie technik webowych do tworzenia aplikacji. Programowanie urządzeń mobilnych stawało się bardziej dostępne dla developerów web i w moim odczuciu przestawało być wiedzą tylko dla wtajemniczonych. Technologie te miały jednak swoje mankamenty. Wydajność takich aplikacji odstawała znacznie od aplikacji natywnych. Pojawiały się także problemy związane z wykorzystaniem modułów natywnych oraz z bezpieczeństwem takich aplikacji. Zważywszy na to podjąłem decyzję, że nie jest to jeszcze to, na co czekam. 

I tak mniej więcej w roku 2017 usłyszałem pierwszy raz o technologii React Native. Zaczynałem też wtedy swoją przygodę z programowaniem przy pomocy tej technologii na webie i nie ukrywam, programowało mi się w niej wygodnie. Myśli, konstrukcje same przelewały się do IDE. Dlatego kiedy kolega z zespołu pierwszy raz wspomniał o tym, że Facebook rozwija technologię, dzięki której będzie można wyrażać swoje myśli właśnie przy pomocy Reacta stałem się żywo nią zainteresowany i zacząłem drążyć temat.  

Bardzo ważne było dla mnie porzucenie podejścia znanego właśnie z Cordovy albo Electrona, gdzie tak naprawdę sprytnie ukrywaliśmy naszą stronę internetową.  

React Native tworzymy pełnoprawną aplikację natywną, którą steruje wątek javascriptowy. Wraz z odejściem od czystego weba w aplikacji uwolniono się z oków wydajności. Twórca technologii skupił się na wydajności, bezpieczeństwie i dostępności na urządzenia obsługiwane przez Android i iOS i wszedł w burzliwy jej rozwój. Wraz z nim pojawiła się ogromna społeczność zapaleńców - indywidualnych oraz firm - którzy kierowali się ideą tworzenia jednego kodu źródłowego i używania go na wielu platformach. Byłem pod niemałym wrażaniem, kiedy to dwa lata temu na konferencji React Native EU w moim rodzinnym Wrocławiu programiści z Microsoftu chwalili się tym, że spore części pakietu Office są tworzone właśnie w oparciu o React Native. Sam Microsoft zaś podjął decyzję o strategicznym partnerstwie z Facebookiem i tworzenia kodu na wiele platform właśnie z użyciem tej technologii. Pojawiło się też otwarcie na inne systemy operacyjne – Windows oraz MacOS. 

Wiktor Jaszczuk React Native

Dostępność wiedzy, otwartość społeczeństwa, mnogość bibliotek oraz otwarcie się Facebooka na społeczność Open Source sprawiło, że przeskoczyłem z Reacta webowego na Natywnego. Do dzisiaj uważam, że był to świetny wybór. Wiedza z samego Reacta pomogła mi szybko wdrożyć się w tajniki tej technologii i po prostu tworzyć oprogramowanie. 

Spyrosoft też wniósł niemały wkład w moje zaangażowanie. Zaczęły pojawiać się projekty, w których głównym założeniem było tworzenie jednego kodu. Zaczęliśmy budować nasze kompetencje w tej dziedzinie oraz dzielimy się wiedzą czy to wewnątrz firmy, czy też na zewnątrz na konferencjach czy meetupach. 

Aplikacje, które tworzymy bardzo często są duże. Nasi klienci są wymagający i dają nam do rozwiązania ciekawe problemy techniczne. Jednym z nich jest tworzenie całkiem sporej aplikacji dostępnej na Androidzie, iOSie jak i na Windowsie.  

Dzięki takiemu podejściu, ciekawym problemom nasi specjaliści szybko się rozwijają i mogą próbować nowych rozwiązań. Każdy nasz nowy projekt jest wyzwaniem i często pojawiają się w nim wymagania, z którymi nie mieliśmy wcześniej styczności. W mojej ocenie świetnie dajemy sobie radę z ich rozwiązywaniem. 

Ostatnimi czasy pojawił się w naszej firmie pomysł organizacji Akademii React Native i większe otwarcie się na zewnątrz. Dzięki niej chcemy dzielić się wiedzą i szkolić osoby takie jak ja, zajmujących się niegdyś Reactem w webie. Celem naszej akademii jest zaznajomienie z technologią, pokazanie jak wygląda praca w takim projekcie, podzielenie się „wiedzą tajemną”, czyli praktyką nie wypływającą wprost z dostępnych dokumentacji, a z naszego doświadczenia w radzeniu sobie w rozwiązywaniu problemów technicznych związanych z rozwojem oprogramowania w tej dziedzinie. 

W czasie kursu korzystać będziemy z najnowszych wersji bibliotek.  Będziemy pisać używając podejścia opartego na hookach oraz używać TypeScript – dialektu używanego w niemal wszystkich naszych projektach webowych i React Nativowych. Bardzo zależy mi na tym, aby kod przez nas tworzony był jak najlepszej jakości, nie zawierał błędów, dało się łatwo go rozwijać przez innych członków zespołu. 

Samo szkolenie prowadzone jest przeze mnie i ma formę podobną do kursów dostępnych na studiach wyższych. Składa się ono z serii nagranych przeze mnie wykładów dostępnych na wideo, spotkań wszystkich kursantów, konsultacji oraz tworzenia własnej aplikacji. Jak to na studiach będzie też sporo nauki własnej. Z mojej strony oferuję wsparcie, dzielenie się pomysłami, dawanie rad oraz przeglądy kodu. 

Bardzo zależałoby mi, żeby każdy po zakończeniu akademii był: 

  • Zaznajomiony z podstawami i tajnikami pracy z React Native. 
  • Wiedział, jak radzić sobie z podstawowymi problemami związanymi z używaniem tej technologii. 
  • Zdobył niezbędną praktykę, pozwalającą na wzięcie udziału w projekcie komercyjnym i dalszym udoskonalaniu swoich umiejętności tamże.  

Zależałoby mi niezmiernie, aby kursanci mogli dołączyć do naszych zespołów developerskich i mogli czerpać wiedzę od koleżanek i kolegów już teraz pracujących w naszej firmie. W mojej ocenie każda zatrudniona u nas osoba jest specjalistę w swojej klasie i można od takiej osoby zdobywać wiedzę, jak i czerpać radość z pracy w dobrych warunkach, przyjaznych zespołach i rozwiązywać trudne i interesujące problemy techniczne. 

Wierzę, że taka formuła pomoże osobom takim jak niegdyś ja: interesującym się zagadnieniem tworzenia aplikacji mobilnych, ale niezbyt chętnych na zamykanie się tylko na jedno środowisko natywne, chcącym realizować swojego marzenia.