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:
- 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:
- 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ę:)