#TeamSpeednet: Michał, Senior Android Developer

ewelina
Ewelina Kuczyńska
January 10, 2024 | Wywiady

Moim kolejnym rozmówcą jest Michał – Senior Android Developer. Michał jest częścią #TeamSpeednet już od 7 lat. W krótkim wywiadzie podzielił się swoją historią pracy w Speednet. Rozmawialiśmy także o branży, projektach bankowych oraz wyzwaniach z jakimi zmaga się na co dzień. 

Cześć Michał dziękuję, że znalazłeś chwilę na naszą rozmowę! Czy możesz mi opowiedzieć jak długo pracujesz w Speednet i jak długo jesteś w branży? Czy zauważyłeś jakieś zmiany na przestrzeni tych lat? 

Michał: Jestem okropny, jeżeli chodzi o zapamiętywanie dat [odpala LinkedIn]. Według mojej ściągi zaczynałem swoją przygodę z IT w 2013 roku jako tester oprogramowania, natomiast do Speednet dołączyłem w 2017 już jako Android Developer. 

Przez ostatnie dziesięć lat zmiany w IT były ogromne. Jedne technologie miały swój świt, inne zaś swój zmierzch. Niektóre z nich wdarły się przebojem na piedestał, po czym o nich zapomniano lub porzucono. Przykładem może być Xamarin, czyli podejście do programowania mobilnego cross platform, podobnie Windows Phone też nie wytrzymał próby czasu. Nie sposób wyliczyć tutaj technologii, o których już nawet nie pamiętamy. Obecnie widzimy, że sztuczna inteligencja staje się coraz bardziej popularna, zarówno chatGPT czy wbudowani w IDE „pomocnicy”. Zobaczymy co nowego przyniesie nam ten rok. 

Samo podejście do prowadzenia projektów też ewoluowało. Dzisiaj wszyscy jesteśmy zwinni i elastyczni, a scrum jest czymś obowiązkowym, bez czego wielu nie wyobraża sobie pracy. Zmianie uległ też sposób w jaki podchodzi się do zatrudniania nowych pracowników. Gdy ja szukałem swojej pierwszej pracy, niemal w każdym ogłoszeniu widniało „wymagane studia na kierunku informatyka lub pokrewnym”. Teraz dużo bardziej od edukacji stawiamy na doświadczenie. Drzwi do świata IT dla wielu osób mogą otworzyć się przez liczne bootcampy, czy szkoły programowania, które dają możliwość uzyskania podstawowej wiedzy z danej dziedziny, oczywiście z lepszym bądź gorszym skutkiem. Jednak wszystko leży w ich rękach i tylko od nich zależy, co z tą wiedzą zrobić. Mogą tworzyć własne projekty i budować powoli świetne portfolio na GitHub lub spocząć na laurach i być jednym z tysiąca, którzy kończą taki kurs. 

Rozumiem, skoro już wspomniałeś o projektach, to może przejdźmy do kolejnego pytania. Już dość długo pracujesz w projektach bankowych. Czy opowiesz nam o wyzwaniach, które napotykasz podczas pracy nad projektami z tego obszaru? 

Michał: W każdym projekcie IT, bez względu na dziedzinę, spotykamy się z podobnymi wyzwaniami. Projekty z branży fintech czy banking charakteryzują się jednak dużą złożonością. Przede wszystkim kluczowy jest dobór odpowiedniej architektury i narzędzi. W obecnym projekcie mieliśmy na uwadze, że będziemy go utrzymywać przez długi czas. Dlatego już 3 lata temu postawiliśmy w Androidzie na Jetpack Compose. Pierwsze prace rozpoczęły się, gdy Jetpack był jeszcze w wersji alfa, jednak dzięki tej decyzji, obecnie mamy aplikację, która jest “up to date” ze wszystkimi obecnymi trendami. 

Odważną decyzją było też postawienie na podejście cross platform z wykorzystaniem Kotlin Multiplatform Mobile, gdzie pomiędzy aplikację iOS i Android dzielimy wspólną logikę biznesową. Zaoszczędziliśmy sporo czasu na naprawę błędów pod tytułem “na iOS działa to inaczej”, “na Androidzie requests wysyłają się w innej kolejności”, czy też “walidacje formularzy działają inaczej” itp., itd. Oprócz wyzwań technologicznych, pojawiają się również takie, o których nie zawsze się mówi, czyli np. komunikacja. Praca nad projektem, w który zaangażowanych jest dużo osób wymaga niezwykłej koordynacji. Trzeba uwzględnić współpracę z zewnętrznymi dostawcami, integrację z systemami, a także skoordynować procesy wdrożeniowe, tak aby wszystko sprawnie współgrało. Dobra współpraca, wzajemne zrozumienie i transparentność w działaniach pomaga nam wszystkim dowozić produkty najwyższej jakości. 

No dobrze, a czy uważasz, że wojna iOS vs Android jest jeszcze żywa? Czy obserwujesz jakiekolwiek nowe trendy czy zmiany w tej “rywalizacji”? 

Michał: Granice powoli się zacierają. Deklaratywny styl pisania interfejsu użytkownika w SwiftUI czy JetpackCompose jest do siebie podobny, tutaj polecam super artykuł na ten temat. Tak naprawdę, niezależnie od tego na jaką platformę programujemy, wszystkim nam zależy, żeby robić dobre aplikacje. Nutka rywalizacji między zespołami pomaga nam też wycisnąć maksimum, bo przecież jeżeli udało się na drugiej platformie to czemu my mamy być gorsi [śmiech]. Wzajemnie motywujemy się do przekraczania swoich granic, dzięki czemu ciągle się rozwijamy. 

Ostatnimi czasy wprowadzono możliwość uruchamiania widoków napisanych w JetpackCompose na iOS, Desktop i WEB. Jeżeli dobrze pokombinujemy, możemy z wykorzystaniem KMM i Compose Multiplatform napisać aplikację z wykorzystaniem jednego języka na wszystkie platformy. Już wkrótce pojawi się mój post na ten temat na naszym blogu. 

Flutter również w ostatnim czasie zyskał na popularności i ma rzesze swoich zwolenników, podobnie React Native. Dlatego myślę, że każdy z programistów mobilnych znajdzie dla siebie kawałek tortu i technologię, w której czuje się najlepiej. 

Chyba mogę wywnioskować, że całkiem nieźle się czujesz w tym co robisz i dobrze Ci się u nas pracuje. Nawet na ostatniej imprezie świątecznej otrzymałeś wyróżnienie z tytułem – HR Mega Support, m.in. za polecajki rekrutacyjne. Mógłbyś powiedzieć, za co konkretnie cenisz sobie pracę w Speednet? 

Michał: Zaczynałem 7 lat temu, jeszcze w PPNT w Gdyni, gdy na pokładzie mieliśmy 65 (albo mniej) osób. Wtedy nie przypuszczałem, że zostanę na tak długo. Teraz mam nadzieję doczekać się statusu firmowego dinozaura [śmiech]. Obecnie jest nas ponad 230 osób, a firma zachowała swój charakter. Mimo takiego wzrostu osobowego, nie utraciliśmy swojej tożsamości, nie mamy sztucznie tworzonych kierowników liniowych, menadżerów średniego szczebla czy innych niepotrzebnych tworów rodem z korporacji. Po prostu nadal jesteśmy całkiem zgraną paczką. Myślę też, że jednym z powodów, dla których pracuje mi się tak dobrze jest to, że wartości Speednet pokrywają się z moimi. Szczerość, transparentność, współpraca, rozwój i… sport [śmiech].

Według badań instytutu Gallupa, ludzie dużo rzadziej zmieniają pracę, jeżeli pracują z ludźmi, których lubią, z którymi mogą dzielić pasje, a ja tak właśnie się czuję. Zapewne dużą rolę odegrały tu także projekty, do których trafiałem, każdy z nich był coraz większym wyzwaniem, pozwalał mi się rozwijać i powodował, że tak naprawdę nigdy się nie nudziłem. Dodatkowo zawsze miałem obok siebie osoby od których mogłem się uczyć i nigdy nie zostałem sam z problemem.

Super, a jako osoba prowadząca również rozmowy rekrutacyjne, czy masz jakąś radę dla osób, które chcą wejść do branży IT? Może podpowiesz, jak przygotować się do rozmowy rekrutacyjnej? Co według Ciebie jest ważne i na co zwracasz uwagę?

Michał: Myślę, że trochę odpowiedziałem na to w pierwszym pytaniu, niemniej jednak postaram się rozwinąć ten temat, chociaż nie będę wspominał o technikaliach. Może jest to banał, ale schludne i poukładane CV potrafi zrobić robotę. Jeżeli dostaje do przejrzenia osiem stron dokumentu, który nie ma ładu ani składu, formatowanie tekstu woła o pomstę do nieba, a najważniejsze informacje są porozrzucane po kilku stronach, to nie jestem w stanie go ogarnąć. Pewnie teraz sporo osób powie, że jestem czepialski, ale jeżeli kandydaci mają w CV wpisane kursy czy szkolenia, to zawsze szukam ich programu online, sprawdzam jakie tematy były poruszane na kursie i zadaję jedno pytanie związane bezpośrednio z programem kursu. Zdarza się, że jest to zaskoczeniem.  

Zdecydowana większość kandydatów na rozmowach mówi też, że chce się rozwijać i uczyć nowych technologii, stąd, zawsze pytam skąd czerpią wiedzę, jak dbają o swój rozwój, czym się inspirują i co ciekawego ostatnio przeczytali. Zadziwiająca większość nie potrafi powiedzieć niczego konkretnego. Przykładowo, często wymienią “Android Weekly”, jako coś co przeglądają, ale bardzo rzadko są w stanie doprecyzować jaki artykuł ostatnio wpadł im w ręce. Idąc trochę dalej, część osób podpina również link do swojego GitHub, co jest bardzo dobrą praktyką, bo zawsze mogę zobaczyć czym się interesują i co robią w wolnym czasie. Często jednak po wejściu na ich konto widzę, że od 2-3 lat nie było tam żadnego commita. Wtedy od razu odpuszczam sobie dalsze przeglądanie repozytorium. 

Czasem dużą rolę odgrywa też charakter osoby po drugiej stronie. Dokładnie wiesz, do jakiego projektu czy zespołu rekrutujesz, więc wiesz też, jaka panuje tam atmosfera i jakie inne osobowości są w tym projekcie na pokładzie. Stąd, jeżeli na rozmowie uda się złapać „flow”, to po prostu łapiesz dodatkowe punkty. Zdążają się jednak sytuacje, że coś nie zagra i od początku czujesz, że ta rozmowa nie idzie w najlepszym kierunku – co oczywiście nikogo nie skreśla. Biorę też pod uwagę, że stres nie jest przyjacielem na rozmowie rekrutacyjnej i staram się zadbać o komfortową atmosferę.

Myślę, że jest to cenna rada dla wszystkich osób, które chcą się dobrze przygotować do rozmowy rekrutacyjnej. Przejdźmy teraz proszę do nieco innego tematu. W Speednet aktywnie wspieramy inicjatywy edukacyjne, takie jak warsztaty dla szkół z zakresu przedsiębiorczości czy budowania kariery. Zawsze chętnie angażujesz się w prowadzenie tego typu działań. Jaka, Twoim zdaniem, jest wartość takich inicjatyw, zwłaszcza w kontekście rozwoju edukacyjnego? 

Michał: Tutaj dużo trzeba oddać prezesowi, który na pewno opowiada ciekawsze historie ode mnie [śmiech]. Moje warsztaty zazwyczaj dotyczą podstaw SCRUM, dotykają też teorii budowania zespołów i skupiają się na komunikacji. Młodzież, która przychodzi do nas na warsztaty, nie zdaje sobie sprawy, że żeby stworzyć dobry projekt, spełnić wszystkie wymagania klienta i odnieść sukces, trzeba ze sobą po prostu dużo rozmawiać. Zakładają, że programista klepie kod względem dostarczonych wymagań, a reszta go nie interesuje. W praktyce wszyscy wiemy, jak jest naprawdę. Oprócz faz głębokiego skupienia i faktycznego programowania, gdzie powstaje najlepszy jakościowo kod, mamy też sporo spotkań. Im bardziej się do nich przyłożymy i im więcej uzyskamy informacji, tym później będzie nam łatwiej spełnić wymagania, które wspólnie z klientem sformułujemy.

Oprócz tego, że rozmawiamy z biznesem, rozmawiamy też ze sobą. Czasem krótka burza mózgów może dać lepsze efekty niż godziny spędzone samotnie na główkowaniu nad prostym błędem. Wzajemnie przeglądamy sobie kod na Pull Requestach, gdzie liczą się konkrety, ale także staramy się statystować na daily. Bez dobrej komunikacji nie możemy pracować wydajnie. Kiedyś jeden z moich kolegów powiedział: „nie po to zostałem programistą, żeby rozmawiać z ludźmi”. Kategorycznie się z tym nie zgadzam.

Większość wartości z naszej pracy młodzież spokojnie może przełożyć na codziennie życie. Przykładowo, lepiej powiedzieć nauczycielowi, że się nie wyrobi z napisaniem wypracowania na piątek już w poniedziałek, niż zwlekać z tym do ostatniej chwili i wymyślać na poczekaniu wymówkę. Podobnie jest w naszej pracy, w której po drodze zdarzają się różne problemy, rzutujące na wyznaczone terminy. Zawsze jest możliwość, żeby się dogadać, ale trzeba informować o tym jak ogień zaczyna się palić, a nie w momencie, gdy mamy do ugaszenia konkretny pożar.

Na sam koniec chciałam Cię zapytać o feedback. Jesteś odbierany jako osoba, od której zawsze można liczyć na szczerą opinię. Jeśli coś nie działa, po prostu o tym mówisz. Czy uważasz, że taka szczerość, otwartość czy też transparentność w firmie jest ważna? 

Michał: Nieraz żałowałem, że w porę nie ugryzłem się w język [śmiech]. Odpowiadając jednak na Twoje pytanie, zgadzam się. Wzajemne zaufanie i szacunek można budować jedynie w oparciu o szczerość. Dotyczy to zarówno życia osobistego jak i biznesu. Wydaje mi się, że Speednet jest właśnie takim miejscem, w którym pamiętamy o tych wartościach. Wszyscy gramy do jednej bramki, chcemy rozwijać firmę i nigdy nie zostajemy zostawieni sami sobie z problemami. W każdej sytuacji możesz liczyć na wsparcie przełożonego, a i z HR możesz pogadać na każdy temat.  

Podobnie wygląda to w codziennej pracy programisty. Zawsze na koniec sprintu mamy retrospekcje, na której staramy się znaleźć rzeczy, które działają nam świetnie i w ramach dobrych praktyk chcemy się ich trzymać, ale identyfikujemy też problemy które musimy rozwiązać. Jeżeli coś ci nie odpowiada, trzeba o tym powiedzieć, bo samo nigdy nic się nie zadzieje. Czasem wystarczy wspomnieć o temacie, żeby wywołać produktywną dyskusję. Nagle może się okazać, że wiele osób ma podobne odczucia. 

Osobiście, od kiedy usłyszałem o Radical Candor staram się wykorzystywać podejście “radykalnej szczerości” ponieważ wierzę, że pozytywnie wpłynie na skuteczność i efektywność zespołu oraz pomoże nawiązywać z ludźmi silne, autentyczne relacje.

  

Chcesz poznać nas lepiej? Dowiedz się, co nas wyróżnia.