Sko­ro czy­tasz ten wpis to najpraw­dopodob­niej znaczy, że chcesz zacząć przy­godę z branżą IT i wybrałeś na początek kari­erę pro­gramisty (tutaj poczy­tasz też o innych rolach w branży IT). Świet­nie! Zaczni­jmy więc od przed­staw­ienia roli pro­gramisty w świecie IT :)

Przede wszys­tkim jak wyglą­da pra­ca – najczęś­ciej pracu­je się przy jed­nym pro­jek­cie, ewen­tu­al­nie poświę­ca­jąc część cza­su na wspar­cie poprzed­nich pro­jek­tów czy popraw­ki i uzu­pełnienia do nich. Pracu­je się w kilku­osobowych zespołach, najczęś­ciej nie ma prob­le­mu żeby otrzy­mać dodatkowy mon­i­tor czy inny sprzęt który poprawi nasz kom­fort pra­cy. Dodatkowo ponieważ bra­ki kadrowe w zakre­sie pro­gramistów już ter­az są sza­cow­ane na 20%, w 2020 roku prog­no­zowany defi­cyt to 50%, pro­gramiś­ci to chy­ba najbardziej dopieszczani pra­cown­i­cy jako gru­pa zawodowa :) Najczęś­ciej nie obow­iązu­je dress code, częstą prak­tyką jest fun­dowanie przez fir­mę przekąsek czy owoców/warzyw w jak­iś dzień tygod­nia, moż­na liczyć na sporo spotkań inte­gra­cyjnych przy grach plan­szowych czy też bardziej tradycyjnych.

W tym miejs­cu koniecznie należy też wspom­nieć o społecznoś­ci pro­gramistów, nie spotkałem się nigdy z grupą zawodową tak otwartą na wymi­anę wiedzy i pomoc innym jak pro­gramiś­ci. Jeśli pojaw­ia się jak­iś prob­lem, moż­na zapy­tać dowol­nego współpra­cown­i­ka i na pewno chęt­nie podzieli się z nami swoim pomysłem na rozwiązanie lub pomoże nam je znaleźć. Strony takie jak stackoverflow.com pozwala­ją nam zapy­tać jed­nocześnie mil­iony pro­gramistów z całego świa­ta. Częs­to w fir­ma­ch pro­gramiś­ci sami orga­nizu­ją spotka­nia pod­czas których na zmi­anę prezen­tu­ją ciek­we tem­aty i nowin­ki posz­erza­jąc swo­ją wiedzę. Do tego set­ki wartoś­ciowych pro­jek­tów open-source, z których kodu moż­na się uczyć lub samemu uczest­niczyć w ich rozwoju.

Obowiązki programisty

Sko­ro omówiliśmy już część ben­e­fitów czas na obow­iąz­ki ;) Tutaj sporo zależy od doświad­czenia jakim dys­ponu­je­my ale są oczy­wiś­cie pewne wspólne ele­men­ty. Pro­gramista z założe­nia pisze kod, robi to na pod­staw­ie doku­men­tacji pro­jek­tu (która najczęś­ciej ma for­mę kilku/kilkunastu plików Word lub PDF z odniesieni­a­mi do siebie na wza­jem, dia­gra­ma­mi) i w razie wąt­pli­woś­ci kon­sul­tu­je się z Architek­tem lub Team Lead­erem lub Project Man­agerem (zależy od orga­ni­za­cji pro­jek­tu i konkret­nej firmy). Co dokład­nie pisze, zależy od jego wiedzy i roli w projekcie.

Senior developer / tech leader / starszy programista

Starszy pro­gramista zaj­mu­je się najcześ­ciej głównie nad­zorowaniem prac, wyborem tech­nologii, bib­liotek oraz rozwiązań. Pisząc kod sku­pia się raczej nad wysokopoziomowy­mi rozwiąza­ni­a­mi i trud­niejszy­mi zada­ni­a­mi wyma­ga­ją­cy­mi głęb­szej wiedzy z danego obszaru. W zależnoś­ci od orga­ni­za­cji projektu/firmy, może być odpowiedzial­ny za podzi­ał prac w zes­pole i tworze­nie zadań. Oczy­wiś­cie zaj­mu­je się także stan­dar­d­owy­mi zada­ni­a­mi. Starszy pro­gramista jest także odpowiedzial­ny za rozwiązy­wanie prob­lemów, z kóry­mi nie radzą sobie członkowie zespołu z mniejszym stażem oraz wspieraniem ich w real­iza­cji ich zadań i roz­wo­ju. Oso­ba na tym stanowisku powin­na dys­ponować dużym doświad­cze­niem i oby­ciem z uży­wany­mi tech­nolo­gia­mi, oczeku­je się że będzie dys­ponował spec­jal­isty­czną wiedzą (lub będzie w stanie ją pozyskać) w więk­szoś­ci obszarów.

Developer / programista

Pro­gramista zaj­mu­je się głównie real­i­zowaniem zadań przy­dzielonych mu przez przełożonego / pobranych z kole­j­ki zadań. W razie prob­lemów kon­sul­tu­je się ze starszym pro­gramistą. Od pro­gramisty oczeku­je się wiedzy spec­jal­isty­cznej z pewnych obszarów, oraz braków w innych obszarach, które jed­nak powin­ny być sukcesy­wnie uzupełniane.

Junior developer / młodszy programista

Młod­szy pro­gramista wspiera resztę zespołu w real­iza­cji zadań, częs­to real­izu­je zada­nia które są pow­tarzalne lub pole­ga­ją na wzorowa­niu się na innych fragmentach/modułach aplikacji. Od młod­szego pro­gramisty nie oczeku­je się posi­ada­nia wiedzy spec­jal­isty­cznej, ale powinien on znać pod­stawy języ­ka, być w stanie wzoru­jąc się na innym kodzie tworzyć własne rozwiąza­nia oraz uzu­peł­ni­ać luki we włas­nej wiedzy. Stanowisko to jest tym­cza­sowe i powin­no być trak­towane jako etap nau­ki / płatne prak­ty­ki służące jak najszyb­sze­mu pozyska­niu niezbęd­nej wiedzy i kompetencji.

Od czego zacząć?

Aby zacząć kari­erę komer­cyjną jako pro­gramista najważniejsza jest zna­jo­mość pod­staw wybranej tech­nologii / języ­ka pro­gramowa­nia. Słowo klucz to pod­staw — nikt nie oczeku­je, że oso­ba apliku­ją­ca na stanowisko młod­szego pro­gramisty będzie ekspertem. Ważne jest, żeby była w stanie się uczyć, przyswa­jać wiedzę i naby­wać doświad­cze­nie, a do tego potrzeb­ne są właśnie pod­stawy. Dlat­ego pier­wszym krok­iem jest nau­ka języ­ka pro­gramowa­nia i poz­nanie kroków i ele­men­tów składa­ją­cych się na tworze­nie aplikacji. Z mojego doświad­czenia wyni­ka, że infor­ma­c­je zawarte w tym kur­sie są wystar­cza­jące aby zacząć pracę jako młod­szy pro­gramista. Dal­szą wiedzę najłatwiej naby­wać w prak­tyce, real­izu­jąc konkretne zadania.

Co jest ważne w rozwoju kariery programisty?

Co bard­zo istotne, bard­zo mało firm przy­wiązu­je wagę do for­mal­nego wyk­sz­tałce­nia. Brak ukońc­zonych studiów o pro­filu infor­maty­cznym nie jest przeszkodą, o ile oso­ba posi­a­da wiedzę i kom­pe­tenc­je. Jeśli chodzi o potwierdze­nie naszych kom­pe­tencji, dla potenc­jal­nego pra­co­daw­cy najważniejsze ele­men­ty to doświad­cze­nie pro­jek­towe (zre­al­i­zowane pro­jek­ty, także te real­i­zowane pry­wat­nie, choć oczy­wiś­cie na pro­jek­ty real­i­zowane w zes­pole pra­co­daw­cy patrzą przy­chyl­niejszym okiem) oraz cer­ty­fikaty branżowe. W Javie uznawaną w branży cer­ty­fikację prowadzi fir­ma Oracle.

Doświadczenie projektowe

Najważniejsze w kari­erze pro­gramisty jest doświad­cze­nie pro­jek­towe. Liczą się przede wszys­tkim tech­nolo­gie z jaki­mi pra­cow­al­iśmy (ide­al­nie, jeśli uży­wal­iśmy głównie jed­nej tech­nologii którą wyko­rzys­tu­je także potenc­jal­ny pra­co­daw­ca oraz zetknęliśmy się z inny­mi tech­nolo­gia­mi raz czy dwa dzię­ki czemu mamy porów­nanie) oraz to, czy pro­jekt był real­i­zowany komer­cyjnie (był klient, for­malne wyma­gania, zespół itp) czy nie.

Ścieżka certyfikacyjna

Java-certyfikaty

Fir­ma Ora­cle orga­nizu­je cer­ty­fikację w języku Java na kilku poziomach, przed­staw­ionych na grafice powyżej. Apliku­jąc do pier­wszej pra­cy, warto posi­adać cer­ty­fikat na poziomie Ora­cle Cer­ti­fied Asso­ciate który potwierdza zna­jo­mość pod­staw Javy lub Ora­cle Cer­ti­fied Pro­fes­sion­al, który to pokazu­je, że potrafimy w prak­tyce korzys­tać z języ­ka Java i znamy jego zaw­iłoś­ci. Przy­go­towanie do drugiego cer­ty­fikatu wykracza jed­nak znaczą­co poza ramy kur­su na tym blogu, oso­by zain­tere­sowane zapraszam do kon­tak­tu, chęt­nie wskażę mate­ri­ały, źródła czy podzielę się swoi­mi doświad­czeni­a­mi. Koszt każdego cer­ty­fikatu moż­na sprawdz­ić na stron­ie Ora­cle Edu­ca­tion (np. tutaj infor­ma­c­ja o cer­ty­fika­cie Cer­ti­fied Pro­gram­mer) (niek­tóre cer­ty­fikaty są kilkue­tapowe, wtedy koszt każdego eta­pu podawny jest osob­no). Koszt ten może wydawać się wyso­ki (ok. 1000zł za cer­ty­fikat), jed­nak zaręczam, że zwraca się on bard­zo szybko.

Dodatkowe atuty

Im wyższa rola pro­gramisty w projekcie/zespole, tym wazniejsze są jego kom­pe­tenc­je miękkie oraz zna­jo­mość metodyk zarządza­nia pro­jek­ta­mi. Z cza­sem abso­lut­nie warto dos­zli­fować swo­ją wiedzę teo­re­ty­czną na tem­at metodyk zwin­nych (np. Scrum) oraz tych na wyższym poziomie abstrakcji (np. Prince2 — w Europie jest to metody­ka pop­u­larniejsza niż np. PMBOK, która jest częś­ciej spo­tykana w USA). Także tutaj pomoc­ne są cer­ty­fikaty potwierdza­jące nasze kom­pe­tenc­je (np. Prince2 Foun­da­tion czy Cer­ti­fied Scrum Mas­ter). Kom­pe­tenc­je miękkie takie jak zarządzanie zespołem, men­tor­ing czy przekazy­wanie wiedzy moż­na i należy rozwi­jać we włas­nym zakre­sie, w sposób który jest dla nas najbardziej efektywny.