Role, stanowiska i szczeble kariery w programowaniu

Role, stanowiska i szczeble kariery w programowaniu

Programista programiście nie równy – my to wiemy, ale czy ty, drogi Czytelniku znasz najpopularniejsze szczeble kariery w zawodzie programisty? Dzisiaj przedstawimy ci role, z jakimi możesz się spotkać w świecie programowania.

Stanowiska? Szczeble? O co wam chodzi?!

W pierwszym wpisie na naszym blogu pokazaliśmy ci, jak wiele stanowisk powiązanych jest z wytwarzaniem oprogramowania. Jeśli nie wiesz o czym mowa, koniecznie zapoznaj się z tym postem: Jak nie znając się na programowaniu można pracować w IT?. Analitycy, graficy, managerowie – oni wszyscy mają wpływ na to, jak ostatecznie będzie wyglądał tworzony produkt.

Łatwo się jednak domyślić, że to nie graficy czy coachowie są odpowiedzialni za pisanie i utrzymywanie kodu. Za tę czynność odpowiadają ludzie na stanowisku, które jest sensem istnienia bloga Poznaj Programowanie. Mowa oczywiście o programistach. A konkretnie – o programistach i stanowiskach pokrewnych w typowym projekcie programistycznym.

Czy jeden programista równy drugiemu programiście? Oczywiście, że nie! Podobnie jak w wielu innych branżach, tak i tutaj na przestrzeni lat wyodrębniły się konkretne stanowiska i szczeble kariery, przez które będzie przechodził pasjonat tego wspaniałego zawodu jakim jest zawód programisty. Zapraszam cię więc do zapoznania się z krótkim przeglądem postaci w grze zwanej programowaniem.

Stażysta / Praktykant

Prawdopodobnie od tego stanowiska zaczniesz swoją przygodę z programowaniem. Jeśli jesteś jeszcze na studiach, albo idziesz do swojej pierwszej pracy, zapewne najpierw jej przedstawiciele będą chcieli sprawdzić jak wpasowujesz się w ich środowisko. Będziesz więc praktykantem który poznaje typowy dzień pracy w danej firmie, poznasz nowych ludzi i być może dostaniesz swoje pierwsze zadanie, jeszcze nie związane z żadnym konkretnym projektem. Na tym etapie obie strony sprawdzają czy pasuje im ten nowy układ – firma obserwuje ciebie, a ty obserwujesz firmę.

Junior Developer / Młodszy programista

Jeśli po stażu przedstawiciele danej firmy dojdą do wniosku, że nadajesz się na pełnoprawnego pracownika, to zaproponują ci stanowisko młodszego programisty i udział w twoim pierwszym projekcie. Wejdziesz więc w interakcję z pozostałymi członkami projektu – ludźmi bardziej doświadczonymi od ciebie – od których zaczniesz chłonąć każdy skrawek wiedzy. Twoja odpowiedzialność za końcowy wygląd projektu będzie prawdopodobnie niewielka, jednak jeśli będziesz ambitny i będziesz pokazywał, że się starasz i uczysz, to szybko przeskoczysz na kolejny poziom.

Developer / Programista

W zależności od firmy takie stanowisko może być wymienione w strukturze firmy, albo może go nie być. Od programisty na tym etapie wymaga się już solidnej technicznej wiedzy i dobrego zrozumienia tego czym się zajmuje, jednak wciąż jest to etap nieustannego chłonięcia wszystkiego co nowe i szlifowania nabytych już umiejętności. Na tym poziomie programista delegowany jest do pomocy mniej doświadczonym od siebie, ponieważ posiada już konkretne portfolio projektów w których uczestniczył a dzięki temu posiada też dużą wiedzę na dany temat.

Senior Developer / Starszy programista

Starszy programista bywa często określany mianem ninja. Senior developerzy mają za sobą mnóstwo projektów, mają duże doświadczenie i rozwiązali już niejeden problem którego rozwiązania nie znajdziesz na forach internetowych. Są często ostatnią deską ratunku podczas walki młodszych kolegów na polu bitwy z projektem. W zależności od charakteru mogą się oni decydować na przeznaczanie coraz większej ilości czasu na kontakt z klientem końcowym, jednak to nie oni kierują danym projektem.

Team Leader

Team leader ma już pod sobą konkretny zespół ludzi. Wykazuje się dużą wiedzą techniczną, a także umiejętnościami związanymi z zarządzaniem zespołem oraz motywowaniem go. W zależności od projektu czas team leaderów jest dzielony na obowiązki związane z programowaniem oraz na zarządzanie zespołem i planowanie jego zadań. Wielu team leaderów decyduje się na tym etapie w zupełności porzucić obowiązki programisty, ponieważ muszą być w pełni skupieni na szeroko rozumianym managemencie.

Project Manager

PM, jak można się domyślić, to kapitan okrętu pt. “Projekt programistyczny”. Stanowisko to jest bardzo mocno powiązane z tzw. biznesem – czyli klientami i sprawami związanymi z budżetem. W klasycznej strukturze PM ma pod sobą liderów konkretnych zespołów, wraz z którymi planuje kolejne kroki na drodze do sukcesu danego projektu. Jest też w nieustannym kontakcie z klientem – ustala budżet oraz decyduje, czy proponowane deadline’y są tym, na co jego zespół będzie gotowy.

Klient

Po sukcesach na stanowisku project managera stajesz się klientem twojego zespołu… Emm… nie… oczywiście, że nie 😉

Zdecydowałem się jednak na wymienienie tej postaci, ponieważ jest ona nieodłączną częścią każdego projektu. Klient to zarówno konkretny prezes czy szef firmy, jak i szeroko rozumiani przedstawiciele, np. korporacji. W skrócie – jest to osoba, która reprezentuję odbiorcę danego produktu czy usługi. Klienci są często w stałym kontakcie z team leaderami oraz osobami na niższych stanowiskach, ponieważ korzystnie wpływa to na przepływ wiedzy o tworzonym produkcie oraz na morale całego zespołu. Klient nie może jednak “wchodzić z butami” do zespołu – to takie osoby jak team leaderzy oraz PM muszą być buforem jego zgłoszeń oraz uwag co do kolejnych zadań.

 

Na tym etapie znasz już podstawową strukturę pracy w typowym projekcie programistycznym. W ogromnej większości firm tak właśnie wygląda rzeczywistość – startujesz jako stażysta, przechodzi na kolejne etapy i (czego ci życzę) świętujesz kolejne dowiezione projekty.

Warto pamiętać, że kolejne stanowiska nie mają nic wspólnego z tym, czy na danym etapie musisz się jeszcze rozwijać, czy wystarczy ci to co wiesz. Programowanie to zawód z gatunku tych, gdzie nieustanny rozwój i pogłębianie swojej wiedzy to absolutna podstawa do działania. Tyczy się to zarówno młodszych programistów, jak i wszystkich innych.

Co do samej struktury – oczywiście są firmy, w których to wszystko wygląda nieco inaczej – np. stanowisko programisty może być połączone ze starszym programistą, a cała organizacja pracy może być bardziej płaska. Inaczej jest też np. w startupach, gdzie cały zespół tworzący nowy, rewolucyjny produkt, stosuje równie rewolucyjny rozkład prac dostosowany do ich konkretnych potrzeb. To jednak temat na całkiem inny wpis.

Jeśli jednak zapamiętasz ten opisany przeze mnie podział stanowisk i ról w projekcie, to idąc do pierwszej pracy na pewno nikt nie zaskoczy cię pytaniem, czy “ten nowy to junior czy senior?”.