Programista junior, senior, a może mid?
Grzegorz Papaj , 16 grudnia 2019
W środowisku programistów aktualnie panuje trend, by poziom zaawansowania developerów określać jako "programista junior", "programista senior", a czasem jeszcze stopień pośredni, czyli "mid" bądź "mid level", czasem opisywany również jako "regular". Wszyscy zdają się posługiwać się tymi stopniami wtajemniczenia. Ale co one właściwie oznaczają?
Podchodząc do tematu z pewną dozą złośliwości można by powiedzieć, że stopnie te różnią się jedynie oferowaną stawką, a w najlepszym wypadku stażem pracy. I czasem faktycznie, patrząc szczególnie na rynek headhunterów/pośredników pracy, można odnieść wrażenie że dokładnie tak jest.
Na szczęście nie jest to regułą, a tego rodzaju stopniowanie umiejętności może być użyteczne, szczególnie w komunikacji z klientami. Poniżej pokrótce opisujemy definicje stopni wtajemniczenia, które uznajemy za rozsądne, z którymi zgadza się większość naszych kontrahentów i które stosujemy sami.
Co warto zaznaczyć, stopnie te nie bazują na stażu pracy, ale na pewnych konkretnych zestawach kompetencji, nabywanych w drodze rozwoju programisty.
Programista junior/junior developer
- pracuje pod nadzorem,
- nie wyznacza sobie samodzielnie zadań,
- wykonuje prostsze, bardziej rutynowe zadania,
- zwykle nie komunikuje się samodzielnie z klientem/odbiorcą tworzonego oprogramowania,
- nie podejmuje decyzji projektowych.
Programista junior/junior developer/mid-level developer/regular developer
- pracuje samodzielnie przy minimalnym nadzorze,
- sam definiuje swoje zadania w ramach postawionego celu,
- potrafi samodzielnie rozwiązywać problemy techniczne,
- komunikuje się samodzielnie z klientem/odbiorcą oprogramowania w zakresie szczegółów technicznych realizacji,
- potrafi zarządzać niewielkim zespołem,
- podejmuje decyzje projektowe,
- jest w stanie samodzielnie zrealizować średniej wielkości projekt.
Programista senior/senior developer/kierownik projektów
- potrafi pracować samodzielnie nad złożonymi zadaniami,
- potrafi nadzorować i prowadzić duży zespół programistów,
- wspiera zespół swoją ekspertyzą,
- edukuje członków swojego zespołu,
- komunikuje się z klientem/odbiorcą oprogramowania na poziomie celów technicznych i biznesowych,
- podejmuje strategiczne decyzje projektowe,
- jest w stanie realizować duże projekty,
- (więcej o programistach seniorach można znaleźć w artykule Jaki jest pożytek z doświadczonego Senior Developera?).
Oczywiście powyższe opisy nie wprowadzają sztywnego podziału. Niemniej jednak stanowią dość dobre przybliżenie tego, czego można oczekiwać od programistów na określonym poziomie.