Branża IT wciąż rozwija się bardzo dynamicznie, a tworzenie oprogramowania to jedna z trudniejszych, a z drugiej strony najbardziej satysfakcjonujących ścieżek kariery, jaką można wybrać. Powołując się na dane z raportu Komisji Europejskiej DESI 2020, w Unii Europejskiej brakuje około 600 tysięcy programistów, a Polska Z innymi krajami UE dzieli problem niedoboru kadr IT. Pracodawcy zauważają, że najlepszym sposobem na uzupełnienie braków kadrowych w IT jest rekrutowanie osób początkujących. Coraz większą uwagę poświęcają także kształceniu własnych pracowników. To bardzo optymistyczna wiadomość dla osób, które rozważają wejście do branży IT lub myślą o przebranżowieniu się. Perspektywa wejścia do branży jest kusząca, jednak Ilość specjalizacji, technologii i języków programowania przyprawia o ból głowy. Podobnie jak w innych branżach programiści muszą zdecydować na czym skupią swój rozwój – a o tym najlepiej pomyśleć już na początku kariery. Dziś podpowiemy na co zwrócić uwagę. Temat już kiedyś poruszyliśmy na blogu i cieszył się sporym powodzeniem – zobaczcie TUTAJ.

Rachunek sumienia: co jest moją pasją?

Świat tworzenia oprogramowania jest tak rozległy, że nikt nie jest w stanie opanować każdego aspektu tego procesu. Zastanów się co jest Twoją największą pasją, robienie czego sprawia Ci największą przyjemność. Steve Jobs powiedział, że „jedynym sposobem, by dobrze pracować, jest robienie tego, co uważasz za wspaniałe zajęcie.” Praca, która jest jednocześnie pasją, może być spełnieniem Twoich marzeń i przyczynić się do szybszego osiągania kolejnych szczebli kariery. Nawet najlepiej wynagradzane zawody (jak wiemy zawód programisty do nich należy) nie dadzą Ci satysfakcji, jeśli wykonujesz go pod przymusem i tylko czekasz na zakończenie dnia. Na początku drogi warto dowiedzieć się jak najwięcej o każdym z komponentów programowania, aby wybrać swoją specjalność. W artykule omówimy każdy z typów kategorii programistów, aby zobaczyć, z czym się one wiążą. Po przejrzeniu listy mamy nadzieję, że będziesz mógł mieć lepsze pojęcie o tym, jakim typem programisty chcesz być.

Zapotrzebowanie na specjalistów, a trendy rynkowe

Planując wybór specjalizacji warto prześledzić trendy rynkowe, a także raporty wynagrodzeń i indeksy popularności języków programowania. Sporo powiedzą o tym, jakich umiejętności będą poszukiwać pracodawcy i na jaki poziom wynagrodzenia można liczyć. Indeks TIOBE jest wskaźnikiem popularności języków programowania. Jest on aktualizowany co miesiąc, a oceny opierają się na liczbie wyszukiwań dla danej technologii w wyszukiwarkach takich jak Google, Bing, Wikipedia, Yahoo!, czy Ebay oraz na liczbie wyników dla frazy `+”<language> programming”. Przykładowo w ubiegłym roku Phyton wyprzedził Javę, która królowała na pierwszych miejscach rankingów przez 7 lat! Na początku nowego miesiąca w mediach społecznościowych dzielimy się popularnością języków programowania w formie wykresów (najbardziej aktualny wykaz tutaj) Kolejnym rzetelnym źródłem wiedzy jest RedMonk, który w swoim rankingu stosuje korelację danych pozyskiwanych z Stack Overflow oraz platformy GitHub. W przypadku danych z GitHub do statystyk są brane dane z GitHub Archive i „prośby o udostępnienie”. W przypadku danych z Stack Overflow, Red Monk wykorzystuje surowe dane publikowane przez Stack Overflow i ich narzędzie do eksportu danych, nakładając na nie swoje metryki. RedMonk publikuje swoje analizy w postaci cyklicznych raportów (dwa razy do roku) wraz z opisem aktualnie stosowanej metody zbierania i korelacji danych. Powyższe raporty stanowią bardzo dobre źródło wiedzy na temat trendów oraz zmian w popularności poszczególnych języków programowania na świecie, a dane z nich pochodzące niewątpliwie mogą być wskazówką, którą z technologii programistycznych warto się zainteresować. 

Rodzaje specjalizacji, które warto poznać bliżej

Full Stack

Można scharakteryzować go jako osobę, która sprawnie porusza się po wszystkich warstwach stosu technologicznego (ang. stack). Do ich głównych obowiązków należy projektowanie interakcji użytkowników w witrynach internetowych, tworzenie serwerów i baz danych pod kątem funkcjonalności witryn internetowych oraz kodowanie na platformy mobilne. 

Jeśli poruszasz się w technologiach zarówno front-end, jak i back-end, (a w przypadku tego pierwszego należy znasz HTML i CSS) i opanowałeś najbardziej popularny język w tym obszarze programowania – JavaScript, masz solidne podstawy na Full Stacka. Wśród popularniejszych propozycji wartych opanowania pojawiają się tu następujące pary: Python – Django, JavaScript (node.js) – Express, Java – Spring, oraz Ruby – Ruby on Rails.

Aby mieć pewność, że poradzisz sobie na stanowisku Full Stack Developera konieczne będzie opanowanie zagadnień baz danych (np. SQL) i architektury aplikacji webowych. Przyda się Git, znajomość protokołu HTTP i zasad projektowania REST API.

Back-end

Specjaliści po stronie serwera spędzają większość czasu pracując nad budowaniem i wdrażaniem algorytmów umożliwiających poprawne działanie programów. oraz tworzą interfejsy API. Dzieje się tak, ponieważ większość aplikacji opartych na serwerze musi komunikować się ze światem zewnętrznym w takiej czy innej formie. Ta warstwa stosu programistycznego będzie wymagać specjalizacji w języku takim jak: Ruby, Python, Java lub C ++, PHP.

Front-end

Jeśli chodzi o wybór specjalizacji programisty, trzecią warstwą do wyboru jest komponent front-end. Nie tak dawno programista front-end był uważany za kogoś, kto spędził cały dzień na pracy z HTML i CSS. Ich głównym celem było sprawienie, by aplikacje wyglądały ładnie. Jednak definicja dewelopera frontendu zmieniła się o 180 stopni wraz z pojawieniem się ram po stronie klienta. Te frameworki, takie jak Angular i React, umożliwiły programistom front-end tworzenie kompletnych aplikacji przy niewielkiej interakcji po stronie serwera. Te aplikacje są renderowane w całości w przeglądarce, ponieważ są napisane w JavaScript (czyli języku programowania zrozumiałym dla przeglądarek). Gdy aplikacja potrzebuje dodatkowych danych, po prostu komunikuje się z interfejsami API. Jeśli więc uwielbiasz tworzyć aplikacje, z którymi użytkownicy będą bezpośrednio wchodzić w interakcje, a pomysł pracy z interfejsami API Cię nie odstrasza, programowanie front-end może być właściwym wyborem dla Ciebie.

Mobile 

Tej specjalizacji poświęcamy cały miesiąc w IT-Leaders, dlatego jeśli kręci Cię pomysł zbudowania kolejnego Angry Birds lub Instagrama, obszar rozwoju mobilnego może być dobrym rozwiązaniem – koniecznie obserwuj nas w social mediach. Programowanie mobilne było kiedyś bardzo trudną dziedziną. Jeszcze kilka lat temu musiałbyś opanować wiele języków (Objective-C i Java), aby tworzyć aplikacje na smartfony. Jednak frameworki JavaScript, takie jak Ionic i React Native, umożliwiły wykorzystanie JavaScript do tworzenia aplikacji, które zachowują się jak natywne aplikacje na smartfony.Nadal możesz używać języków takich jak Swift, Objective-C i Java do tworzenia prawdziwie natywnych aplikacji. I zawsze będzie świetny zestaw miejsc pracy dla programistów specjalizujących się w tych językach. Jeśli jednak jesteś niezależnym programistą lub programistą z pełnym stosem, wykorzystując strukturę JavaScript, możesz tworzyć aplikacje na smartfony i tablety na wszystkie platformy. Z mojego doświadczenia wynika, że ​​krzywa uczenia się tych frameworków JavaScript jest nieco niższa niż w przypadku tradycyjnych języków mobilnych. Ponadto być może zauważyłeś, że narzędzia używane w aplikacjach mobilnych opartych na JavaScript i programowaniu front-end są podobne. W gronie znajomych programistów mamy wielu, którzy odeszli od programowania po stronie serwera i przeszli do kodowania front-end, ponieważ pozwala im to tworzyć aplikacje dla: komputerów stacjonarnych, tabletów i telefonów. 

Rozwiązania chmurowe

Mówiąc najprościej, przetwarzanie w chmurze to świadczenie usług obliczeniowych – w tym serwerów, pamięci masowej, baz danych, sieci, oprogramowania, analityki i danych wywiadowczych – przez Internet („chmurę”) w celu oferowania szybszych innowacji, elastycznych zasobów i korzyści skali. Zwykle płacisz tylko za usługi w chmurze, z których korzystasz, co pomaga obniżyć koszty operacyjne, wydajniej eksploatować infrastrukturę i skalować ją w miarę zmieniających się potrzeb biznesowych. Cloud Computing czyli chmura obliczeniowa jest niezwykle rozbudowanym zbiorem usług i rozwiązań obliczeniowych. To swego rodzaju outsourcing informatyczny, który pozwala na przeniesienie danych do serwerów zewnętrznych, co znacząco przyczynia się oszczędności pieniędzy i czasu.Computerworld podaje, że najwięksi dostawcy platform chmurowych dla biznesu to Amazon Web Services, Microsoft Azure i Google Cloud Platform i u tych gigantów jest praca 🙂

AI/ Machine Learning

Łącząc inżynierię oprogramowania i analizę danych, inżynierowie systemów uczących się umożliwiają maszynom uczenie się bez konieczności dalszego programowania. Jakkolwiek enigmatycznie to brzmi, w tej specjalizacji tkwi ogromna przyszłość. Jako inżynier uczenia maszynowego, pracujący w tej gałęzi sztucznej inteligencji, będziesz odpowiedzialny za tworzenie programów i algorytmów, które umożliwiają maszynom wykonywanie działań bez kierowania. Przykładem systemu, który możesz wyprodukować, jest autonomiczny samochód lub dostosowany kanał informacyjny.

Kluczową cechą tej pracy jest to, że zapewniasz komputerom możliwość automatycznego uczenia się i doskonalenia na podstawie doświadczenia, bez konieczności programowania. 

Doświadczenie w programowaniu komputerowym jest niezbędne, a większość pracodawców oczekuje od kandydatów znajomości języków Java, Python i C ++. Wielu prosi również o doświadczenie branżowe w programowaniu komputerów.

Podejmij decyzję

Jeśli jesteś na początku drogi w IT, nie czuj się zmuszony do natychmiastowego wybrania specjalności. Zamiast tego zbadaj każdy rodzaj warstwy programistycznej, dopóki nie znajdziesz tego, który Cię naprawdę kręci. W tym przewodniku przedstawiliśmy bardzo ogólny widok typów specjalizacji (jest ich oczywiście więcej). Jednak w rzeczywistości będziesz musiał stać się jeszcze bardziej szczegółowy, koncentrując się na rozwoju. Na przykład, jeśli jesteś programistą po stronie serwera, możesz skupić się na tworzeniu aplikacji eCommerce lub wdrażaniu systemów księgowych. Jeśli jesteś początkującym programistą front-end, możesz zostać światowej klasy specjalistą ds. zabezpieczeń. Rynek jest bardzo chłonny i otwarty, co doskonale widać w ilości ogłoszeń pracy (zerknij na nasz job board IT-Leaders. Zawsze TYLKO aktualne rekrutacje!). Wybierz mądrze – od tego zależy Twoja przyszłość.