Jak powstaje aplikacja? Przybliżamy zawody związane z tworzeniem oprogramowania
To zadziwiające: gdy czytam serwisy ekonomiczne, widzę doniesienia o ogromnych zarobkach w branży IT i dużej zachłanności specjalistów, rzekomo domagających się coraz większych pieniędzy. Gdy jednak rozglądam się wokół siebie, wśród znajomych inżynierów zajmujących się tworzeniem oprogramowania, widzę zupełnie co innego.
Widzę ludzi z pasją, podążających za swoimi aspiracjami i dbających o swój rozwój. Pieniądze nie są dla nich głównym kryterium w wyborze zajęcia, lecz możliwość rozwoju, uczenia się nowych technologii oraz ciekawe i satysfakcjonujące projekty. Mam wrażenie, że spoglądanie na pieniądze jako kryterium doboru miejsca pracy jest domeną jedynie początkujących specjalistów. Gdy pną oni się w rozwoju zawodowym, płaca schodzi na drugi plan, a na pierwszy wysuwają się możliwości rozwoju.
Dlaczego o tym mówię? Bo jest to istotne, dopiero gdy planujemy rozpocząć pracę jako specjalista związany z tworzeniem oprogramowania. Spójrzmy na badania rynku i wyniki ankiet, aby poznać obowiązujące stawki - ale nie kierujmy się tym jako głównym kryterium w wyborze specjalności.
Co wybrać?
Przy tworzeniu aplikacji pracuje wielu specjalistów, których umiejętności się ze sobą nie pokrywają. Zacząć nie jest trudno - jeśli mamy predyspozycje i trochę samozaparcia, można, w miarę szybko zdobyć początkową wiedzę, która daje podstawy do dalszego rozwoju. Jednak poza branżą nie jest łatwo wybrać przyszłe stanowisko. Najlepiej zrobić to na przykładzie aplikacji.
Dlaczego akurat aplikacji mobilnych? Bo to wyjątkowo perspektywiczna branża, a doskonale pokazują to dane z rynku rozrywki elektronicznej.
Jak mówi Agata Kuźma z Kodołamacza, firmy organizującej bootcampy programistyczne:
Wyobraźmy sobie aplikację, jedną z wielu, jakich używamy na swoich smartfonach. I pomyślmy o co najmniej trzech specjalistach, którzy ją napisali, przetestowali i zapewnili jej dystrybucję oraz infrastrukturę.
Programista mobilny
Wiele lat temu programowanie aplikacji na urządzenia mobilne wiązało się z licznymi ograniczeniami. Najpopularniejszą początkowo technologią była Java ME - czyli Java Platform, Micro Edition. Służyła do publikowania aplikacji (głównie niewielkich gier), na urządzenia przed-smartfonowe. Jeśli w czasach przed smartfonami grałeś w gry na telefonie, jest duża szansa, że były napisane właśnie za pomocą Java ME. Choć dziś w użytkowaniu jest wciąż ogromna liczba urządzeń, na których można uruchomić aplikacje pisane w Java ME, jest to jednak przeszłość programowania mobilnego.
Dziś pisanie aplikacji na urządzenia mobilne to przede wszystkim dostosowanie się do specyfiki urządzenia - ograniczona wielkość interfejsu, krótki czas interakcji, mobilność użytkownika. Aplikacja niedostosowana do tej specyfiki będzie po prostu zmniejszoną wersją aplikacji desktopowej i będzie niewygodna w użytkowaniu.
Czego w takim razie używa programista mobilny w swojej pracy współcześnie?
- Może używać natywnych narzędzi przeznaczonych na dane środowisko. W przypadku iOS trzeba używać Maca i narzędzi od Apple - a piszemy w językach Objective-C lub ostatnio mocno promowanym przez Apple języku Swift.
- W przypadku Androida narzędzia są również darmowe, ale istnieją na każdy system operacyjny. Android jest największą platformą mobilną - natywnym językiem programowania na Androida jest Java oraz Kotlin. Można uczyć się samemu - Android ma sporą społeczność dzięki czemu w sieci znajdziemy dużo materiałów na ten temat. Jest jednak lepszy sposób: programistą Androida można zostać po ukończeniu intensywnego, siedmiotygodniowego bootcampu firmy Kodołamacz.
- Oprócz natywnych narzędzi, istnieją narzędzia umożliwiające tworzenie aplikacji mobilnych międzyplatformowych. Przykładowe rozwiązania to Xamarin lub Cordova. Takie podejście ma jedną podstawową zaletę: kod napisany raz może być uruchomiony na więcej niż jednej platformie mobilnej. Niestety, takie rozwiązanie ma również swoje ograniczenia, w szczególności związane z wydajnością i kompatybilnością tworzonych rozwiązań.
- Odrębnym zagadnieniem są mobilne aplikacje Webowe. Wraz z rozwojem rozwiązań typu Progressive Web Apps, będą one miały przed sobą nowe możliwości. Niestety, w tej chwili brak jest rozwiązania działającego bez problemów na wszystkich głównych platformach mobilnych.
Tester automatyczny
Napisaną aplikację trzeba przetestować. Do tego, w przypadku aplikacji mobilnej, przetestować na różnych urządzeniach, mających różne specyfikacje i rozmiary ekranu oraz w różnych warunkach. Na przykład: przy dostępnej sieci Wi-Fi lub komórkowej, z dostępem do danych z GPS oraz bez etc. Najlepiej również… nie robić tego ręcznie.
I tutaj właśnie wkracza tester z umiejętnością tworzenia testów automatycznych. Istnieje wiele frameworków mobilnych pozwalających na tego typu testy (np. Appium), trzeba jednak najpierw zdobyć podstawową wiedzę o projektowaniu i uruchamianiu takich testów. Automatyczny tester, bądź inżynier QA, to w rzeczywistości programista: musi on znać skryptowe języki programowania.
Zdaniem Marii Nowakowskiej, koordynatorki projektu Stacja IT:
Stworzoną wersję aplikacji trzeba dostarczyć zarówno testerom jak i użytkownikom. Najlepiej zrobi to…
DevOps
DevOps to funkcja, która istnieje pomiędzy programistami a użytkownikami aplikacji. Praca DevOpsa opiera się zazwyczaj na tzw. zwinnym (agile) podejściu do tworzenia aplikacji. Zakłada ono szybkie dostarczanie nowych wersji zarówno do testów jak i do środowiska produkcyjnego.
Według Anny Mikuły z Sages:
Dwoma podstawowymi procesami, jakie DevOps musi zdefiniować są:
- CI - Continuous integration. Dzięki temu zaakceptowane zmiany w kodzie są dostarczane do głównej wersji programu i mogą np. trafić do testerów. Wszystko to dzieje się automatycznie za pomocą narzędzi takich jak Jenkins.
- CD - Continuous delivery. Dzięki temu podejściu klient otrzymuje przetestowany produkt wcześniej. Zmniejsza się tym samym czas dotarcia do użytkownika, czyli tzw. time to market.
Jak zostać DevOpsem i wspomagać procesy dostarczania oprogramowania? Może tym pomóc np. szkolenie organizowane przez fimę Sages. Po takim trzydniowym kursie będziemy w stanie tworzyć infrastrukturę automatyzacji. Kurs przeznaczony jest dla programistów.
Jedna aplikacja, a trzy specjalności, bardzo różniące się od siebie. Mając ambicje wejścia na rynek pracy związany z tworzeniem oprogramowania, warto zastanowić się zawczasu, jaka funkcja najbardziej by nam odpowiadała.