Kiedy nareszcie udało Ci się zdobyć pierwszą pracę
Nadchodzi w końcu ten moment, gdy udało Ci się przejść całą ścieżkę do dostania pierwszej pracy jako programista. Od znalezienia firmy, wysłania im wcześniej przygotowanego CV, przejścia procesu rekrutacyjnego i załatwienie wszystkich niezbędnych formalności. Całą tę najtrudniejszą część masz już za sobą. Pozostaje Ci tylko poczekać na pierwszy dzień pracy i możesz zaczynać już budować swoje komercyjne doświadczenie jako programista.
W tym artykule przedstawię Ci, jak wyglądają pierwsze dni pracy jako programista w nowej firmie oraz jak wygląda taki typowy dzień z życia programisty. Dodatkowo pokażę, Ci jak wyglądają typowe zadania oraz co zrobić w sytuacji jak się czegoś nie wie.
Jak będą wyglądać moje pierwsze dni pracy?
Przed swoim pierwszym dniem pracy dostaniesz e-maila/telefon/sms ze szczegółami gdzie i o której powinieneś się wstawić w dniu rozpoczęcia pracy. jeżeli będziesz pracował w biurze, to w przypadku dużych firm będziesz pewnie musiał udać się do recepcji i dostać kartę dostępową. W przypadku mniejszych firm, firmy te nie mają dużych przestrzeni biurowych, raczej jakieś kamienice czy blok i tam raczej ktoś wyjdzie po Ciebie i zaprosi do środka. Natomiast w sytuacji pracy zdalnej powinieneś dostać przed pierwszym dniem dane do e-maila, aplikacji Slack, Teams lub innego narzędzia, na którego dostaniesz zaproszenie na swoje powitalne spotkania online (możliwe też, iż wyślą Ci wcześniej służbowego laptopa).
Niezależnie od tego, czy pracujesz stacjonarnie, czy zdalnie na początku pracy dostaje się osobę, która pomoże Ci się wdrożyć przez pierwsze dni lub choćby tygodnie pracy. Osoba ta pokaże Ci, jak działa firma, zaprosi Cię na cykliczne spotkania, wdroży Cię z technicznej części, pokaże na jakich narzędziach firma pracuje, pomoże Ci postawić lokalne środowisko oraz odpowie na wszystkie nurtujące Cię pytania.
Onboarding
Na wstępie możesz się spotkać z takim pojęciem jak onboarding. Jest to nic innego jak wprowadzenie nowej osoby do zespołu. Każda nowy pracownik powinienem przez to przejść, żeby móc łatwiej wdrożyć się do zespołu, jak i całej firmy. Poniżej prezentuje zarys tego procesu:
- Zapoznanie się z osobą, która będzie Ci pomagać się wdrożyć przez kolejne dni w firmie. Z reguły jest to też osoba, która organizuje dla Ciebie cały onboarding.
- Zapoznanie się z zespołem.
- Przekazania podstawowych informacji jak zacząć pracę. Często już jest pod to zrobiony jakiś plik, który zawiera cała paczkę informacji niezbędnych dla nowego pracownika.
- Zapewnienie wszystkich niezbędnych dostępów np. do aplikacji Slack, JIRA czy repozytorium GIT.
- Szkolenia wewnętrzne. Może się zdarzyć, iż firma wymaga zrobienia jakiś szkoleń wewnętrznych np. z bezpieczeństwa czy kultury pracy w firmie.
- Wprowadzenie techniczne:
- Przedstawienie narzędzi wykorzystywanych w firmie.
- Zrobienie krótkiego wprowadzenie do projektów nad jakimi pracuje zespół.
- Ogarnięcie dostępów do tych projektów.
- Wsparcie przez pierwsze tygodnie pracy. Zawsze masz kogoś kogo możesz się o wszystko zapytać.
Pierwsze zadanie
Jeśli chodzi o pierwsze zadanie, jakie będzie Ci się mierzyć, to tutaj bym się nie stresował zbytnio. Na początku dostaniesz jakieś proste zadanie do zrobienia tak, żebyś mógł się wdrożyć w projekt i nauczyć się cyklu życia takiego zadania (od stanu do zrobienia do gotowego). A choćby jeżeli jednak dadzą Ci trochę trudniejsze zadanie i będziesz miał problemy z jego wykonaniem, to zawsze możesz kogoś z zespołu poprosić o pomoc. W tym przypadku najłatwiej poprosić o pomoc osobę, która wprowadzała Cię do zespołu.
Jak wyglądają typowe zadania programisty?
W tym punkcie zrobiłem zestawienie typowych zadań, które często spotykają programiści. Jednak należy pamiętać, iż dokładne zadania na jakie można trafić, mogą się różnić w zależności od specjalizacji (np. backend, fullstack, frontend), projektu, poziomu doświadczenia oraz wymagań firmy.
Kodowanie
Pracując jako programista, kodowania będzie twoim najczęstszym typem zadań jakie będziesz wykonywał. W kodowaniu zawarte jest tworzenie, modyfikacja i testowania kodu źródłowego.
Analiza
Oprócz samego kodowania, czasem też należy zrobić najpierw analizę i przegląd wymagań projektu. Jest to proces, który później pozwala na tej podstawie przygotować odpowiednie zadania do kodowania. Będąc początkującym programistą raczej powinieneś dostawać już gotowe zadania do implementacji (ale zawsze się może zdarzyć, iż jednak dostaniesz takowe).
Research
Może się tak zdarzyć, iż zespół nie ma konkretnej wiedzy w danym obszarze, natomiast żeby spełnić wymogi projektu konieczne jest zdobycie odpowiedniej wiedzy w danym zakresie. Wtedy może Ci się trafić zadanie, które polega na wyszukiwaniu odpowiednich informacji (np. Google, literatura i dedykowana dokumentacja), a następnie ich spisaniu w formie notatki lub jakieś większej dokumentacji.
Code Review
Jest to nic innego jak weryfikacja kodu innych członków zespołu. Tak jak Ty po zakończonym zadaniu dajesz komuś kod i zadanie do sprawdzenia, tak może się zdarzyć sytuacja odwrotna, gdzie ktoś Ciebie poprosi o sprawdzenie jego kodu.
Rozwiązywanie błędów
Programista oprócz wytwarzania nowego oprogramowania, musi również identyfikować i rozwiązywać błędy w kodzie. Zdarza się, iż wytworzone systemu nie zostanie dobrze przetestowane (wszystkie błędy nie zostaną wykryte), zadanie zostanie źle zaimplementowane od strony biznesowej lub po prostu na etapie analizy nie przewidziało się konkretnego przypadku. Wtedy trzeba zweryfikować jaki jest dokładnie problem i następnie naprawić go we właściwym miejscu w kodzie.
Praca z dokumentacją
Pracując jako programista oprócz kodowania, analizy czy rozwiązywania problemów może Ci się również zdarzyć praca z tekstem. Wytwarzane przez Ciebie i Twój zespół oprogramowanie potrzebuje m.in. dokumentacji technicznej. A kto jak nie twórca kodu będzie wiedział najlepiej jak to działa od strony technicznej. Dlatego też może się zdarzyć, iż oprogramowanie które zakodowałeś, będziesz musiał również opisać jak działa w dokumentacji.
Jak wygląda dzień z życia programisty?
Typowy dzień z życia programisty w każdej firmie/zespole może wyglądać inaczej. W zależności od tego, na jakim jesteśmy stanowisku, jakie mamy doświadczenie, w jakich projektach uczestniczymy oraz jaki jest styl pracy w firmie lub zespole. Jedni wolą pracować w podejściu Agile (jest to podejście do zarządzania projektami, a jedną z popularniejszych metodyk Agile jest Scrum), drudzy w innej metodyce pracy, a natomiast jeszcze inni, mają swoje własne wyrobione standardy pracy. Dlatego poniżej postaram się przedstawić ogólny zarys tego, jak taki typowy dzień programisty może wyglądać.
Ważne jest też, w jakim trybie pracujemy. Jako programista możemy pracować stacjonarnie w biurze lub zdalnie z domu. W zależności jak pracujemy, nasz dzień może różnić. Natomiast ogólny zarys będzie podobny. Oczywiście niektóre różnice są nieuniknione. W przypadku pracy zdalnej niektóre rzeczy będziemy wykonywać online np. spotkania projektowe lub spotkania przy kawce.
Początek dnia
Dzień rozpoczynamy w zależności od przyjętych godzin pracy w zespole. Często w zespołach jest tak, iż nie mamy stałej godziny rozpoczęcia pracy, a bardziej jakiś przedział czasowy, kiedy powinniśmy zacząć pracę np. między 7:00 a 9:00 rano. Jest to jedna z zalet pracy jako programista, bo możemy sobie częściowo dostosować godziny pracy. Niestety ze względu na to, iż pracujemy w zespole, nie możemy mieć pełnej swobody w wyborze godzin pracy. Wydaje się też to zrozumiałe, bo jednak pracujemy jako zespół, a nie indywidualne jednostki.
Po przyjściu do pracy i odpaleniu laptopa, dzień rozpoczynamy od zaplanowania tego, co będziemy dzisiaj robić. Mogą to być rzeczy, które rozpoczęliśmy już i kontynuujemy lub planujemy rozpocząć nowe zadanie poprzez wybranie czegoś samemu do zrobienia, jeżeli oczywiście wiemy co, a jeżeli nie wiemy, co moglibyśmy wziąć, to warto wtedy zagadać do kogoś z zespołu, kto pomoże nam znaleźć jakieś zadanie. Samo planowanie dnia i zadań jest z reguły znane. W zespołach, gdzie są programiści, często pracuje w cyklach 1-4 tygodniowych i przed tym cyklem jest ustalane, co jest do zrobienia oraz przygotowywana jest pod to lista zadań.
Spotkanie zespołu
Po zaplanowaniu dnia dość często od rana jest spotkanie całego zespołu (tzw. daily/stand-up). Na tym spotkaniu każdy członek zespołu krótko omawia, co robił poprzedniego dnia, czy może napotkał jakieś problemy oraz co planuje dzisiaj robić. Tak wiem, zostało to opisane tak, jakby trzeba było codziennie tłumaczyć się z tego, co się robiło, jakby była to jakaś kontrola, ale to tylko tak z opisu wygląda. W rzeczywistości daje się znać zespołowi, jak idą postępy pracy, czy zdąży się dostarczyć daną funkcjonalność oraz, czy może nie potrzeba jakieś pomocy.
Środek dnia
Po spotkaniu zespołu zaczyna się najbardziej intensywny okres dnia. Jest to główna część dnia, gdzie pracuje się nad realizacją zaplanowanego dnia, uczestniczy się w spotkaniach projektowych i biznesowych oraz rozwiązuje się bieżące problemy (np. błędy na środowisku deweloperskim lub produkcyjnym, pomoc innym członkom zespołu czy zrobienie jakiegoś pilniejszego zadania).
Przerwa
W ciągu dnia możemy robić sobie krótkie przerwy, ale też mamy często jedną dłuższą przerwę obiadową. Nie ma konkretnej godziny, kiedy powinna taka przerwa być. Taką godzinę sami ustalamy lub dogadujemy z osobami z zespołu, żeby wspólnie zrobić przerwę i razem iść na obiad (z reguły jest to kilka osób, a nie cały zespół). Jedynie na co warto zwrócić uwagę, to jak robimy sobie taką przerwę, to warto tylko spojrzeć czy w tym czasie nie mamy żadnego zaplanowanego spotkania :).
Warto pamiętać, iż przerwa to jest dobry czas, żeby trochę odpocząć od ekranu, rozluźnić mięśnie i zresetować głowę.
Koniec dnia
Koniec dnia to jest dalsze wykonywanie tego co robiliśmy w środku dnia. Na zakończenie pracy warto zatrzymać się w takim miejscu, żeby rano było nam do tego łatwo wrócić. jeżeli potrzebujemy 5 – 10 minut, żeby dokończyć wątek to warto to zrobić jeszcze dzisiaj. Wtedy już jutro nie trzeba wracać do tego tematu i można mieć świeżą głowę na kolejne zadania.
Nie znam danej technologii wykorzystywanej w projekcie. Co wtedy?
W pracy może zdarzyć się wszystko. Zawsze istnieje szansa, iż możesz dostać zadanie do zrobienia, gdzie nie będziesz znał danej technologii, aby móc je dobrze wykonać albo zostaniesz przydzielony do projektu, gdzie nie będziesz znał wszystkich technologii i narzędzi wykorzystywanych w projekcie. Od razu pewnie przychodzi Ci na myśl pytanie co wtedy? Co powinienem zrobić? Może po godzinach zostawać i się douczać? Otóż nie. Zespół z reguły wie (a przynajmniej powinien) wiedzieć jakie technologie i narzędzia znasz oraz w jakim stopniu zaawansowania. Przydzielając Cię do konkretnego zadania lub projektu raczej zdają sobie sprawę z Twoich kompetencji i (prawdopodobnie) wiedzą co robią, ale wiadomo wszyscy są tylko ludźmi i może zdarzyć się tak, iż jednak zapomną lub źle Cię przydzielą.
Dobrą praktyką jest, iż jak widzisz przydzielone dla siebie zadanie i na podstawie zaznajomienia się ze szczegółami wiesz, iż możesz mieć problemy z jego wykonaniem, ze względu na wiedzę potrzebną na jego realizacje, to warto to zgłosić. Nikt na Ciebie z tego powodu źle nie spojrzy. tym bardziej na poziomie początkującego programisty, a choćby i na poziomie seniora, nie można przecież znać się na wszystkim. jeżeli zdarzy się, iż ostatecznie będziesz musiał wykonać takie zadanie to z reguły wtedy dostaniesz więcej czasu w jego realizacje albo dostaniesz kogoś kto Ci pomoże lub chociaż Cię nakieruje jak najlepiej będzie do tego podejść. Osobiście uważam, iż warto brać takie zadania. Zawsze można się wtedy czegoś nowego nauczyć Ale wiadomo, zawsze trzeba podejść zdroworozsądkowo. Nie warto na siłę próbować zrobić czegoś co może okazać się dla Ciebie zbyt skomplikowane albo będziesz musiał przez to siedzieć po godzinach i rozmyślać jak to zrobić.
Czy mogę korzystać z Google jeżeli czegoś nie wiem?
Oczywiście, iż można korzystać z Google w pracy. Jest to nieodłączna część bycia programistą. Nieważne czy dopiero zaczynasz, jesteś juniorem, midem czy choćby seniorem, jedną z głównych umiejętności programisty jest szybkie i jakościowe pozyskiwanie informacji. Świat IT jest na tyle ogromny, iż nie sposób zapamiętać wszystko, dlatego pracując jako programista często wykorzystuje się wiedze z Internetu. Z biegiem czasu, gromadząc wiedzę i doświadczenie, stajesz się bardziej kompetentny oraz miałeś do czynienia z większą ilością problemów co przekładać się będzie na rzadsze sięganie po Google, ponieważ istnieje większa szansa, iż już kiedyś udało Ci się rozwiązać dany problem.
Należy też pamiętać, iż Google to narzędzie, które ma na celu ułatwić pracę i to nie jest żaden wstyd, żeby z niego korzystać. choćby jeżeli miałby nam posłużyć tylko do wyszukania banalnych rzeczy.
Podsumowanie
W tych paru punktach opisałem Ci najczęstsze zagwozdki jakie przychodzą osobą, które zaczynają swoją pierwszą pracę jako programista. Dodatkowo opisałem Ci typowy dzień z życia programisty. Mam nadzieje, iż choć trochę udało mi rozwiać też Twoje wątpliwości.
Zaczynają nowe rzeczy w życiu bardzo często towarzyszy nam niepewność i nachodzą nas różne myśli. Nie ważne co by się działo, to najważniejsze, aby pamiętać, żeby nastawić się pozytywnie i wszystko będzie dobrze :). Teraz już tylko z górki!