Jak powstaje aplikacja? Przybliżamy zawody związane z tworzeniem oprogramowania

Jak powstaje aplikacja? Przybliżamy zawody związane z tworzeniem oprogramowania

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:

Niewiele osób ma świadomość, że gry na urządzenia mobilne to zdecydowanie większy rynek od stacjonarnych platform gamingowych. W zeszłym roku jego wartość była 2,3 raza wyższa niż rynku gier na komputery PC i Mac oraz 3,6 raza większa niż wartość wydatków na gry konsolowe.

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ę.

Jak powstaje aplikacja? Przybliżamy zawody związane z tworzeniem oprogramowania

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.

Jak powstaje aplikacja? Przybliżamy zawody związane z tworzeniem oprogramowania

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:

Testerzy są coraz bardziej poszukiwani, bo powstaje coraz więcej programów, aplikacji czy produktów które należy sprawdzić. Niektóre błędy powstają z powodu złych założeń czy nieuwagi, a wczesne wykrycie niweluje pojawienie się wysokich kosztów w późniejszych fazach. Wiele osób nadal myli testera automatycznego i manualnego. Upraszczając, tego pierwszego możemy utożsamić z programistą, to właśnie on tworzy skrypty i programy, które automatyzują testowanie ręczne. Z kolei Ci drudzy ręcznie sprawdzają produkt na podstawie planu testów w celu wyłapania błędów. Jest to bardziej monotonna praca, ale nie wymagająca tak specjalistycznej wiedzy jak testowanie automatyczne. W tej specjalizacji bardzo ważna jest wymiana wiedzy. Testerzy coraz częściej spotykają się w celu dzielenia się doświadczeniami. Jeszcze w tym roku będzie miał miejsce pierwszy w Polsce tygodniowy maraton testowania czyli Testaton, gdzie mniej lub bardziej zaawansowani testerzy za darmo poznają praktyczną stronę planowania, wdrażania i wykonywania testów oraz najpopularniejsze narzędzia.

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:

Agile oznacza zwinny. Filozofia Agile opiera się zatem przede wszystkim na elastycznym podejściu do tworzenia oprogramowania, w ramach którego wymagania i rozwiązania ewoluują w zależności od potrzeb, dzięki zaangażowaniu adaptujących się do bieżącej sytuacji zespołów IT, które blisko współpracują z odbiorcami aplikacji.

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.

Dołącz do dyskusji

Advertisement