
Artykuł • Czytanie 7 min
Artykuł • Czytanie 9 min
Kolejnym rozmówcą jest Michał, Senior Android Developer w #TeamSpeednet. Dowiedz się, jakie wyzwania czekają na niego w projektach bankowych.

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ń.
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.
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.
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.
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.
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ę.
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.
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.
Może cię zainteresować