senior-seniorowi-nierowny

Wielu początkujących programistów, wkrótce po tym, gdy dostaną pierwszą pracę zastanawia się kiedy awansują. Na to pytanie z reguły nie ma jednoznacznej odpowiedzi. W różnych firmach różnie wygląda ścieżka kariery developera oraz zestaw umiejętności wymaganych od juniora, mida i seniora. Widać to najlepiej w ofertach pracy.

Gdy jakiś czas temu zapytałam moją sieć kontaktów na Linkedin, o to „kiedy junior developer staje się midem a mid przchodzi na ścieżkę seniora?” – wywołałam burzliwą, ale i ciekawą dyskusję. Analiza wypowiedzi skłoniła mnie do spisania podsumowania w ramach niniejszego artykułu.

Pierwszy wniosek jest taki, że nie istnieje coś takiego jak sztywne kryteria określające, jakie umiejętności powinien posiadać programista na danym etapie ścieżki zawodowej. Wynika to z różnorodności realizowanych projektów i odmiennych wymagań stawianych przez firmy wobec developerów. To, co jednak pewne, to fakt, że obecnie przejście przez wszystkie stopnie programistycznej kariery zajmuje zdecydowanie mniej czasu niż jeszcze 10 lat temu.

Z czego to wynika?

Głównie z niemal nieograniczonej dostępności materiałów do nauki kodowania i ogólnej zmiany specyfiki programowania jako takiego. 10 lat temu wykorzystywane były tzw. języki niskiego poziomu, których gruntowne poznanie pochłaniało zdecydowanie więcej czasu, niż nauczenie się któregoś z obecnie popularnych języków wysokopoziomowych (np.  Python czy Ruby).

Skillset idealny, czyli co junior developer wiedzieć powinien?

Wśród programistów spotkamy się najczęściej z podejściem, że junior developer to osoba pracująca pod okiem starszego kolegi. O ile takie podejście wydaje się mieć sens, o tyle, gdy przyjrzymy się ofertom pracy zauważymy, że na tym początkowym etapie pracodawcy nierzadko wymagają już umiejętności kodowania na poziomie, który pozwoli na samodzielną pracę. Standardem w opisie stanowisk oczywiście nadal jest podstawowa znajomość danej technologii – taka jednak jak wiadomo, nie wystarczy, by móc samodzielnie pracować.

Wniosek mamy zatem taki, że w jednym przypadku Junior to ten, który dopiero zaczyna swoją przygodę z komercyjnym programowaniem, w drugim to już osoba z praktyką zawodową (wciąż jednak na poziomie juniora). W IT-Leaders nie lubimy takich niejasności;) Dlatego jakiś czas temu, po wielu konsultacjach z firmami, zaproponowaliśmy na runku nową systematykę ofert w ramach dotychczasowego poziomu Junior:

  • ENTRY level – firma jest (w danej rekrutacji) otwarta na kandydatów bez komercyjnego doświadczenia;
  • JUNIOR: oferta dla kandydatów z pierwszym komercyjnym doświadczeniem;

Z tego co widzimy coraz więcej firm i tradycyjnych jobboardów zaczyna przestawiać się na nową systematykę, jednak jakiś czas pewnie jeszcze potrwa zanim rynek w pełni przestawi się na nowy system.

Poniżej zaproponowaliśmy – w mojej ocenie -uniwersalny zestaw umiejętności dla zupełnie poczatkującego junior developera, który chce wejść / rozpoczyna swoją przygodę zawodową:

  • Podstawowa znajomość języka i frameworka wykorzystywanych w firmie, w którym będziemy programować;
  • Umiejętność samodzielnego wyszukiwania rozwiązań. Zwłaszcza w sytuacjach,  kiedy konsola wyrzuca od 3 godzin błąd..;
  • Znajomość podstawowych kategorii błędów bezpieczeństwa (np OWASP Top 10 dla aplikacji webowych) i sposobów zapobiegania im używając odpowiednich funkcjonalności frameworków;
  • Nastawienie na intensywny rozwój – programowanie wymaga cały czas 'bycia na bieżąco’ ;
  • Rozwinięte kompetencje miękkie – w dzisiejszych realiach komunikatywność czy zdolność argumentowania, jest wysoce pożądana i istotna w projektach realizowanych we współpracy z kolegami z innych działów;
  • Język angielski – czyli must-have każdego kodera;

Bez względu na język w jakim programujemy oraz środowisko, w którym przyjdzie nam pracować – czy będzie to software house, czy też duża korporacja – można się spodziewać, że wymienione powyżej cechy będą kluczowe dla pracodawcy.

Kiedy junior staje się midem?

Jedna z osób komentująca moje pytanie, podsumowała krótko : „w momencie, gdy nie trzeba go „pilnować”.:) No i jest to bardzo logiczne podejście – w końcu, dopiero gdy opanujemy dany poziom stając się samodzielni, możemy przejść dalej. Tylko kiedy to nastąpi? W wielu firmach spotykamy się z podejściem, że poziom mida zaczyna się po 2-3 latach komercyjnego kodowania. Tu jednak również nie ma reguły – każdy pewnie zna choć jednego developera, który może się pochwalić, że awans na stanowisko seniora zajął mu raptem rok, dwa. Szybko – choć z drugiej strony wiadomo, że staż pracy nie zawsze idzie w parze ze skillami, różne osoby z różną intensywnością mogą pracować nad kodem i po roku ich umiejętności będą na zupełnie różnym poziomie.

Skupiając się na cechach, którymi odznacza się ’regularny’ mid, można przyjąć:

  • Samodzielność w rozwiązywaniu problemów;
  • Zdolność oceny wydajności tworzonego kodu i jego modyfikacja w celu poprawy działania;
  • Pisanie przejrzystego kodu , który jest łatwo edytowalny dla innych;
  • Zdolność odnajdowania i naprawy złożonych bugów;
  • Zdolność do oceny bezpieczeństwa własnego kodu (w oparciu o obowiązujące standardy, np OWASP ASVS dla aplikacji webowych), wybór najlepszych z punktu widzenia bezpieczeństwa i wydajności komponentów i bibliotek;
  • Umiejętność konfiguracji bezpiecznego środowiska programistycznego (np zmiana domyślnych konfiguracji);
  • Zazwyczaj min. 3 letnie doświadczenie programistyczne – osoba na tym etapie ma już w swoim portfolio zrealizowane większe projekty komercyjne (indywidualne lub grupowe) ;
  • Wiedza, która pozwala na bycie wsparciem dla młodszych kolegów;
  • Umiejętność pełnej i samodzielnej konfiguracji środowiska programistycznego;

Czytaj też: List intencyjny – czy ma znaczenie prawne?

Na koniec spotkać się można też z poglądem, że developer na poziomie mida wykona te same zadania co senior, tylko trochę wolniej i być może jego kod będzie nieco mniej wydajny.

Senior – ten, który sprawdza kod młodszych kolegów

Senior developer to szczebel w karierze, do którego dąży niemal każdy programista. Zdefiniowanie uniwersalnego zestawu kryteriów i funkcji seniora przysparza jednak najwięcej kłopotów. Patrząc chociażby na rekrutacje prowadzone na naszej platformie , widać, że są takie, które wymagają od seniora 4-5 lat programistycznego doświadczenia, jak i te, w których pracodawca szuka kandydata z 8-letnim stażem.

Mimo trudności w jednoznacznym zdefiniowaniu kim jest senior developer, poniżej zawarłam zespół cech, które moim zdaniem powinny określać osobę wpisującą się w profil seniorski:

  • Dobre zrozumienie biznesu i zagadnień bieznesowych, nad którymi pracujemy;
  • Zaawansowana znajomość technologii wykorzystywanych w procesie rozwoju oprogramowania;
  • Umiejętność projektowania rozwiązań i modyfikowania już istniejących;
  • Zdolność naprawy skomplikowanych błędów w kodzie oprogramowania;
  • Ocena bezpieczeństwa kompletnych rozwiązań, modyfikacja istniejących celem podniesienia ich bezpieczeństwa, wskazywanie błędów bezpieczeństwa w cudzym kodzie jak i proponowanie najlepszych sposobów ich usunięcia, przygotowywanie wewnętrznych standardów tworzenia bezpiecznego oprogramowania;
  • Sprawna komunikacja, zdolność argumentowania i umiejętność przekazywania wiedzy młodszym stażem kolegom;

Poza wymienionymi oczywiście zawsze 'mile widziane’ u seniora będą zdolności managerskie czy zapewnienie płynnej organizacji i podziału pracy przy projekcie. Te umiejętności umożliwią mu sprawną współpracę w zespole. Z kolei komunikatywność (która przyda się oczywiście na każdym etapie kariery) u seniora zyskuje szczególne znaczenie, co wynika z faktu, iż często uczestniczy on w projektach interdyscyplinarnych, niejednokrotnie komunikuje się bezpośrednio z klientem i bierze udział w prezentacjach oprogramowania. Bez zdolności sprawnego komunikowania i słuchania rozmówcy, projekt nie będzie miał szans powodzenia.

Czy zatem osoba z 2-3 letnim stażem może spełniać kryteria wymagane na stanowisku starszego programisty? Teoretycznie tak.

Senior developer tylko teoretycznie…

Przypadki błyskotliwej kariery deweloperów z 3-letnim stażem, którzy zarządzają zespołami programistów, dzisiaj już nie są mitem. W dobie olbrzymiej dostępności materiałów do nauki kodowania jest to możliwe. Jednak 26-letni programista na stanowisku senior developera to raczej wciąż rzadkość, mimo wszystko bardziej zaawansowany wiek przekłada się na większe doświadczenie, umiejętności i co szczególnie istotne dobre zrozumienie biznesu, które osobiście postrzegam jako klucz do rozróżnienia omówionych poziomów.

Ps. Specjalne podziękowania dla Pawła Mality , Security Engineer z firmy Netguru za opracowanie i propozycję opisu wymagań w zakresie bezpieczeństwa kodu.

Czytaj też: Studia informatyczne – czy są potrzebne przyszłym programistom?

Autor:

Barbara Kowalewska

CEO & Co-founder IT-Leaders.pl

Linkedin