Mobile jako ścieżka kariery

Krzysztof Kempiński
Aug 17 · 9 min read

W ramach podcastu “Porozmawiajmy o IT” miałem okazję porozmawiać z Wojciechem Znamirowskim o mobile jako ścieżce kariery.

Posłuchaj naszej rozmowy w wersji audio 🎧 👇

Mój dzisiejszy gość to dyrektor zespołu rozwoju i oprogramowania w Polskich ePłatnościach, programista z zamiłowania, specjalizuje się w takich technologiach, jak .NET, Java, SQL czy Systemy Embedded. Swoją karierę w Polskich ePłatnościach rozpoczął na stanowisku programisty, dziś jest dyrektorem i zarządza zespołem wytwarzania i testowania oprogramowania. Najbardziej ceni sobie możliwość łączenia pasji z pracą, która nieustannie zaskakuje nowymi wyzwaniami.

Moim i Waszym gościem jest Wojciech Znamirowski.

Cześć, Wojciechu! Bardzo miło mi gościć Cię w podcaście.

Dzień dobry! Pozdrawiam!

Dzisiaj porozmawiamy z Wojtkiem o Mobile, ale w takim ujęciu planowania kariery czy jako ścieżka kariery. Ale zanim przejdziemy do tego tematu, to zapytam Cię, Wojtku, tak jak zresztą każdego gościa w moim podcaście, czy słuchasz podcastów? Jeśli tak, może masz jakieś swoje ulubione audycje?

Tak, oczywiście. Zawodowo jest to tematyka raczej związana z takimi aspektami, jak architektura na poziomie systemów, jak i samego kodu, rozwój w IT, tutaj głównie jako inspiracja dla członków mojego zespołu deweloperskiego. Dodatkowo ostatnio dość mocno śledziłem aspekty związane ze zdalną pracą, tu szczególnie aspekt rozproszonego zespołu. Tutaj katalizatorem był oczywiście COVID. I kwestie związane z cyklem wytwarzania oprogramowania. To jeśli chodzi o to, co jest związane z moją główną etatową pracą, a oprócz tego hobbystycznie aspekty związane z IoT, jak i FPGA. Styk z elektroniką był zawsze w moim zakresie zainteresowań.

Super, świetnie. Z racji tego, co powiedziałeś, z racji na pandemię, myślę że obserwujemy, że coraz więcej osób jest zainteresowanych karierą w IT, pewnie programowanie się tutaj wybija. Taką trochę węższą dziedziną jest Mobile. Myślę też, że to jest trochę tak samo, jak z piłką nożną. To, że każdy może w nią grać, nie znaczy, że każdy będzie najlepszym piłkarzem. Dlatego chciałbym Cię na początku zapytać, w Twojej opinii, dla kogo Mobile to jest dobra ścieżka kariery?

Przede wszystkim dla osób, które w taki naturalny sposób dobrze czują się w budowaniu aplikacji mocno ukierunkowanych na interakcję z użytkownikiem, gdzie oprogramowanie aplikacji jest ukierunkowane na taki dobrze zaprojektowany UX. To przede wszystkim dla osób, dla których to jest istotne. Ja myślę, że każdy z deweloperów ma swoje preferencje. Niektórzy najlepiej czują się w szeroko rozumianym back-endzie i mam tu na myśli takie rozwiązania stricte serwerowe.

Ale patrząc też z innej strony, to też preferencje technologiczne mają duże znaczenie. W dzisiejszych czasach technologie około mobilne są już tak mocno ugruntowane, że dają możliwość rozwinięcia skrzydeł jako programista. Podejrzewam, że gdybym ja zaczynał obecnie swoją karierę w IT, to mój wybór padłby zapewne bliżej Mobile. Piętnaście lat temu jednak tak to nie wyglądało, wszystko było bardziej około komputerowe i serwerowe, i bardziej się rozwinąłem w tym kierunku. Ale konkludując, z czystym sercem mogę polecić każdemu, szczególnie jeśli trafi się na jakiś fajny, rozwojowy projekt.

Tak, ja też jestem zawodowo dużo bardziej związany z back-endem, ale miałem taką krótką przygodę, chęć stworzenia czegoś, co jest tak bardzo namacalne, czegoś, co tak naprawdę na swoim telefonie jesteś w stanie uruchomić. Myślę, że to jest podobne nawiązanie do tego, co mówiłeś z elektroniką. Namacalność Twojego produktu jest jednak czymś przyciągającym. Dla mnie to też była trochę odskocznia od tego, tak jak to określiłeś, czysto serwerowego programowania. Trochę zbliżenie się, jak sobie teraz o tym myślę, może do front-endu, do UI, do UX. To jest też fajna odskocznia.

Jak myślisz, kto sprawdzi się w tej profesji? Chęć zostania czy wejścia w tę branżę, w tę dziedzinę, to jest jedno, ale jaki profil osób odnajdzie się dobrze, według Ciebie, jako Mobile deweloper?

Jest to pytanie podobne do poprzedniego, ale abstrahując od takich osobowościowych preferencji, to na pewno każdy, kto rzetelnie podchodzi do wiedzy technologicznej oraz ma taką naturalną chęć rozwoju. Na pewnym etapie złożoności projektów bardzo istotną kwestią staje się umiejętność analizy biznesowej, więc na pewno osoby, które potrafią w tym pracować, które potrafią analizować problemy biznesowo, systemowo i pracują w metodologii agilnej, bo jednak te projekty Mobile’owe są najczęściej w tej metodologii prowadzone. Jeśli mógłbym powiedzieć tutaj z mojego podwórka, my w PeP mamy wdrożony pełen cykl wytwarzania oprogramowania, właśnie agilnie, i mogę powiedzieć, że umiejętność pracy w takim środowisku zapewnia największą efektywność i satysfakcję z wykonywanej pracy.

Jako Mobile deweloper odnajdzie się każdy, kto rzetelnie podchodzi do wiedzy technologicznej oraz ma taką naturalną chęć rozwoju. Na pewnym etapie złożoności projektów bardzo istotną kwestią staje się umiejętność analizy biznesowej, więc na pewno osoby, które potrafią w tym pracować, które potrafią analizować problemy biznesowo, systemowo i pracują w metodologii agilnej, bo jednak te projekty Mobile’owe są najczęściej w tej metodologii prowadzone.

Czy myślisz, że trzeba mieć takie trochę ocierające się o UI skille, pewne wyczucie interfejsu, może jakiś zmysł graficzny? Czy to jest niezbędne w pracy Mobile dewelopera?

Myślę, że trzeba mieć to na uwadze dość mocno. To tak, jak w drugim pytaniu odpowiadałem. Musi być, mimo wszystko, tutaj ukierunkowanie, bo tacy deweloperzy stricte back-endowi bardzo często nie potrafią zaprojektować dobrego interfejsu użytkownika oraz też często nie potrafią zwrócić uwagi, że jakiś przebieg od strony użytkownika na urządzeniu jest nielogiczny albo nie jest dostatecznie prosty dla osoby nie technicznej.

Coś w tym jest. Mówi się o programistach back-endu, że tworzą bardzo sprawnie i dobrze działające oprogramowanie, z którego nie da się korzystać. Faktycznie, coś w tym jest. Tworzenie aplikacji mobilnych to jest, jakby nie patrzeć, jeszcze całkiem świeża rzecz, patrząc ogólnie na programowanie. Często jest tak, że do tej działki programowania przechodzą osoby, które wcześniej miały różne inne doświadczenia zawodowe, technologiczne. Czy, w Twojej opinii, jest taki background zawodowy związany z technologiami czy projektami wcześniej realizowanymi, jaki mają najczęściej osoby, które rozpoczynają swoją karierę w Mobile?

Ja się tutaj wypowiem dość skromnie, ponieważ nasz projekt oparty o technologie mobilne jako takie, oparte o Androida, w Polskich ePłatnościach jest dość świeży, bo te urządzenia taki akceptowalny próg cenowy osiągnęły dopiero niedawno. Ale mimo wszystko, z tych krótkich doświadczeń wynika, że są to w pierwszej kolejności osoby już w jakimś zakresie powiązane z projektami postrzeganymi jako Mobile, a w dalszej kolejności deweloperzy na początku swojej kariery, którzy chcą obrać taki kierunek zawodowy. Zdarzają się też osoby, które uczestniczyły w projektach nie mobilnych, ale opartych głównie o technologię Java.

A czy jest wiadome albo czy obserwujesz też takie osoby, które są na różnego rodzaju bootcampach, szkołach programowania w kierunku Mobile, czy też na polskim rynku nie mamy czegoś takiego?

Nie, raczej czegoś takiego nie obserwowałem w CV, że ktoś bardzo mocno przebieg swojej nauki na uczelni ukierunkowywał w stronę Mobile.

Rozumiem. Powiedziałeś o Androidzie. Jakby tak spojrzeć na to, jaki jest udział Androida w stosunku do konkurencyjnych platform, czyli iOS-a tak w zasadzie, to na polskim rynku zdecydowanie on dominuje. Jakiś czas temu, jak obserwowałem ilość ofert pracy pod kątem Android vs iOS, to można powiedzieć, że mimo wszystko, takie bardziej atrakcyjne były związane z platformą iOS. Jestem ciekaw, jak to teraz wygląda. Czy, w Twojej opinii, Android czy iOS deweloper ma obecnie lepsze perspektywy rozwoju?

To jest bardzo dobre pytanie i moja odpowiedź też może być troszeczkę skrzywiona, ponieważ, jak wiadomo, aktualnie ilość urządzeń opartych na Android jest dwa razy większa, aniżeli tych opartych o iOS-a. Tak wynika ze statystyk. Wydaje się też, że Android jest systemem bardziej otwartym, co pozwala na stosowanie go w wielu urządzeniach nie będących stricte telefonami czy tabletami. Tutaj właśnie bardzo dobrym przykładem jest firma PeP, bo prowadzimy projekt terminala POS opartego o Android, a liczba producentów takich terminali już zbliża się do dziesięciu, opartych o system Android.

Na ten moment nie wyobrażam sobie, szczerze powiedziawszy, aby Apple stworzyło swoją linię terminali POS, bo pewnie by to tak wyglądało, bo u nich to jest zamknięte. Ja to stwierdzenie też rozciągnąłbym na inne branże, bo aktualnie hardware na tyle staniał, że inne zaawansowane urządzenia mogą pojawiać się dokładnie wszędzie, w sprzęcie RTV, AGD i wielu innych. Konkludując, osobiście stawiam na Android, ale, jak wiadomo, jest to starcie gigantów technologicznych i ostatecznie ciężko wyrokować, jak sytuacja będzie wyglądać za dziesięć lat.

Rozumiem. Taką odpowiedzią na problem Android vs iOS są różnego typu platformy czy też rozwiązania, które działają na wielu systemach, wielu platformach. Myślę tutaj głównie o Flutterze czy React Native, które są dosyć powszechnie teraz stosowane. Jaką rolę obecnie, według Ciebie, tego typu systemy odgrywają na przykład w rozwoju Mobile dewelopera? Na ile on musi być świadomy, na ile musi uwzględniać w tym swoim rozwoju właśnie tego typu rozwiązania?

Odpowiem troszeczkę wymijająco. Myślę, że to zależy, bo wydaje mi się, że dla stosunkowo małych projektów stosowanie tego typu rozwiązań daje możliwość utrzymania jednego kodu i rozpropagowanie go na urządzenia różnych producentów, ale nie są to technologie bezkosztowe. Więc przy bardziej złożonych aplikacjach mogą stać się niewydajne lub powodować problemy w działaniu, co pociąga za sobą różnego rodzaju obejścia. Ja osobiście jestem sceptyczny, ale szczęśliwie dla mnie nie stawałem przed takim dylematem w PeP z powodów wymienionych powyżej. Terminal, jaki my mamy, jest oparty o Android, więc naturalnym jest w pełni natywne podejście.

Właśnie, jestem bardzo ciekawy, w którym kierunku to się będzie rozwijało. Czy jednak te platformy alternatywne czy też wieloplatformowe będą w jakiś sposób dominowały rynek, czy też w mimo wszystko jednak znajdzie się miejsce dla jednych i dla drugich, bo, tak jak powiedziałeś, o ile wygodnie i dosyć szybko można stworzyć aplikację na wiele platform, o tyle można się też zderzyć z problemami, wydajnościowymi kwestiami, których jednak nie da się rozwiązać bez znajomości tych natywnych rozwiązań.

Jasne, tutaj też należy wspomnieć prawie nieboszczyka Xamarina, prawda?

Tak. Faktycznie osoby, które poświęciły jakiś czas czy część swojej kariery na zgłębianie tej technologii, w tej chwili trochę dysponują takimi umiejętnościami, które na rynku nie są zbyt poszukiwane. Właśnie, jest ryzyko. Tak myślę, że poznanie tych podstaw, tutaj myślę konkretnie o Androidzie, o iOS-ie, czyli o tych natywnych rozwiązaniach, mogę zaryzykować chyba twierdzenie, że zawsze będzie potrzebne, niezależnie od tego, czy wieloplatformowe rozwiązania zdobędą większą lub mniejszą popularność.

Myślę, że być może na początku warto by się było na coś zdecydować, nie wiem, czy się ze mną zgodzisz. Trudno będzie nam równolegle podążać za rozwojem Androida i iOS-a. Mamy tę platformę, mniej lub bardziej mamy narzucony język. Na Androida w tej chwili można użyć przynajmniej dwóch, ale wiadomo, że Kotlin jest dominujący. W przypadku iOS-a też teoretycznie dwa, ale też wiadomo, że właściwie zostaje nam Swift. Więc mamy język, mamy platformę, czy jest coś jeszcze oprócz właśnie platformy i języka, co, według Ciebie, jest niezbędne w takim toolboxie dewelopera aplikacji mobilnych, co na pewno musi poznać, żeby uczestniczyć chociażby w tworzeniu aplikacji w zespole, w jakiejś firmie?

Ja oczywiście skoncentruję się głównie na tej platformie Android, z którą jesteśmy związani w PeP. Po pierwsze, środowisko deweloperskie, rekomendowane przez Googla Android Studio, ale też inne, IntelliJ IDEA. Oprócz tego, z najważniejszych bibliotek czy też frameworków, to mógłbym wymienić RxJavę, Daggera czy Rooma. Nieocenionym przy większych projektach jest doświadczenie z Jenkinsem, żeby zapewnić integrację CI/CD. Znajomość jakiegoś repozytorium artefaktów, my na przykład korzystamy z JFroga. Oczywiście repozytorium kodu. Większość projektów jest w tym momencie oparta o Gita, my dodatkowo jeszcze wspomagamy się Gerritem do review kodu. Narzędzia do debugowania, takie jak ADB i ja zawsze wymagam od deweloperów jakiejś znajomości SQL-a. Jeszcze dodatkowo, jak miałbym coś tutaj wskazać, to świetnie jest, kiedy deweloper jest obeznany z UML-em, to pozwala jednak czytać odpowiednio i tworzyć dokumentacje techniczne.

Dodałbym, że na pewno język angielski też jest takim minimum, ale to jest oczywiste.

To już jest standard.

Tak, o to już nikt nie pyta, tego już nikt nie wymienia w ofertach pracy, bo to jest taki standard. Na ile, w Twojej opinii, można by tu też dodać taką znajomość API REST-owego, jakiegoś grafowego, na ile to jest niezbędne na przykład dla dewelopera?

Oczywiście. Ja pominąłem troszeczkę ten aspekt, nie przyszedł mi do głowy w pierwszej chwili w odpowiedzi na to pytanie, ponieważ my w PeP, w tym światku płatniczym, używamy troszeczkę innych protokołów. Rzadko kiedy nasze aplikacje komunikują się właśnie jakimś API REST-owym, są to takie specyficzne protokoły, wręcz binarne. Wynika to troszeczkę z przeszłości. Pewnie gdyby to powstawało w dzisiejszych czasach, to byłyby to API REST-owe. Mimo wszystko z jakichś takich standardów korzystamy. Ale oczywiście, uogólniając, jasne, jest to na pewno niezbędne. Jest to standard w dzisiejszych czasach.

👉 Czytaj dalej na: https://porozmawiajmyoit.pl/poit-127-mobile-jako-sciezka-kariery/

kkempin’s dev blog

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.

Krzysztof Kempiński

Written by

IT expert. Ruby on Rails/iOS/Elixir programmer. Blogger. Podcaster.

kkempin’s dev blog

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.