7 kluczowych umiejętności dla programistów przyszłości
Według danych Polskiego Instytutu Ekonomicznego (PIE), w Polsce zatrudnionych jest ok. 586 tys. specjalistów IT. Wciąż jednak brakuje rąk do pracy: 42% wakatów IT określanych jest jako „trudne do obsadzenia’’. W walce z deficytem kadr pomocny staje się upskilling obecnych pracowników. Dzisiejsi programiści muszą zbliżyć się do poziomu inżynierów oprogramowania – wszechstronnych specjalistów, samodzielnie analizujących zadania i rozwiązujących problemy. Jako ekspert z firmy Dynatrace wskażę, jakie 7 kompetencji powinien posiadać „programista przyszłości’’. To zawód, w którym nieustannie trzeba się rozwijać.
Pracownicy IT, w tym programiści, są w dobie gospodarki cyfrowej jednymi z najbardziej poszukiwanych pracowników. Choć liczba Polaków pracujących w branży wzrosła w ciągu ostatnich 10 lat o ok. 192 tys., nadal notujemy znaczne braki kadrowe. Według wyliczeń PIE do średniej unijnej brakuje nam kolejnych 147 tys. pracowników. Zielona Linia zwraca z kolei uwagę, że do rozwiązania problemu z zatrudnieniem w IT Polska potrzebuje dalszych 12 lat.
Sytuację komplikuje fakt, że branża informatyczna w ostatnich latach mocno się profesjonalizuje i wcześnie profiluje ścieżki rozwoju. Powstaje coraz więcej stanowisk, na których specjalista zajmuje się wąskim zagadnieniem, pracując wyłącznie na określonym typie zadań. Tymczasem rynek potrzebuje nowych talentów w postaci działających wielozadaniowo pracowników, którzy będą w stanie łączyć wiedzę typowo techniczną z szerokim spojrzeniem na problem.
Dziś eksperci z sektora są zgodni: w sytuacji niedoborów musimy w pełni wykorzystać kadrę, którą już mamy, dlatego sami programiści muszą dołożyć starań, żeby się rozwijać. Jak? – możliwie wszechstronnie.
Od programisty do inżyniera oprogramowania
Dzisiejszy programista pracuje zwykle zadaniowo: wykonuje określone czynności według instrukcji przygotowanej przez inną osobę. Nie musi zapoznawać się z szerszym kontekstem (takim jak rozmowy z klientem), nie zawsze wie też o całości rozwiązania, którego częścią się zajmuje. Taki tryb pracy wynika między innymi z dość zachowawczej edukacji, jaką od lat otrzymują przyszli programiści:
Kandydatów do kariery w IT już od technikum uczy się rozwiązywania zadań według klucza podstawy programowej, co ogranicza ich kreatywność i promuje myślenie schematami. Nauka na studiach nie nadąża z kolei za tempem rozwoju rynku. Przez to studenci kierunków informatycznych nieraz trafiają na rynek z książkową wiedzą, niekoniecznie przystającą do wyzwań związanych z rynkiem pracy.
Jednak w warunkach niespotykanego dotąd rozwoju technologii cyfrowych wykonywanie wyłącznie zleconych czynności w ograniczonym zakresie często nie wystarcza. Problemy stają się bardziej złożone, rośnie też ilość danych, którymi trzeba zarządzać. Aby skutecznie wykonywać swoją pracę, „dowozić” projekty na czas i rozwiązywać piętrzące się problemy programiści muszą przejmować wiele ról, dotychczas kojarzonych z inżynierami oprogramowania.
To zawód, w którym nieustannie trzeba się rozwijać. Współczesny programista powinien dążyć do zdobycia umiejętności, jakie do tej pory wymagane były od inżyniera oprogramowania. Oznacza to zupełną zmianę myślenia o pracy: programiści nie mogą już ograniczać się tylko do „odhaczania” kolejnych wąsko rozumianych zadań, a powinni przestawić się na myślenie kontekstowe. Programista przyszłości bierze udział w dyskusji nad kształtem projektu, analizuje różne możliwości i sam wdraża własne pomysły.
Jak skrócić time to market
Szersza perspektywa pozwala na tworzenie lepszych technicznie, przeanalizowanych i bardziej dopracowanych rozwiązań. Krytyczne spojrzenie na każdym etapie sprawia, że nie tracimy później czasu na poprawianie zbyt wielu błędów. Dodatkowo wielozadaniowość u osób, które pracują nad jednym zadaniem, pozwala oszczędzać czas i pieniądze. Takie uproszczenie struktur w firmach IT znacznie skraca „time to market”, czyli czas liczony od momentu rozpoczęcia projektu do udostępnienia go klientowi.
Warto zaznaczyć, że „idealny” zespół w świecie firm produktowych powinien składać się zarówno z programistów, jak i inżynierów programowania. Efektywna realizacja zadań możliwa jest dzięki właściwemu podziałowi pracy na role wymagające szerszego spojrzenia oraz te, które wymagają jedynie technicznego rozwiązania jednego konkretnego problemu.
Siedem umiejętności programisty przyszłości
Machine Learning i AI
Jedną z najbardziej docenianych umiejętności u kadry IT jest obecnie tworzenie oprogramowania, które umie się uczyć oraz realizować określone cele z wykorzystaniem algorytmów sztucznej inteligencji. Według Precedence Research rynek sztucznej inteligencji wzrasta o ponad 38% rocznie i ma osiągnąć prawie 1,6bln dol. wartości do 2030 roku. Nie dziwi więc fakt, że ten błyskawicznie ewoluujący obszar chłonie każdą liczbę specjalistów – badania LinkedIna potwierdzają, że wskaźnik zatrudnienia w sektorze AI przyrasta rocznie o 74% od 2016 roku.
Data science
Wraz z rosnącą lawinowo ilością danych, jaką na co dzień zarządzają firmy, umiejętność ich analizy i wizualizacji staje się ważnym atutem. HRForecast na podstawie danych PwC przewiduje, że do 2023 roku już 69% pracodawców będzie wolało zatrudnić pracowników ze znajomością data science niż tych, którzy jej nie mają.
Wykorzystanie technologii chmurowych
Dziś prawie 70% polskich firm dąży do zapewnienia ciągłości biznesowej z wykorzystaniem transformacji chmurowej – podaje PwC Polska. Kompetencje z obszaru cloud computing przydają się zarówno we wdrażaniu innowacyjnych rozwiązań, jak i późniejszej obsłudze chmury w organizacjach.
Cybersecurity
Analiza potencjalnego ryzyka i umiejętność ochrony danych przydają się w większości zawodów z branży IT. Grupa audytowa TestArmy wskazuje, że luka kompetencyjna w tym obszarze jest ogromna – tylko w Polsce do obsadzenia pozostaje dziś 10 tys. stanowisk związanych z cyberbezpieczeństwem. Ogromne zapotrzebowanie na specjalistów od cyfrowego bezpieczeństwa to wyraźny sygnał dla „programisty przyszłości’’, jakie kompetencje będą się liczyć najbardziej.
Umiejętność zrozumienia potrzeb użytkownika końcowego
Developer, który projektuje oprogramowanie (np. tworzy aplikację), powinien patrzeć na nie całościowo i starać się „wejść w skórę” użytkownika. Aby rozwijać umiejętność oceny działania aplikacji lub programu z punktu widzenia odbiorcy, warto uczyć się pracy z perspektywy testera czy UX/UI designera. Odpowiednio identyfikując problemy już na starcie, specjalista taki jest w stanie stworzyć lepszy produkt, który szybciej wejdzie na rynek (i oszczędzi pracy innym).
Krytyczne myślenie i zarządzanie wartością
Myślenie krytyczne to proces obiektywnej analizy sytuacji lub informacji w celu podjęcia racjonalnej decyzji. Ocena i analiza różnych perspektyw pozwala ustalić, w jakim kierunku należy podążać. Inżynier oprogramowania musi identyfikować wartość w planowanej pracy poprzez skupienie się na danych i faktach. To w rezultacie pozwoli zmniejszyć nakład pracy i skupić się na elementach, które przyniosą najwięcej wartości dla organizacji.
Umiejętność pracy end-to-end
Przydaje się również praca „end-to-end”, czyli dostarczanie kompleksowych rozwiązań, tworzonych od początku do końca bez konieczności zaangażowania zewnętrznych dostawców usług. Obejmuje m.in. początkowe konsultacje z klientem, opracowanie projektu biznesowego, fazę planowania i analizy. Dalej przechodzi do integracji i wdrożenia systemów, po ich późniejszą konserwację oraz utrzymywanie po stronie klientów. Holistyczna obsługa end-to-end może obejmować nietypowe, zróżnicowane zadania, od projektowania interfejsu użytkownika po przechowywanie danych.
Podsumowanie
Nieustanny upskilling i projektowy tryb pracy to w 2023 roku i w kolejnych latach już nie przyszłość programowania, a konieczność. Dzięki temu zmniejszy się zapotrzebowanie na nowych pracowników do każdego nowego projektu, a obecni specjaliści chętniej zaangażują się w rozwiązywanie kompleksowych zagadnień, dotychczas powierzanych tylko inżynierom oprogramowania.
***
Dynatrace to światowy lider na rynku software intelligence, spółka notowana na nowojorskiej giełdzie, która pomaga największym globalnym graczom w tworzeniu doskonałych rozwiązań cyfrowych z pomocą AI i automatyzacji w celu monitorowania i optymalizacji wydajności, rozwoju i bezpieczeństwa aplikacji, infrastruktury IT oraz doświadczeń użytkownika dla przedsiębiorstw i agencji rządowych na całym świecie. Obecnie, w dobie cyfryzacji, z takich narzędzi korzystają miliony ludzi, np. w bankowości internetowej, w podróży, podczas zakupów, w pracy, a także korzystając z opieki zdrowotnej.