Back to Top
junior developer it programista
Autor: Redakcja

Jak efektywnie zatrudnić i wyszkolić juniora w IT?

W branży IT ścieżka rozwoju zawodowego programisty ma czytelną strukturę. Kimkolwiek chcesz zostać w przyszłości najpierw zaczynasz jako junior. Jak skutecznie wdrożyć do pracy młodego programistę? Pair programming, code review, mentoring to najczęściej stosowane metody efektywnej nauki, z których korzystają firmy.

W Polsce doświadczeni programiści mogą przebierać w ofertach. Największe zapotrzebowanie jest na programistów ze szczebla mid-level - to 53,7 proc. ogłoszeń - wynika z danych portalu No Fluff Jobs. Na seniorów czeka 37,8 proc. ogłoszeń. Trudniej jest osobom stawiającym pierwsze kroki w branży - zaledwie 8,5 proc. ogłoszeń to oferty dla juniorów. Szerzej pisaliśmy o tym w art. ,,Czy w IT nie ma już miejsca dla początkujących? Bez doświadczenia nie zdobędziesz doświadczenia". 

W Polsce pracuje ok. 50 tys. programistów. 7 tys. osób studiuje kierunki pozwalające na późniejszą karierę programisty, a ok. 5 tys. uczy się na kursach wszkołach IT.

Przy rekrutacji młodych osób często dochodzi do zderzenia interesów. Początkujący programiści oczekują, że pracodawca nauczy ich wszystkiego. Firmy z kolei szukają osób, które mają już pewne doświadczenie i background techniczny oraz pasję do pracy. Poszukiwanych juniorów powinna wyróżniać pracowitość, zaangażowanie i małe sukcesy na koncie: udział w projektach, budowanie stron, sklepów internetowych, pisanie aplikacji, praca w startupie znajomego. Na takich juniorów firmy czekają. Przyjmą, wyszkolą i dobrze wynagrodzą. 

Mentoring, czyli witamy na pokładzie 

Proces onboardingu, czyli wdrożenia juniora do pracy jest czasochłonny, a dla zajętych swoimi projektami programistów jego przyuczanie może stać się dodatkowym, niechcianym obowiązkiem. Aby uniknąć rozczarowania dobrze jest przydzielić juniorowi od samego początku mentora. Opiekun będzie nadzorował proces nauki, wyznaczał zadania, dawał informację zwrotną i czuwał nad rozwojem młodszego kolegi. Mentorem nie musi być – mocno obłożony obowiązkami - senior, może nim być doświadczony mid. Również dla niego będzie to okazja, aby rozwinąć umiejętności przywódcze, określać priorytety, nauczyć się dawać informację zwrotną i pracować nad komunikacją. 

Pair programming, czyli programujemy w parach 

Jak przyspieszyć onboarding? Dać nowym pracownikom okazję do nauki od doświadczonych programistów. Praktycznym sposobem na szybsze wdrożenie juniora jest jest pair programming. Programowanie w parach to technika, która polega na wspólnym programowaniu przez dwie osoby przy jednym komputerze. Osoba pisząca kod to driver. Navigator zadaje pytania, zwraca uwagę na błędy i proponuje swoje rozwiązania. Programiści zamieniają się miejscami co 15-30 minut. 

To model współpracy, którego celem jest przyspieszenie nauki początkującego programisty. Partnerem juniora może być mid lub senior. W ten sposób junior rzucony na głęboką wodę poznaje specyfikę projektów, uczy się standardów pracy i poznaje kulturę firmy.  Bezpośrednie korzyści z programowania w parach płyną do juniora. To też okazja do poznania członków zespołu zarówno od strony zawodowej, jak i prywatnej. W konsekwencji jednak zyskują również doświadczeni pracownicy, którzy weryfikują np. swoje umiejętności komunikacyjne. Efektem pracy w parach jest wyższa jakość kodu, lepsze rozwiązania, sprawniejsza komunikacja w zespole i budowanie kultury dzielenia się wiedzą. 

Programowanie w parach pomaga szybciej ukończyć projekt, skutkuje mniejszą liczbą błędów w kodzie i przekłada się na wyższą jakość stworzonego oprogramowania. Badania efektywności pokazują, że programowanie w parach zajmuje 15 proc. więcej czasu w porównaniu do pracy jednej osoby, a liczba błędów spada o 15 proc. - wynika z pracy The Costs and Benefits of Pair Programming, której autorami są Alistair Cockburn i Laurie Williams. Badanie, które przeprowadził John Nosek pokazuje, że pracochłonność podczas programowania w parach wzrasta o 42 proc., a czas spędzony na zadaniu spada o 20 proc. Słabość tej metody pojawia się wówczas, gdy programiści mają odmienne style programowania, co może być przyczyną nieporozumień.

Programowanie w parach sprawdza się na etapie rekrutacji. Firma już na samym początku poznaje praktyczne umiejętności kandydata i na tej podstawie potrafi przypisać juniora do najlepszej roli w firmie. 

Code review, czyli w poszukiwaniu błędów 

Innym praktycznym sposobem pracy w zespołach, w których programiści różnią się stażem jest code review. Przegląd kodu, nazywany także inspekcją kodu, ma za zadanie wykrycie i poprawienie błędów popełnionych w kodzie w czasie pisania oprogramowania. Sprawdza się czy projekt jest zgodny z dokumentacją zanim trafi do fazy testów. Recenzent, czyli osoba analizująca kod szuka błędów i proponuje lepsze rozwiązania. Nauka na błędach służy nie tylko autorowi kodu, ale jest pretekstem do dzielenia się dobrymi praktykami z pracownikami o podobnym doświadczeniu. Przegląd kodu podobnie jak programowanie w parach należy do jednej z metodyk tworzenia oprogramowania, takich jak programowanie ekstremalne.

Ważne, aby podczas pierwszych tygodni nauki junior otrzymywał zadania, które dadzą mu poczucie, że jest pełnoprawnym członkiem zespołu. Pełne wdrożenie pracownika do samodzielnego wykonywania zadań to wieloetapowy proces, który może zająć od 3 miesięcy nawet do roku. 

Zapytaliśmy przedstawicieli trzech polskich firm, czym kierują się podczas rekrutacji juniorów, i jak wygląda u nich proces onboardingu nowych pracowników.

Piotr Całka, CEO Inspire Labs 

Czy zatrudniacie junior programistów?

- Tak, od czasu do czasu zatrudniamy juniorów. Z reguły szukamy programistów przynajmniej na poziomie średnim. Jeśli w trakcie rekrutacji wyłowimy osobę z dużym potencjałem rozwojowym, oferujemy zatrudnienie niezależnie od doświadczenia.

Jakie kryteria stosujecie, żeby wybrać tych najlepiej rokujących?

- Najczęściej proces zaczynamy od weryfikacji kodu, jaki napisała konkretna osoba. Przeglądamy repozytorium GIT i poszczególne etapy rozwoju aplikacji tzw. commity. W commitach widać jaki kod stworzył programista i czy z biegiem czasu stosował większą kulturę pisania kodu, czy tworzył lepiej przemyślane struktury.

Jak wygląda onboarding młodych, jeszcze niezbyt doświadczonych programistów w Waszej firmie?

- Zazwyczaj stawiamy na dużą samodzielność i takich kandydatów szukamy. Staramy się dopasować zadania do kompetencji i doświadczeń danej osoby, jednak zdarza się, że programista dostaje ambitniejsze zadania. Staramy się dość regularnie robić tzw. code review przez doświadczonego programistę.

Jak długo - przeciętnie - zajmuje w Waszej firmie wdrożenie juniora, by stał się samodzielny. Czy macie jakieś sprawdzone procedury szkolenia początkujących programistów w firmie?

- To zawsze jest indywidualne podejście. Jako mała firma możemy pozwolić sobie na dużą elastyczność. Zazwyczaj juniorzy stają się w miarę samodzielni po około 3-6 miesiącach pracy.

Jaki jest przepis na idealny zespół?

- Proporcja poszczególnych poziomów doświadczenia wśród pracowników nie ma znaczenia. Idealny zespół powinien być dopasowany do projektów jakie realizuje oraz przede wszystkim powinien być zgrany i ufać sobie nawzajem.

Jakie są największe wyzwania w zarządzaniu mniej doświadczonymi programistami?

- Największym wyzwaniem jest czas, którego stale brakuje. Dobre wdrożenie początkującej osoby jest czasochłonne. Z tego powodu bardzo istotna jest samodzielność w rozwiązywaniu problemów oraz samodzielność w uczeniu się. Te dwie cechy są stale potrzebne w IT, gdyż technologie nieustannie się zmieniają i stale trzeba się rozwijać.

Piotr Zientara, CTO App’n’roll

Czy zatrudniacie junior programistów?

- Zatrudniamy junior programistów, ponieważ ma to pozytywny wpływ na cały zespół. Junior wprowadza do zespołu nową energię i motywuje do rozwoju. Z jednej strony, junior to osoba, która samodzielnie nie będzie pracować w projekcie, może więc się wydawać, że będzie dodatkowym obciążeniem dla zespołu. Natomiast kluczowe jest tu zastosowanie odpowiedniego modelu współpracy. W naszym odczuciu świetną metodą przekazywania wiedzy jest pair programming, czyli wspólne programowanie na zmianę. Ten sposób działania zwiększa efektywność programisty, ponieważ wymaga większej koncentracji i świadomości tego co się robi. Eliminuje także możliwość powstania tak zwanych “głupich błędów”: literówek, pomieszania środowisk, złych nazw zmiennych. Oczywiście liczba juniorów względem zaawansowanych programistów nie może być zbyt wielka. Pozytywny wpływ na resztę zespołu bierze się stąd, że ci którzy uczą, muszą swoją wiedzę lepiej uporządkować, przez co sami się uczą.

Jakie kryteria stosujecie żeby wybrać tych najlepiej rokujących?

- Najlepiej rokują osoby, które udowodniły, że potrafią się uczyć. Jeśli powtarzają błędy - niestety nie rokują dobrze. Gdy przyjmują z pokorą uwagi i wiedzą co powinny poprawić, nie wstydzą się braków i potrafią przejść z nieświadomej niekompetencji do świadomej niekompetencji, wówczas rokują bardzo dobrze.

Jak wygląda onboarding młodych, jeszcze niezbyt doświadczonych programistów w Waszej firmie?

- Mamy w App’n’roll książeczkę onboardingową, i nasz proces wdrażania staje coraz bardziej ustrukturyzowany. Dzięki temu, że jesteśmy jeszcze małą firmą, każdą osobę traktujemy indywidualnie. Juniorzy w App’n’roll wchodzą w relacje mentor - uczeń, jednak niekoniecznie z jedną osobą. Na rozwój juniora pracuje cały zespół, więc dobrze jeśli potrafi się równolegle uczyć się od wielu doświadczonych pracowników. Na początku otrzymuje proste zadania przy projektach - layouty do pocięcia, dopisanie kilku translacji, dopisanie funkcji w serwisie, które z czasem będą przeradzać się w trudniejsze i bardziej wymagające.

Jak długo - przeciętnie - zajmuje w Waszej firmie wdrożenie juniora, tak by stał się w miarę samodzielny? Czy macie jakieś sprawdzone procedury szkolenia początkujących programistów w firmie?

- To zależy od osoby. W App’n’roll po roku lub półtora junior przekracza magiczną granicę i staje się regularem. To awans nie tylko w jego poczuciu, ale również w oczach całego zespołu. Praktyczną metodą wdrażania juniorów jest przydzielanie im różnych projektów. Sprawdzianem dla każdego jest odbywający się u nas regularnie dzień developera. Napisanie własnego mini projektu w technologii, w której programista chce się podszkolić daje dobre rezultaty, zwiększa pewność siebie, a nam pokazuje w jaki sposób osoba się rozwija.

Jaki jest przepis na idealny zespół?

- Dla nas sprawdza się zestaw: dwóch zaawansowanych programistów (senior + mid), jeden junior/ jedna juniorka i jeden PM, choć to kwestia zależna od charakterystyki projektu.

Jakie są największe wyzwania w zarządzaniu mniej doświadczonymi programistami?

- Największym wyzwaniem są estymacje, czyli oszacowanie czasu potrzebnego na wykonanie zadania lub projektu. Panuje stereotypowe przekonanie, że osoby początkujące estymują zbyt optymistycznie. Nie zawsze jest to prawdą, bo zdarza się, że junior estymuje z większą rezerwą niż doświadczone osoby. Często nie bierze pod uwagę wszystkich zmiennych potrzebnych do realistycznego wyceny czasu całej realizacji. Ale prawdą jest, że od juniora nie wymaga się, żeby estymacja korespondowała z rzeczywistością, tak jak w przypadku senior developera. Warto, aby estymacja juniora była zweryfikowana przez senior developera, który uwzględni i zweryfikuje jej poszczególne elementy.

Jacek Tchórzewski, CTO Coders Lab

Czy zatrudniacie juniorów?

- W Coders Lab zatrudniamy juniorów. Są to osoby po naszym kursie. Wierzymy, że przy obecnej sytuacji na rynku pracy, na którym brakuje osób z doświadczeniem, jest to najlepszy sposób żeby uzupełnić zespół oraz wyłowić talenty. Jeżeli chodzi o kryteria oceny takich osób to jest nam łatwiej, bo mamy dostęp do wyników nauki kandydatów oraz opinie wykładowców i mentora. Nie oznacza to, że rezygnujemy z rozmów kwalifikacyjnych. Każdy kandydat musi przejść zarówno rozmowę z managerem działu zajmującego się rozwojem oprogramowania, jak i rozwiązać w domu przygotowane zadanie.

Jak wygląda onboarding młodych, jeszcze niezbyt doświadczonych programistów w Waszej firmie?

- Od juniora, czyli osoby która dopiero zaczyna pracę w branży, trudno oczekiwać pełnej samodzielności. Takiej osobie zawsze trzeba pomagać na wczesnych etapach pracy i wskazywać dobre rozwiązania. Onboarding juniorów nie różni się w znaczący sposób od onboardingu innych programistów. W ciągu pierwszych dni muszą skonfigurować swoje środowisko pracy i uruchomić projekt, nad którym będą pracować. Potem przychodzi czas na przeczytanie dokumentacji technicznej projektu oraz rozwiązanie pierwszych zadań. Zazwyczaj są to proste zadania polegające na wprowadzeniu małej zmiany oraz modyfikacji testów do części kodu. Pozwala to na spokojne zaznajomienie się z projektem i zasadami pracy działu.

Jak długo - przeciętnie - zajmuje w Waszej firmie wdrożenie juniora, tak by stał się w miarę samodzielny? Czy macie jakieś sprawdzone procedury szkolenia początkujących programistów w firmie?

- Wdrożenie trwa mniej więcej 3 miesiące. Po takim czasie junior jest w stanie samodzielnie wykonywać zadania, jeżeli są dobrze opisane i omówione na sesjach planingowych. Na razie nasz dział IT jest za mały, żeby stosować specjalne procedury wdrożeniowe. Staramy się dostosować do osób które zatrudniamy, bo każda potrzebuje innego rodzaju wsparcia.

Jaki jest przepis na idealny zespół?

- Idealna proporcja według mnie to: 30 proc. juniorów, 40 proc. midów, 30 proc. seniorów. Niestety, idealny pomysł jest praktycznie nie do wdrożenia. Zazwyczaj liczba seniorów jest wyższa, a zespół jest zdominowany przez osoby z doświadczeniem mida.

Jakie są największe wyzwania w zarządzaniu mniej doświadczonymi programistami?

- Dla mnie największym wyzwaniem jest troska o ich rozwój oraz wskazywanie ścieżki wzrostu. Jeżeli o to zadbamy, możemy zyskać bardzo dobrego pracownika, który będzie z nami współpracował przez długie lata.

***

Idealnym rozwiązaniem jest utrzymywanie zespołu doświadczonych programistów i równoległe zatrudnianie możliwie jak najzdolniejszych kandydatów – absolwentów i studentów ostatnich lat, wyróżniających się kursantów szkół programowania. Tak skonstruowany zespół będzie gwarantował utrzymanie liczby błędów na akceptowalnym poziomie.

Wbrew obiegowym opiniom początkujący programiści potrafią się "obronić" i wnieść dużą wartość do firmy - ale tylko wtedy, jeśli stworzy im się odpowiednie warunki i wesprze doświadczonymi koderami. Wtedy również ci najmłodsi zaczną kodować, przyswoją firmowe procedury, metodologię programowania, nauczą się pracy zespołowej.

Potem historia zatoczy koło: w ciągu kilku lat "młodsi" - juniorzy - przestaną być "młodszymi", a zostaną tymi doświadczonymi programistami, którzy pomogą w rozwoju nowych, "świeżych" kolegów i koleżanek.