Uczysz się programowania, żeby w przyszłości móc pracować w branży informatycznej ? A może zacząłeś już szukać pracy jako młodszy programista ?

Powiem ci jedno…

Nie jest to w tej chwili takie proste.

Zapewne słyszałeś, że rynek cierpi na brak rąk do pracy. Problem w tym, że brakuje głównie doświadczonych programistów. Jeśli chodzi o początkujących, coraz trudniej jest im znaleźć pierwszą pracę. Ofert dla młodszych programistów jest stosunkowo mało, a kandydatów w tym momencie (koniec 2017 roku) jest dość dużo. Mówię tutaj oczywiście o ofertach ciekawej pracy w firmach, które dbają o rozwój nowych pracowników – a na takich ci zależy (prawda ?).

Temat stał się na tyle popularny, że zainteresowały się nim tradycyjne media, powstaje coraz więcej tzw. szkół programowania, a wielu ludzi uwierzyło, że nawet bez wykształcenia, w ciągu kilku tygodni lub miesięcy, mogą zostać znakomicie opłacanymi specjalistami.

Oczywiście – to nie jest takie proste. Ale nie o tym jest ten wpis – pokazuję ci tylko, że kilka czynników, skumulowanych w jednym momencie, generuje bardzo dużą konkurencję na rynku. Jeśli chcesz sobie z tym poradzić, musisz się przygotować.

Jak się wyróżnić ?

Jednym słowem – musisz zostać zauważony. Nie bój się – nadal nie jest to zbyt trudne. Ilość kandydatów do pierwszej programistycznej pracy nie przekłada się (niestety) na ich jakość. Wystarczy naprawdę niewielki wysiłek, żeby znaleźć się w czołówce.

Jeśli nauka programowania cię pasjonuje i już w czasie studiów, bądź od jakiegoś czasu po godzinach, uczysz się pisząc kod, nie będziesz miał w przyszłości problemów ze znalezieniem pracy. Jeśli napisałeś w swoim życiu choćby kilka tysięcy linijek kodu i naprawdę cię to kręci – jest dobrze. Powiem więcej – jesteś już w tej chwili lepszy, niż 80% innych kandydatów.

Po jakimś czasie, napisaniu kilku prostych aplikacji, popełnieniu sporej ilości błędów i spędzeniu kilkudziesięciu godzin na ich poprawianiu, kolejne 10% kandydatów znajduje się za twoimi plecami. Ten etap to albo sensowna nauka na studiach, albo intensywny trening w domu. W efekcie znajdujesz się wśród 10% najlepszych kandydatów na stanowisko młodszego programisty.

Fajnie ? Może i tak, ale żeby bez problemu znaleźć pracę, na której ci zależy, musisz być lepszy niż 99% twoich konkurentów. Nie żartuję.

Dobra wiadomość jest taka, że dołączenie do grona 1% najlepszych nadal jest stosunkowo łatwe. Istnieje kilka kluczowych umiejętności, związanych dość mocno z programowaniem, ale niezwiązanych z konkretną technologią, dzięki którym będziesz pożądanym kandydatem w niemal każdej firmie – jednym z najlepszych na poziomie junior.

A zatem..

Język angielski.

Znajomość języka angielskiego to swego rodzaju standard przemysłowy w branży IT. Jego znajomość jest niezbędna zarówno do sensownej nauki programowania (znakomita większość sensownych źródeł wiedzy jest anglojęzyczna) jak i skutecznego porozumiewania się w pracy.

Swobodne czytanie i pisanie w języku angielskim to podstawa. Prawie każda dokumentacja projektowa, z jaką się zetkniesz, będzie napisana w języku angielskim. Podobnie będzie z dokumentacją języka programowania, używanych bibliotek, narzędzi, itd.

Mówienie i rozumienie ze słuchu jest już poziom wyżej, ale również bardzo szybko okaże się przydatne. Coraz szybciej i coraz częściej wymaga się od programistów werbalnej komunikacji z kolegami za granicą oraz przełożonymi z innych oddziałów firmy.

Warto poświęcać czas na systematyczną naukę angielskiego – na pewno zostanie to sprawdzone i docenione podczas twoich rozmów kwalifikacyjnych.

System kontroli wersji.

Czyli coś, czego używa niemal każda firma i każdy programista. Systemy do wersjonowania kodu źródłowego to podstawa – niezależnie od technologii, wielkości firmy, kraju, itp.

Tutaj standardem branżowym stał się w ostatnich latach git – oprogramowanie stworzone przez Linusa Torvalds’a na potrzeby wersjonowania kodu jądra Linuksa. System jest napisany w języku C, wieloplatformowy, darmowy (otwarto-źródłowy), skuteczny i wygodny – stąd jego rosnąca popularność.

Poznanie gita na poziomie pozwalającym swobodnie z nim pracować jest naprawdę łatwe – wystarczy kilka dni zabawy w trakcie pisania swojego kodu.

Jeśli chcesz poznać podstawy i filozofię gita, mogę ci polecić bardzo dobre źródło – książkę Pro Git, której legalną wersję online można znaleźć pod adresem https://git-scm.com/book/en/v2 (pierwsze wydanie książki jest przetłumaczone na język polski). Poznanie 4 pierwszych rozdziałów w zupełności wystarcza do wykonywania codziennej pracy. Autor zaczyna od wyjaśnienia, czym są systemy kontroli wersji i na czym polega rozproszona natura gita – czyli od absolutnych podstaw.

Ja używam gita prawie wszędzie – wykorzystuję go w pracy, w prywatnych projektach a nawet wersjonuję nim dokumenty. Pracowałem z różnymi systemami kontroli wersji, darmowymi i płatnymi, scentralizowanymi i rozproszonymi. W tym momencie git jest po prostu najlepszym dla mnie (i nie tylko dla mnie) wyborem.

Język programowania i jego biblioteka standardowa.

Dobrze jest poszerzać horyzonty i poznawać różne języki programowania. Musisz jednak dokonać wyboru (bez obaw – to nie decyzja na całe życie :)) swojej głównej technologii. Każda oferta pracy skupia się na konkretnej specjalizacji (tworzenie stron internetowych, aplikacje desktopowe, programowanie urządzeń wbudowanych, itd.), a każda specjalizacja wiąże się z konkretnymi technologiami – a więc językami programowania i bibliotekami.

Jeśli nie zniechęciłeś się na samym początku swojej przygody z programowaniem, na pewno masz już jakieś preferencje i polubiłeś konkretny język programowania. Nikt nie będzie wymagał od młodszego programisty bycia ekspertem, ale płynne poruszanie się w składni języka i jego najpopularniejszych idiomach będzie nieocenione. Tego nie da się kupić – takie doświadczenia zdobędziesz tylko i wyłącznie dzięki pisaniu kodu. Wspominałem już wcześniej, że to najlepszy sposób nauki.

Prawie zawsze z językami programowania związane są ich biblioteki standardowe, czyli większe lub mniejsze zbiory gotowych funkcji i klas, które są dostarczane w pakiecie. Dzięki gotowym, sprawdzonym i przetestowanym rozwiązaniom, programiści nie muszą wymyślać wciąż koła na nowo – korzystanie z oficjalnych bibliotek jest wysoce pożądane, bo oszczędza czas, pieniądze i nerwy. Dlatego poznanie biblioteki standardowej twojego ulubionego języka jest twoim najważniejszym zadaniem po poznaniu jego składni. Chodzi oczywiście o orientację w terenie, a nie naukę na pamięć – potrzebna ci wiedza, czy dany problem został przez jakiś moduł biblioteczny rozwiązany, w codziennej pracy będziesz korzystał z dokumentacji.

Doświadczenie i zrealizowane projekty.

Myślisz, że jako kandydat na programistę nie masz się czym pochwalić ? To nie do końca prawda… Żadna sensowna firma nie będzie wymagała od młodszego programisty kilku lat doświadczenia komercyjnego i 10 zrealizowanych projektów. Jednak w ramach nauki powstaje kod źródłowy, a potem kompletne aplikacje. Niedoskonałe i zawierające błędy i niedociągnięcia – to prawda. Nie ma to jednak żadnego znaczenia.

W czasie nauki poprzez pisanie kodu, uczymy się nie tylko składni języka i korzystania z bibliotek. Poprzez szukanie informacji o błędach uczymy się najlepszych praktyk, idiomów, napotykamy na wzorce projektowe i ogólnie przyjęte podstawowe zasady. Uczymy się profesjonalnego podejścia do tworzenia oprogramowania.

Na tym etapie najlepszym rozwiązaniem będzie założenie darmowego konta na witrynie, takiej jak https://github.com/, która umożliwi ci przechowywanie twoich repozytoriów gita z kodem źródłowym. Twój profil na https://github.com/ powie potencjalnemu pracodawcy więcej, niż kilkugodzinna rozmowa kwalifikacyjna. Dlaczego ?

W celu umieszczenia swojego kodu w internecie musiałeś przecież:

  • poznać sam serwis i poczytać trochę o jego obsłudze – wszystko po angielsku
  • napisać kod źródłowy, z którego musiałeś usunąć błędy w celu uruchomienia i poprawnego działania programu
  • poznać gita na tyle, aby utworzyć repozytorium, dodać do niego kod i wysłać go na serwer

Czy to nie te kluczowe umiejętności, o których wspominaliśmy wcześniej ?

Jak zostać młodszym programistą ?

Wszystko, o czym wspomniałem, wydaje się dość nieskomplikowane. Nie wymaga też kilku lat nauki. Mimo tego 99% kandydatów do pierwszej programistycznej pracy nie realizuje tych podstaw. Z różnych powodów: lenistwo, brak prawdziwego zainteresowania, brak znajomości realiów.

Zdarzało mi się już rekrutować programistów do pracy – zwłaszcza na stanowiska juniorskie. Gdyby przyszedł do mnie kandydat:

  • radzący sobie z językiem angielskim
  • znający system kontroli wersji git
  • potrafiący pisać zrozumiały kod w swojej głównej technologii, wykorzystując przy tym bibliotekę standardową języka

i pokazał mi repozytorium ze swoim kodem, przechowywane w internecie, to rozmawialibyśmy na spotkaniu wyłącznie o tym kodzie. Jestem przekonany, że po 30 minutach dyskusji i kilku pytaniach, byłby jednym z niewielu, których chciałbym zatrudnić. Mało kto zignorowałby taką osobę.

Dlaczego tak to wygląda ?

Dlatego, że takich kandydatów jest naprawdę mało – wręcz zaskakująco niewielu. Ale dla ciebie to informacja kluczowa – wystarczy to wykorzystać.