Skoro czytasz ten wpis to najprawdopodobniej znaczy, że chcesz zacząć przygodę z branżą IT i wybrałeś na początek karierę programisty (tutaj poczytasz też o innych rolach w branży IT). Świetnie! Zacznijmy więc od przedstawienia roli programisty w świecie IT :)
Przede wszystkim jak wygląda praca – najczęściej pracuje się przy jednym projekcie, ewentualnie poświęcając część czasu na wsparcie poprzednich projektów czy poprawki i uzupełnienia do nich. Pracuje się w kilkuosobowych zespołach, najczęściej nie ma problemu żeby otrzymać dodatkowy monitor czy inny sprzęt który poprawi nasz komfort pracy. Dodatkowo ponieważ braki kadrowe w zakresie programistów już teraz są szacowane na 20%, w 2020 roku prognozowany deficyt to 50%, programiści to chyba najbardziej dopieszczani pracownicy jako grupa zawodowa :) Najczęściej nie obowiązuje dress code, częstą praktyką jest fundowanie przez firmę przekąsek czy owoców/warzyw w jakiś dzień tygodnia, można liczyć na sporo spotkań integracyjnych przy grach planszowych czy też bardziej tradycyjnych.
W tym miejscu koniecznie należy też wspomnieć o społeczności programistów, nie spotkałem się nigdy z grupą zawodową tak otwartą na wymianę wiedzy i pomoc innym jak programiści. Jeśli pojawia się jakiś problem, można zapytać dowolnego współpracownika i na pewno chętnie podzieli się z nami swoim pomysłem na rozwiązanie lub pomoże nam je znaleźć. Strony takie jak stackoverflow.com pozwalają nam zapytać jednocześnie miliony programistów z całego świata. Często w firmach programiści sami organizują spotkania podczas których na zmianę prezentują ciekwe tematy i nowinki poszerzając swoją wiedzę. Do tego setki wartościowych projektów open-source, z których kodu można się uczyć lub samemu uczestniczyć w ich rozwoju.
Obowiązki programisty
Skoro omówiliśmy już część benefitów czas na obowiązki ;) Tutaj sporo zależy od doświadczenia jakim dysponujemy ale są oczywiście pewne wspólne elementy. Programista z założenia pisze kod, robi to na podstawie dokumentacji projektu (która najczęściej ma formę kilku/kilkunastu plików Word lub PDF z odniesieniami do siebie na wzajem, diagramami) i w razie wątpliwości konsultuje się z Architektem lub Team Leaderem lub Project Managerem (zależy od organizacji projektu i konkretnej firmy). Co dokładnie pisze, zależy od jego wiedzy i roli w projekcie.
Senior developer / tech leader / starszy programista
Starszy programista zajmuje się najcześciej głównie nadzorowaniem prac, wyborem technologii, bibliotek oraz rozwiązań. Pisząc kod skupia się raczej nad wysokopoziomowymi rozwiązaniami i trudniejszymi zadaniami wymagającymi głębszej wiedzy z danego obszaru. W zależności od organizacji projektu/firmy, może być odpowiedzialny za podział prac w zespole i tworzenie zadań. Oczywiście zajmuje się także standardowymi zadaniami. Starszy programista jest także odpowiedzialny za rozwiązywanie problemów, z kórymi nie radzą sobie członkowie zespołu z mniejszym stażem oraz wspieraniem ich w realizacji ich zadań i rozwoju. Osoba na tym stanowisku powinna dysponować dużym doświadczeniem i obyciem z używanymi technologiami, oczekuje się że będzie dysponował specjalistyczną wiedzą (lub będzie w stanie ją pozyskać) w większości obszarów.
Developer / programista
Programista zajmuje się głównie realizowaniem zadań przydzielonych mu przez przełożonego / pobranych z kolejki zadań. W razie problemów konsultuje się ze starszym programistą. Od programisty oczekuje się wiedzy specjalistycznej z pewnych obszarów, oraz braków w innych obszarach, które jednak powinny być sukcesywnie uzupełniane.
Junior developer / młodszy programista
Młodszy programista wspiera resztę zespołu w realizacji zadań, często realizuje zadania które są powtarzalne lub polegają na wzorowaniu się na innych fragmentach/modułach aplikacji. Od młodszego programisty nie oczekuje się posiadania wiedzy specjalistycznej, ale powinien on znać podstawy języka, być w stanie wzorując się na innym kodzie tworzyć własne rozwiązania oraz uzupełniać luki we własnej wiedzy. Stanowisko to jest tymczasowe i powinno być traktowane jako etap nauki / płatne praktyki służące jak najszybszemu pozyskaniu niezbędnej wiedzy i kompetencji.