Czy powinieneś wdrażać juniora programistę?
Wyobraź sobie, że niedługo do twojego zespołu dołączy nowy programista. Jest juniorem. Wiadomo, że ktoś będzie musiał go wdrożyć i wybór pada na Ciebie. Co robisz? Zanim się zgodzisz lub odmówisz, przemyśl czy jesteś odpowiednią osobą do wdrażania początkującego programisty.
Odcinek 2: Czy powinieneś wdrażać juniora programistę?
Transkrypcja
Dzisiejszy temat odcinka to, czy powinieneś wdrażać początkującego programistę? W tym odcinku dowiesz się, jakie pytania warto sobie zadać przed zdecydowaniem, czy jesteś odpowiednią osobą do wdrażania juniora.
Ważna decyzja
Jeszcze pamiętam swoje wdrożenie, kiedy zaczynałam pracę jako programista, a dodatkowo niejednokrotnie wdrażałam juniorów. Znam więc obie perspektywy, jak to wygląda z dwóch stron, zarówno jako osoba, która zaczyna, jak i osoba, która ma już większe doświadczenie.
Nie wiem, czy zdajesz sobie sprawę z tego, ale ta decyzja ma naprawdę kluczowe znaczenie w tym jak potoczy się późniejsza kariera nie tylko tej osoby, która jest wdrażana, ale również twoja, jeżeli to będą dla siebie nowe doświadczenie, ponieważ będziesz mógł się dużo nauczyć, lub oczywiście, jeżeli ta decyzja będzie zła – czyli niekoniecznie nadajesz się na osobę do wdrażania początkujących programistów – to te skutki będą dość długo odczuwalne, ponieważ i dla ciebie, i dla drugiej strony, będzie to po prostu masa frustracji. Już nie wspominając o tym, że może się okazać, że osoba, którą wdrażasz, po prostu szybko się zwolni.
Seniority
Mając w perspektywie to, że osoba, która dołącza do twojego zespołu, przynajmniej przez jakiś czas będzie z tobą współpracować, warto zastanowić się, czy jesteś odpowiednią osobą do wdrażania początkującego programisty. Istotną kwestią jest rozpatrzenie seniority. Głównie Twojego, więc oceń najpierw swój poziom zaawansowania, ale sprawdź też, jak wygląda seniority w Twoim zespole.
Być może w twoim zespole są sami seniorzy i poziom seniority nie będzie miał większego wpływu na decyzję, kto powinien wdrażać juniora. Jeżeli jednak tak nie jest i macie różnorodne seniority, to w mojej opinii, najlepiej, jeżeli osoba, która będzie wdrażać początkującego programistę, jest o kilka kroków przed tą osobą.
Tak jak w przypadku, kiedy to mid wdraża juniora. Programista, który jeszcze niedawno sam był juniorem i nie wiedział wielu rzeczy, też musiał się wdrażać z łatwością przypomni sobie, jakie wyzwania były wtedy przed nim, co było dla niego najtrudniejsze i najbardziej istotne.
Z drugiej strony, jeżeli to senior będzie tłumaczył początkowe zadania juniorowi, to myślę, że będzie mu z tym znacznie trudniej. Chociażby dlatego, że senior zna bogatsze słownictwo techniczne i zwyczajnie może używać słów, których junior jeszcze nie rozumie lub próbować wytłumaczyć koncepcję, które na tym etapie w ogóle się nie przydadzą juniorowi.
Przykładowo, jeżeli junior zapyta, czy kod, który ma napisać, powinien umieścić w danym module, to pewnie oczekuje odpowiedzi tak, to jest dobry moduł, ponieważ np. zajmujesz się implementacją przelewu, a to jest moduł do płatności, więc to będzie dobre miejsce.
Natomiast senior może pokuśić się o to, żeby wytłumaczyć wtedy całą architekturę aplikacji, albo odnieść się do kwestii sposobu podziału domenowego w projekcie. Pytanie, czy na tym etapie jest to potrzebne juniorowi? Oczywiście, że jest to wiedza ważna, ale podejrzewam, że w momencie, kiedy faktycznie będzie potrzebna, to junior już dawno zdąży o tej wiedzy zapomnieć.
Umiejętności miękkie
Jeżeli już przemyślisz tą kwestię i uznasz, że jesteś odpowiednią osobą ze względu na seniority do wdrażania juniora, to możesz przejść dalej. W następnym kroku zastanów się nad swoimi umiejętnościami miękkimi.
Komunikacja
Pierwszą, najważniejszą sprawą jest to, czy masz rozwiniętną umiejętność komunikacji. Podczas wdrażania nowej osoby, zwykle dużo się rozmawia. Przy wdrażaniu początkujących osób bardzo dużo się rozmawia.
Taka osoba będzie wymagała, żeby wytłumaczyć jej wiele rzeczy, które na pozór mogą wydawać się oczywiste, albo to są rzeczy, które ty już dawno wiesz. Trzeba upewnić się, czy jesteś w stanie mówić w sposób prosty. Taki, żeby nawet osoba, która jeszcze nie zna specjalistycznego spłownictwa, cię zrozumiała.
Będzie ci też znacznie łatwiej, jeżeli po prostu lubisz kontakt z innymi osobami i jesteś tolerancyjny i potrafisz wyrażać się w sposób dyplomatyczny.
Przekazywanie wiedzy
Warto, żebyś zapytał sam siebie, czy już kiedyś kogoś uczyłeś, czy lubisz być w roli nauczyciela, czy podoba ci się uczenie. Dodatkowo duże znaczenie ma tu to, czy uczyłeś dzieci, czy dorosłych, ponieważ dorośli uczą się w inny sposób. Dorośli uczą się przed analogię, dlatego wspominałam o komunikacji, ponieważ naprawdę ta umiejętność musi być na wysokim poziomie.
Jeżeli już kogoś uczyłeś, to wiesz, że to nie jest dobry pomysł, żeby kogoś wyręczać. Tylko trzeba wytłumaczyć i pomagać, być wsparciem i dawać dobre rady, natomiast nie wyręczać, ponieważ nic z tego nie wyjdzie. Krótko mówiąc, jeżeli będziesz kogoś wyręczał, to taka osoba niczego nowego się nie nauczy.
Perfekcjonizm
Zapytaj sam siebie, czy jesteś perfekcjonistą, a jeżeli tak, to czy potrafisz to opanować? To nie o to chodzi, żeby junior od razu pisał doskonały kod bez żadnych błędów o idealnej strukturze i hierarchii. To jest naturalny proces uczenia – nabieramy umiejętności i stajemy się coraz lepsi w tym, co robimy. Ważne jest, żeby już na początku nie zniechęć takiej osoby do nauki, tylko pomóc jej w tym procesie.
Odpowiedzialność
A jak już wspomniałam o procesie, kolejną istotnią kwestią jest to, czy potrafisz przekazywać komuś odpowiedzialność w sposób stopniowy. To znaczy, czy potrafisz ocenić, które zadanie jest na tyle proste, żeby ktoś sobie z nim poradził, ale jednocześnie na tyle skomplikowane, żeby dodało nowych umiejętności tej osobie.
Stawianie nowych i coraz trudniejszych wyzwań to bardzo istotny proces wdrażania. Jednocześnie nie można takiej osoby zostawić samej sobie. Trzeba być w pobliżu pamiętając, żeby służyć radą i wsparciem, ale bez wyręczania, żeby ta osoba sama mogła zdobyć potrzebne umiejętności.
Ocena
Odnośnie oceny to będziesz oceniał nie tylko poziom skomplikowania danych zadań, bo zapewne w tym już masz wprawę, ale będziesz musiał również ocenić tą osobę. Będziesz musiał powiedzieć, co niej myślisz, jaki jest jej poziom umiejętności, jak sobie radzi itd. innym osobom, deweloperom, menadżerom i wszystkim innym zainteresowanym. Przygotuj się na to, że tak jak każdy nauczyciel, będziesz musiał oceniać.
Przy ocenianiu pracy innych osób istotne jest to, jakie ty masz doświadczenie. Moim zdaniem lepiej potrafią ocenić inne osoby, tacy programiści, którzy chociażby biorą udział w code review lub byli w przynajmniej kilku projektach. Takie osoby po prostu widzą, że nie zawsze świat wygląda dokładnie tak, jak w ich projekcie.
Motywacja
Niezwykle ważne jest też motywowanie początkującej osoby do tego, żeby się rozwijała, żeby pracowała, żeby podnosiła swoje umiejętności i przede wszystkim docenianie tego, co już umie i co już usiągnęła. Nie mam tu na myśli tylko bezpośredni rozmowy z nią, ale również chwalenie jej na forum, przekazywanie pozytywnej informacji zespołowi, menadżerom i innym osobom zainteresowanym.
Zakończenie wdrożenia
Kolejnym etapem oceny jest również ocenienie, kiedy powinno nastąpić zakończenie wdrożenia. Wdrożenie jak każdy proces ma swój początek i powinien mieć też swój koniec. Czasami (przynajmniej na początku) ciężko oszacować, ile takie wdrożenie może zająć, ale twoją rolą będzie również ocenienie i tego.
Czy masz na to czas?
Jeżeli przemyślałeś sobie już te wszystkie kwestie, stwierdzisz, że faktycznie nadajesz się do tego, to zastanów się jeszcze, czy masz na to czas i przestrzeń. Czy to jest dobry moment w twojej karierze, żebyś to zrobił? Nierzadko zdarza się tak, że programiści mają do zrobienia bardzo dużo różnych zadań i ponoszą dużą odpowiedzialność.
Jeżeli okaże się, że nie będziesz miał na to czasu, to straci przede wszystkim ta osoba, która jest wdrażana, ponieważ przychodząc do nowego projektu, potrzebuje Twojego czasu. Jeżeli nie znajdziesz wystarczającej ilości czasu na wdrażanie nowej osoby, to będziesz chodził sfrustrowany, że zaniedbałeś kolejny obowiązek. Natomiast osoba, która dopiero przyszła do projektu, straci, bo niewiele się nauczy.
Wielu programistów, których znam, zawsze jest bardzo zajęta. Jeśli jesteś w takiej sytuacji to zapytaj sam siebie, czy faktycznie warto odpuścić? Być może część obowiązków można zdelegować, przekazać kolegom czy koleżankom, tak żebyś ty mógł zająć się wdrażaniem nowej osoby.
Jeśli nigdy tego nie robiłeś, to może być dla Ciebie bardzo dobre wyzwanie i możesz się z tego doświadczenia mnóstwo nauczyć. Z drugiej strony, jeżeli robiłeś to już wiele razy, to zapytaj sam siebie, czy to jest najlepszy moment, żebyś robił to jeszcze raz.
Czy Ty tego chcesz?
Najważniejsze pytanie zostawiłam na koniec. Zastanów się, czy ty tego chcesz. Rozważ wszystkie za i przeciw, przemyśl swoją aktualną sytuację i zastanów się, jakie korzyści to może mieć dla ciebie.
Zakończenie
Na pewno nie wyczerpałam tematu pytań, jakie warto sobie zadać, podejmując decyzję o tym, kto powinien wdrażać nową osobę dołączającą do projektu. Mam nadzieję, że w kontekście twojego projektu będziesz w stanie odnaleźć jeszcze więcej użytecznych pytań, które sam sobie zadasz następnym razem, kiedy to twojego zespołu dołączy początkujący programista.
Dzięki za wysłuchanie odcinka i jeśli chcesz być na bieżąco z nowymi odcinkami podcastu, to zachęcam do zasubskrybowania podcastu w twojej aplikacji podcastowej.