Praca w IT

Ze świata IT: jak zostać programistą Androida? Co warto wiedzieć?

Albert Lewandowski
Ze świata IT: jak zostać programistą Androida? Co warto wiedzieć?
40

Programista Android musi znać nie tylko różne technologie, ale również obserwować zmiany w bardzo dynamicznym mobilnym świecie. Jak wygląda taka praca?

Programista Android - czego oczekuje rynek?

Rynek urządzeń mobilnych rozwija się wciąż dynamicznie, liczba aplikacji rośnie, a i sami użytkownicy mają coraz większe wymagania względem dostępnych programów. Niewątpliwie jest tu spory rynek, który, jak każda inna kategoria IT, wymaga ciągłego doskonalenia się.

W dużym uproszczeniu, jako programista Androida będziemy zajmować się projektowaniem i kodowaniem aplikacji mobilnych. Jeżeli chodzi o języki programowania, to obecnie najpopularniejszymi są: Java oraz Kotlin. Nieoceniona pozostaje także znajomość SQL i umiejętność pisania testów jednostkowych oraz funkcjonalnych. Teraz natomiast oddam głos profesjonaliście, który na co dzień pracuję właśnie jako programista aplikacji na Androida.

Wywiad z programistą Androida, KISS

Androidowiec, z otwartą głową, którą lubi czasem porządnie przewietrzyć podczas jazdy na desce snowboardowej lub wypadów w góry. Wyjątkowo dobrze toleruje wysokie jak i niskie temperatury, a jego zdolności adaptacyjne budzą podziw. Wykorzystuje to w swojej pracy programisty, pisząc czysty kod i rozgrzewając procesory (co słabszych komputerów) do czerwoności. Szybko się uczy i sprawia mu to radość. Swój umysł gimnastykuje grając w gry strategiczne, ale nie gardzi też dobrą książką. Rozkłada życie na czynniki pierwsze, analizuje i optymalizuje, a ono odpłaca się mu tym samym - cokolwiek to ma znaczyć :)

Jak opisałbyś swoje codzienne obowiązki?

Obowiązki programisty Androida w dużej mierze nie różnią się znacząco od obowiązków programistów pracujących w innych technologiach. Praca opiera się na realizowaniu zadań rozpisanych i przydzielonych przez menedżera. Polega to przede wszystkim na programowaniu i wdrażaniu nowych funkcjonalności do aplikacji.

Poza programowaniem codziennie odbywają się spotkania z zespołem pracującym nad danym projektem, podczas których przedstawiamy rezultaty pracy z poprzedniego dnia oraz wspólnie rozwiązujemy napotkane problemy. Raz na dwa tygodnie ma miejsce dłuższe spotkanie, na którym podsumowujemy naszą pracę oraz rozpisujemy zadania na nadchodzący czas. Zespół Androidowy liczy przeważnie od jednej do kilku osób. Jednak przy bardziej złożonych projektach (Android, iOS, back-end, testerzy) cały zespół może liczyć nawet kilkanaście osób. Wymaga to ciągłej komunikacji oraz współpracy między członkami zespołu, co nadzoruje menedżer. 

Część mojej pracy opiera się również na utrzymaniu już istniejących aplikacji np. dodawaniu nowych funkcjonalności, wprowadzaniu aktualizacji itp. Od czasu do czasu trzeba też naprawić pojawiające się problemy, tzw. bugi.

Praca na pewno nie jest nudna. Kolejnym jej elementem jest współpraca ze zleceniodawcą. Klienci potrafią być bardzo pomysłowi, jak i również wymagający. Zdarzają się projekty, przy których zespół deweloperski ma bezpośredni kontakt ze zleceniodawcą, pozwala to lepiej zrozumieć jego potrzeby oraz ewentualnie ukierunkować go tak, aby projekt powstawał w zgodzie z wymaganiami i możliwościami systemu Android.

Tworzone aplikacje są dość różnorodne. Pracowaliśmy już np. nad aplikacjami zakupowymi, społecznościowymi, przesyłającymi obraz na żywo (tzw. streaming) bądź analizującymi i przetwarzającymi obraz w czasie rzeczywistym. Niektóre projekty są bardzo ciekawe, dla przykładu ostatnio realizowałem Research and Development (badanie i rozwój) dla aplikacji opartej na rozpoznawaniu obrazów przy wykorzystaniu technologii uczenia maszynowego (ML) oraz rozszerzonej rzeczywistości (AR). Każdy dzień pracy wygląda trochę inaczej, więc nudzić się nie można.

Jakie umiejętności techniczne są kluczowe, aby zostać programistą Androida?

Myślę, że szczególnie ważna jest chęć rozwoju i otwartość na wiedzę, a umiejętności z czasem przyjdą same. Oczywiście dotyczy to wszelkich gałęzi związanych z nowymi technologiami, alle szczególnie w przypadku Androida sytuacja przez ostatnie lata zmieniała się bardziej dynamicznie niż w innych dziedzinach informatyki. Wynika to z tego, że Android jeszcze kilka lat temu miał spore „zaległości” na wielu płaszczyznach związanych z wytwarzaniem oprogramowania. Dzięki znacznym inwestycjom Google w tę platformę udało się w szybkim tempie nadrobić zaniedbania i rozwinąć system. Oznacza to, że technologie, na których opiera się Android zmieniały się i zmieniają bardzo szybko i aby nie zostać w tyle, należy cały czas się uczyć i poszerzać wiedzę.

Konkretne umiejętności, jakie należy zdobyć decydując się na zostanie programistą Androida, to nauka języków programowania Java oraz Kotlin. Również znajomość środowiska programistycznego Android Studio/IntelliJ będzie dużym plusem. Przydatna jest umiejętność stosowania wzorców architektonicznych, które z powodzeniem zostały zaadoptowane do programów mobilnych. Plusem na pewno będzie znajomość zagadnień programowania reaktywnego, ze szczególnym uwzględnieniem biblioteki ReactiveX. Dodatkowym autem jest dobra znajomość języka angielskiego, co staje się dzisiaj standardem w branży IT.

Jakie umiejętności miękkie są przydatne w roli programisty?

Jeszcze kilka lat temu programistę mobilnego postrzegano jako typowego wolnego strzelca (freelancera), który w pojedynkę programował małe bądź średnie aplikacje, pracując dla zleceniodawcy, bądź realizując własne pomysły. Aktualnie sytuacja się zmieniła i większość Android'owców znajduje zatrudnienie w firmach. Zespoły mogą być liczne, oznacza to potrzebę ciągłej komunikacji, dlatego w takim przypadku będą pożądane tzw. umiejętności miękkie. Dodatkowo, o czym już wspominałem, często mamy bezpośredni kontakt z klientem. Komunikujemy się w biurze, jak również przez telefon bądź wideo konferencję, to również wymaga wykształcenia odpowiednich zdolności interpersonalnych. Ważna jest zdolność czerpania wiedzy i umiejętności z doświadczenia innych współpracowników. Pozwala to w szybkim tempie podnosić swoje kwalifikacje oraz zgrać się z zespołem. Rynek IT, a w szczególności mobilny, szybko się zmienia. Programista powinien posiadać wysokie zdolności adaptacyjne np. z łatwością przestawiać się na nowe wersje bibliotek bądź zmieniać technologie których używa. Zarządzanie czasem to też istotny aspekt zawodu programisty. Właściwe rozplanowanie pracy pomaga pracować szybciej i wydajniej realizować powierzone zadania.

Podsumowując, dzisiejsze programowanie w Androidzie to przede wszystkim praca w mniejszym bądź większym zespole programistów, menedżerów, testerów i współpraca z klientami. W takim przypadku dobra komunikacja, umiejętność pracy w zespole i zdolności interpersonalne będą pożądanymi cechami.

Co spowodowało, że postanowiłeś zostać programistą Androida?

Przygodę z programowaniem zaczynałem w czasach licealnych od języka C/C++, później na studiach informatycznych zainteresowałem się Javą. Android moją uwagę zwrócił, gdy pisząc pracę magisterską wynajmowałem małe biuro z dwoma kolegami, jeden z nich stawiał pierwsze kroki w Javie pisząc niewielkie aplikacje dla siebie jeszcze pod Androida w wersji 2. Wtedy pierwszy raz miałem okazję zobaczyć, czym jest programowanie na urządzenia mobilne. Spodobało mi się w nim to, że już po krótkim okresie nauki byłem w stanie napisać własną, działającą aplikację, którą umieściłem na markecie Google Play. W tamtym czasie, inaczej niż obecnie, dostęp do przykładowych materiałów oraz wiedzy był bardzo ograniczony. Przez wiele problemów trzeba było przedzierać się samemu. Na szczęście dzisiaj wiele się zmieniło i Android zyskał bardziej „ludzkie” oblicze.

W programowaniu na Androida podoba mi się to, że w dość krótkim czasie można osiągnąć widoczne efekty swojej pracy. Rezultaty pracy są namacalne i zrozumiałe dla końcowego użytkownika. Można na przykład pokazać znajomemu interaktywną, ładnie wyglądającą aplikację i pochwalić się tym co zrobiłeś. Mnie bardzo odpowiada taki typ programowania. W Androidzie doceniam też to, że można realizować ciekawe pomysły klientów, jak również mieć możliwość wdrażania własnych projektów w życie. Jest to rodzaj pracy pozwalający na ciągły rozwój i przyswajanie nowej wiedzy i umiejętności. 

Jak oceniasz perspektywy rozwoju?

Możliwości rozwoju jako programista Androida jest bardzo dużo i oceniam je dobrze. Platforma cały czas się zmienia i ewoluuje. Klienci zamawiają naprawdę ciekawe projekty. Dodatkowo można próbować realizować własne pomysły na aplikacje. Pomimo, że próg wejścia we własne dochodowe aplikacje jest już znacznie wyższy niż jeszcze kilka lat temu, uważam, że nadal łatwiej jest stworzyć aplikację na urządzenia mobilne która zostanie dostrzeżona i będzie przynosić zyski w porównaniu do większości innych dziedzin IT, gdzie ciężko się już przebić.

Z jakimi technologiami głównie pracujesz?

Programowanie na Androida przeszło niemałą ewolucję w ciągu ostatnich kilku lat. Do wytwarzania programowania używamy wielu bibliotek oraz framework'ów, rozbudowanego środowiska programistycznego, zaawansowanych systemów budowy i testowania oprogramowania. Wszystkie nowe projekty powstają w języku Kotlin. Obecnie jest to standard w programowaniu na Androida. W firmie z powodzeniem wykorzystujemy programowanie reaktywne (ReactiveX) oraz bibliotekę do wstrzykiwania zależności Dagger. Ważne jest też, aby dobrze orientować się w popularnych wzorcach architektonicznych stosowanych w aplikacjach Androidowych, a mianowicie MVP, MVVM, MVI. Szeroko używamy również bibliotek Android Jetpack.

Projekty są tworzone w środowisku programistycznym Android Studio, powstałym na bazie popularnego IntelliJ. Tworzenie testów to też już norma w projektach mobilnych. Piszemy zarówno testy jednostkowe, jak również integracyjne i UI. Do budowy i dostarczania programów używamy continuous integration / delivery (CI/CD) na platformie Bitrise. Projekty prowadzone są w metodykach zwinnych. Samo zarządzanie projektami odbywa się w Jira ze wsparciem Confluence'a. Jako system kontroli wersji używamy Git'a. Oczywiście wszelkiego rodzaju zagadnienia związane z tworzeniem czystego kodu czyli np. stosowanie wzorców projektowych bądź zasad SOLID również mają zastosowanie w projektach na Androida. Na potrzeby utrzymania bądź refaktoryzacji starszego kodu, dobrze znać Javę.

Co polecasz do nauki i treningu osobom, które chcą zostać?

Sam zaczynałem przygodę, gdy na rynku dominował Android w wersji 2. W tamtym czasie materiałów, z których można było czerpać wiedzę było jak na lekarstwo. Dzisiaj sytuacja jest inna. Samokształcenie i chęć zdobywania wiedzy, to klucze do sukcesu. Na YouTube jest obecnie dużo darmowych tutoriali i od tego bym właśnie zaczął, czyli od znalezienia wartościowego kanału związanego z programowaniem na platformę Android. Dotyczy to również nauki języka programowania, w naszym przypadku Javy bądź Kotlin'a. Polecam przyswoić podstawy i przejść do konkretnych przykładów z aplikacjami. Dodatkowym plusem wideo tutoriali jest możliwość osłuchania się z technicznym językiem angielskim.

Warto też postarać się napisać i wypuścić na market swoją prostą aplikację. Pozwoli to lepiej poznać ekosystem Androida. Z czasem, gdy nasza wiedza będzie się poszerzać, warto zacząć przeglądać otwarte kody źródłowe aplikacji dostępne na GitHub'ie bądź BitBucket'cie. Polecam też śledzić coroczne konferencje związane z Androidem np. Google IO, Android Summit, Devoxx. Wartościowe jest również czytanie artykułów na stronie Medium.com, ulubionej platformie blogowej Android'owców. Osobiście mniej polecam naukę z książek, pomimo tego, że sam tak zaczynałem i z sentymentu stoi u mnie na półce kilkanaście pozycji. Dzisiaj wiedzę na początku przygody z programowaniem można przyswajać w szybszym tempie niż dawniej. Dodatkowo w czasach, gdy technologie zmieniają się bardzo szybko, wiedza w książkach szybko się starzeje. Ostatnio popularne są też Meetupy. Osobiście w tej kwestii nie mam zdania, uczestniczyłem na spotkaniach na wysokim poziomie, ale zdarzały się też nic nie wnoszące prezentacje.

O firmie KISS

KISS digital jest firmą technologiczną o szerokich kompetencjach związanych z programowaniem aplikacji webowych i mobilnych. Jednak to co istotne, to fakt że wspieramy klientów w całym procesie wytwarzania produktu, tj. począwszy od projektów graficznych, poprzez badania UX/UI, programowanie, aż po wdrożenie i wsparcie w kampanii reklamowej. Dodatkowo, poza świadczeniem usług, projektujemy także własne rozwiązania sprzętowe; jesteśmy m.in. autorami dedykowanego dla samochodów, urządzenia Loxet. 

Nasze motto to "Keep It Simple, Stupid" - które oznacza, że w każdym aspekcie naszej działalności używamy możliwie prostych środków - w tym również staramy się nie nadużywać marketingowego lania wody ;)

Bieżące rekrutacje

Obecnie KISS poszukuje kandydatów na stanowisko: 

Opis: https://kissdigital.com/pl/vacancy/sales-representative

Opis: https://kissdigital.com/pl/vacancy/frontend-developer

Opis: https://kissdigital.com/pl/vacancy/reactjs-developer-022019

Programista Androida - stabilna praca w ciekawym środowisku

Moim zdaniem Android i aplikacje na niego stanowią naprawdę ciekawe zagadnienie. Widać, że dostępne technologie wciąż się rozwijają i wśród nich można wspomnieć o, np. Flutterze od Google. Naturalnie eksperci w tej dziedzinie mogą liczyć na bardzo dobre zarobki i możliwość pracy na całym świecie.

Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu