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 przechodzi na ścieżkę seniora?” – wynikła z tego ciekawa dyskusja, a 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).

Junior, czyli kto?

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ż praktyki zawodowej i umiejętności kodowania na poziomie, który pozwoli na samodzielną pracę. Standardem w opisach stanowisk oczywiście nadal jest podstawowa znajomość danej technologii – taka jednak jak wiadomo, nie wystarczy, by móc samodzielnie pracować.

Wniosek jest zatem taki, że junior juniorowi nierówny;-) W IT-Leaders po wielu konsultacjach z Wami wyodrębniliśmy z dotychczasowego poziomu „Junior” dwa nowe poziomy: Entry (kandydaci bez komercyjnego doświadczenia) oraz 'nowy’ Junior (młodszy specjalista, osoba, która weszła już do zawodu). Dobrze widzieć, że powoli również tradycyjne portale z ogłoszeniami, zaczynają stosować ten podział.

Poniżej zaproponowaliśmy – w mojej ocenie -uniwersalny zestaw umiejętności dla zupełnie poczatkującego ENTRY developera:

Rys. 1. Przykładowy TECH-Profil kandydata ENTRY na IT-Leaders.pl
  • Podstawowa znajomość języka i frameworka, w których poszukujemy pracy;
  • 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;
  • i na koniec skillset idealny, czyli pierwszy ciekawy projekt (niekoniecznie idealny!), którym będziesz mógł wykazać, że programowanie to rzeczywiście coś co Ciebie interesuje i masz ku temu predyspozycje

Co zatem powinno wyróżniać JUNIOR developera?

  • Po pierwsze, w odróżnieniu od Entry, Junior to ten, który ma już doświadczenie zawodowe (o poziomie juniora mówi się u specjalistów z 6-miesięcznym do 2-3 lat doświadczenia zawodowego);
  • Podstawowa znajomość języka i frameworka wykorzystywanych w projekcie, w którym będziemy programować;
  • Umiejętność samodzielnego wyszukiwania rozwiązań. Zwłaszcza w sytuacjach,  kiedy konsola wyrzuca od 3 godzin błąd..;
  • Podobnie jak u Entry, 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;
  • Cały czas nastawienie na intensywny rozwój – zresztą na każdym etapie programowanie wymaga 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; (poziom umiejętności możesz łatwo wskazać firmom w TECH-Profilu kandydata dołączając do społeczności IT na IT-Leaders.pl )

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:

Rys. 2. TECH-Profil na IT-Leaders.pl
  • 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

Jeśli zainteresował Was ten artykuł, wpadnijcie na mój Linkedin – od czasu do czasu dzielę się tam informacjami ze świata HRTechu. Zapraszam, tzn. zaproście – ja przyjmę:)