Absolwenci studiów dzielą się na dwie grupy – tych, którzy już pracują i tych, którzy jeszcze nie mieli okazji poznać smaku prawdziwej pracy :) Tekst chciałbym zaadresować głównie do tych, którzy jeszcze nie pracują, ale myślę, że wszyscy mogą coś zyskać przeczytawszy go uważnie. A więc…
To pytanie pewnie zadaje sobie tylko część z absolwentów studiów informatycznych. Część – jak wspomniałem - już gdzieś pracuje i myśli, że znalazło miejsce na dopracowanie do emerytury :) Pozostali właśnie rozglądają się za pierwszą pracą. Bez względu na to, do której grupy należysz, jesteście w podobnej sytuacji.
Nie jestem pewien, jaki jest średni czas życia firm technologicznych, ale większości z nich raczej nie będzie na rynku, gdy będziesz przechodzić na emeryturę.
Że będziesz od czasu do czasu zmieniał pracę.
Co więcej - o ile wiem - średni czas pracy programisty w jednej firmie wynosi około dwóch lat. Kończąc studia masz jakieś 25 lat, do emerytury pozostaje jakieś 40. Czyli średnio 20 razy zmienisz pracę. Całkiem sporo. Musisz więc cały czas być „na bieżąco”, wiedzieć co się dzieje na rynku i ciągle się uczyć. Jeśli opuszczając mury uczelni cieszyłeś się, że to już koniec nauki, mam dla Ciebie złą wiadomość – to dopiero początek.
Gdy zaczynałem swoją pierwszą pracę jako programista, rynek był podzielony pomiędzy C/C++, Perla i Visual Basic :) Java właściwie już była na rynku, ale wciąż spoglądano na nią podejrzliwe, jako wolną i niezbyt stabilną alternatywę C/C++ na desktopach i powolną alternatywę dla Perla na serwerach – dziś wybór jest zdecydowanie szerszy, nie wspominam nawet o tym, że oczekiwania w stosunku do programów, są także nieco inne.
To, co wiesz, daje Ci podstawy do dalszej nauki. Pewnie dowiedziałeś się wszystkiego o teorii relacyjnych baz danych. Pewnie nawet udało Ci się odpytać jakąś przykładową bazę danych, stosując proste zapytania, zapytania z podzapytaniami, może także ze skorelowanymi podzapytaniami. Możliwe, że robiłeś także inner joiny, left joiny, group by’je…
Możliwe, że zastanawiasz się właśnie o czym ja piszę! Miałeś na pewno wykłady z algorytmów (sortowanie, wyszukiwanie, przeszukiwanie grafów itd.), architekturę systemów operacyjnych (a może po prostu instalowałeś mini-dystrybucję linuxa i jakiś Windows Server?). Matematyka, fizyka, jakiś język programowania, a może nawet dwa?
To wszystkie jest istotne. Ale w pracy oczekiwania są nieco większe :)
Zakładam, że na studiach chociaż odrobinę zainteresował Cię jakiś język programowania. Całkiem duże szanse, że jest to Java lub C# (coraz rzadziej C lub C++). Zakładam także, że właśnie zdecydowałeś, że zwiążesz swoją najbliższą przyszłość z jednym z nich. Staje się on Twoim językiem pierwszego wyboru.
Rozejrzyj się w sieci, sprawdź, z jakich narzędzi korzystają zawodowcy używający tego języka (narzędzia do budowania oraz dbania o jakość kodu, zarządzania zależnościami, edytory; sprawdź, gdzie szukać dodatkowych bibliotek itd.).
/bin
(dla Javy to $JAVA_HOME/bin
)/ - naucz się ich używać korzystając z systemowego wiersza poleceń; poszukaj narzędzi dodatkowych (tzw. build tools – Maven, Ant (no dobra, Ant to historia, możesz go sobie darować), Gradle, żeby wymienić tylko trzy najpopularniejsze, inne języki – np. Elixir – mogą dostarczać standardowe narzędzia tego typu);
Jak widzisz, przed Tobą dużo pracy. Ale jeśli prawidłowo tę pracę zaplanujesz, to jest to do zrobienia. Przede wszystkim porządnie naucz się wybranego przez siebie języka, przejrzyj wszystkie jego możliwości składniowe - te używane codziennie przez wszystkich i te używane rzadziej, zapoznaj się z idiomami języka, dobrymi praktykami wypracowanymi przez innych programistów. Zapoznaj się z biblioteką standardową. Sprawdź literaturę opisującą język od strony praktycznej.
Jeśli robiłeś jakieś projekty w trakcie studiów, to zapewne masz jakiś kod do pokazania. Załóż konto na GitHubie/GitLabie/Bitbuckecie, czy innym miejscu, które pozwoli podzielić się kodem. Umieść tam kod. Możesz oczywiście nieco poprawić to, co napisałeś na drugim, czy trzecim roku. Zainteresowani przejrzą zmiany i będą mogli zobaczyć, że czegoś się od tego czasu nauczyłeś.
Być może masz zacięcie do kodowania, a nie miałeś okazji uczestniczyć w komercyjnych projektach. Sprawdź repozytoria związane z wybranym przez Ciebie językiem/platformą. Często programiści pracujący nad kodem zostawiają mniej skomplikowane zadania dla programistów takich jak Ty. Możesz dzięki temu poznać jednocześnie smak przygody zwanej open source, ale także prawdziwej pracy nad prawdziwym kodem z ludźmi, którzy w dużej części mają już spore doświadczenie. Każda linia Twojego kodu powie o Tobie więcej, niż test na rozmowie kwalifikacyjnej.
Chwilę po studiach najczęściej nie masz wiele do napisania. Pisz więc prawdę. Pochwal się indeksem (jeśli jest czym). Wspomniane prace semestralne lub roczne także mogą rzucić światło na Twoje nastawienie.
Na tym etapie kariery warto rozważyć także napisanie listu motywacyjnego. Po kilku latach będzie to już niepotrzebny wysiłek. Twoje dokonanie będą mówić więcej niż mógłbyś w takim liście napisać.
Zgłoś się do jakiejś firmy pośredniczącej, która zatrudni Cię w jakiejś formie (UoP, B2B) i będzie wynajmować właściwym pracodawcom. Takie firmy zwykle postarają się o szkolenia dla Ciebie, a także o coś w rodzaju płatnego stażu. Najlepsze z nich dopasują Cię do zespołu o różnym stopniu kompetencji oraz upewnią się, że będziesz miał dobrą opiekę bardziej doświadczonych kolegów i nie spadnie na Ciebie praca ponad Twoje możliwości.
Jeśli jesteś dobrze przygotowany, Twoja kariera będzie się rozwijać w sposób zrównoważony. Z każdym rokiem będziesz zdobywał nowe doświadczenia stając się coraz lepszym rzemieślnikiem, nie bojącym się podejmować świadomie coraz większych wyzwań zawodowych, poznasz nowe języki, frameworki. W końcu Twój zbiór doświadczeń zawodowych wsparty wiedzą, pozwoli Ci zostać nauczycielem i mentorem dla młodszych kolegów, właśnie takich, jak Ty dziś.
Zapoznaj się z kulturą firmy, do której trafiłeś, przyjrzyj się metodom pracy oraz ogólnie przyjętym standardom. Na początku więcej słuchaj i pytaj.
Stare powiedzenie mówi, że mamy dwoje uszu i jedne usta, by dwa razy więcej słuchać niż mówić – nie zawsze mi się to niestety udawało :))
Jeśli jednak dostrzeżesz miejsca, które potrafisz nieco ulepszyć (proces budowania, testowania, dokumentowania kodu), zasugeruj na spotkaniu zespołu, zgłoś się do tej pracy, jeśli jesteś pewien, że przy jakimś wysiłku i ewentualnie pomocy, którą mógłbyś otrzymać, poradzisz sobie z nią. Poza tym:
Jest ich oczywiście znacznie więcej. Czytanie na długie tygodnie :)
Twoja kariera należy do Ciebie. Jest jak ogród - im wcześniej zaczniesz o nią dbać, tym lepiej się rozwinie. I – tak jak w ogrodzie – ważna rada: codzienna pielęgnacja jest zdecydowanie łatwiejsza, niż nerwowe nadrabianie zaległości chwilę przed rozmową kwalifikacyjną.
W tym miejscu chciałbym podziękować wszystkim, z którymi prowadziłem rozmowy rekrutacyjne/weryfikacyjne. To właśnie te rozmowy dały mi inspirację i paliwo do napisania tych przemyśleń. Dzięki chłopaki i dziewczyny za długie rozmowy i miło spędzone popołudnia i wieczory na rozmowach o programowaniu, językach, narzędziach, technikach programowania i technologii ogólnie. Podziękowania także kieruję do Dominika i Mai, dzięki którym mogłem w ostatnim czasie odbyć ponad setkę takich rozmów. Każdy była w jakiś sposób pouczająca i inspirująca.