Jak stworzyć juniorowi warunki do rozwoju? Devdebata

W jaki sposób firma może przygotować miejsce dla juniora, w którym będzie mógł szybko rozwijać się? To główne pytanie jakie zadaliśmy zaproszonym senior developerom, których poprosiliśmy o to, by odpowiedzieli o swojej ścieżce od juniora do seniora oraz o to, by poradzili, w jaki sposób junior może podnosić swoje umiejętności. Jak odpowiedzieli na pytanie z tytułu artykułu?

3. Ma znaczenie to, gdzie się uczył: na studiach, w szkole programowania czy jest samoukiem?

Odpowiada Krzysztof Hasiński, Senior Software Engineer:

Nie. Pamiętam, że lead developer pewnej dużej fińskiej firmy przy ich kluczowym dla nich projekcie był samoukiem, który wiedzę swoją zdobywał… w więzieniu. Ludzie po studiach na pewno mają łatwiej z uwagi na to, że są zmuszeni do obejrzenia pewnych bardziej algorytmicznych problemów. Ale nie widzę problemu, żeby ktoś odpowiednio zmotywowany i zainteresowany tematem taką wiedzę nadgonił. Jedyną znaczącą różnicą mogą być znajomości ze studiów, które zdecydowanie trudniej nadrobić.

Odpowiada Michał Załęcki, Senior Software Engineer w Tooploox:

I tak, i nie. Tak, bo dobre studia zmuszają do nauki. Nie, bo nie ma “automatycznych” punktów za papierek. Osobiście na rozmowie rekrutacyjnej nie biorę pod uwagę tego jak zdobyłeś swoją wiedzę, interesuje mnie to co wiesz i co pokażesz w procesie rekrutacji.

Odpowiada Sebastian Gruchacz, Programista .Net / C# od 15 lat:

I tak, i nie. Raczej niewielkie są szanse, że samouk wpadł na to by się uczyć teorii programowania, algorytmów czy zagadnień związanych z np. liczeniem złożoności czy O. Z drugiej strony – na uczelni też raczej miał niezbyt wiele okazji by rozwijać się w tym co go pasjonuje. Dodatkowo, w praktyce programistycznej zazwyczaj się okazuje, że tej teoretycznej wiedzy wyniesionej z uczelni niemal nigdy nie będzie potrzebował w “prawdziwych” projektach. Mi samemu w mojej niemal 20 letniej karierze przydały się te kwestie najwyżej kilka razy. Oczywiście są takie ścieżki rozwoju gdzie ta wiedza jest wręcz niezbędna – jak AI, ML czy Big Data, ale to i tak tylko podstawy. Osobiście chwalę sobie tę urozmaiconą (choć powierzchowną) wiedzę wyniesioną ze studium, dzięki czemu nie zamykam się tylko w jednym obszarze.

Odpowiada Paweł Wieczorek, Senior Fullstack Developer w Chop-Chopie:

Nie ma to znaczenia. Każda z tych ścieżek pozostawia po sobie pewne umiejętności i „ułomności”, które potem praca w firmie zweryfikuje. Samouk może nie mieć tak obszernej wiedzy, jak osoba po studiach, ale może deklasować ją większym zaangażowaniem w projekt, a osoba po szkole programowania może mieć bardziej aktualną wiedzę na temat praktyk, czy technologii jakie są wykorzystywane. Ważniejsze od pytania „gdzie?”, będzie „czego się uczył i co na ten temat wie?”, bo koniec końców na rozmowie będziecie pytani z wiedzy i umiejętności (oby), a nie w jaki sposób je nabyliście, chociaż to też może być na tyle ciekawe, że wywiąże się z tego jakiś small talk.

Odpowiada Adam Włodarczyk, iOS/Android Developer w Hindbrain:

Oczywiście, że ma. Przyjmując, że mamy 3 tak samo dobrze wykwalifikowanych programistów tyle, że każdy nauczył się tego fachu w inny sposób, jesteśmy w stanie określić jego pobudki i możliwe nawet, że profil psychologiczny. Przykładowo samouk, prawdopodobne że będzie to osoba dociekliwa, lubiąca badać nieznane rejony, wytrwała w swoich postanowieniach, taki typ geeka od urodzenia. Programista po studiach (nomen omen, ciekawie to brzmi, chciałbym zobaczyć takiego studenta, który nauczył się programować dzięki studiowaniu) będzie osobą dobrze przygotowaną technicznie pod różne technologie, będzie potrafił zastosować techniki rozwiązywania problemów, poznane np. na przedmiocie Algorytmy i Struktury Danych, będzie umiał użyć teorii grafów do optymalizacji logiki biznesowej. Ogólnie dobrze przygotowany merytorycznie programista. Jeśli chodzi o programistę po szkole programowania, można założyć, że taki programista jest nastawiony na szybkie pozyskiwanie wiedzy i ma motywację do nauki. Dodatkowo jest dobrze przygotowany merytorycznie z danej technologii lub frameworka i może być dobrym rzemieślnikiem. Najczęściej ludzie chcący coś zmienić w swoim życiu. Podsumowując, sposób i miejsce nauki ma bardzo duże znaczenie.

4. To pytanie zadano już setki razy, ale myślę, że zawsze będzie aktualne. Jak junior powinien przygotować się do pierwszej pracy i ile przeznaczyć czasu na naukę “po pracy”?

Odpowiada Krzysztof Hasiński, Senior Software Engineer:

Junior powinien interesować się programowaniem. Rozwiązywać swoje własne problemy używając kodu. Nie wiesz jak się uczyć? Pomyśl jakiej aplikacji Ci brakuje i napisz chociaż mały jej zaczątek. Nauczysz się kilka razy więcej niż przerabiając kursy i tutoriale.

Odpowiada Michał Załęcki, Senior Software Engineer w Tooploox:

Wszystko zależy od tego jak szybko chce się tę pracę znaleźć. Był czas, w którym przychodziłem do domu i pisałam kodzik do momentu, w którym nie obudziłem się na klawiaturze. Trzeba było wtedy usunąć wszystkie znaki wprowadzone czołem, umyć zęby, pójść spać i tak w kółko. Tę technikę polecam tylko najbardziej zdeterminowanym. Postawiłbym sobie konkretny cel i dążył do niego w miarę swoich możliwości. Zacznij od freeCodeCamp, wrzuć kod na GitHub, rozwiąż pare zadanek na HackerRank, napisz prostą aplikację, opublikuj ją na Heroku i będziesz lepszy od większości innych kandydatów.

Odpowiada Sebastian Gruchacz, Programista .Net / C# od 15 lat:

To głównie kwestia tego czy “junior” jest juniorem według metryczki czy według stażu. Ja zacząłem naukę dość wcześnie, łączyłem ją ze studiami i pracą. Nie mając na głowie rodziny mogłem poświęcić mojej pasji bardzo dużo czasu, bawiąc się i eksperymentując. Aktualnie wybór jest bardzo ograniczony: albo rozrywka, albo nauka. Albo rodzina, albo kodowanie. Albo obowiązki domowe, albo github. A i organizm regularnie pozbawiony wystarczającej ilości snu już nie daje rady na dłuższą metę jak za czasów młodości. Ponieważ według mnie jedna godzina to zbyt mało by poczynić sensowne postępy – ja sobie przeplatam rozrywki z nauką: Jednego dnia sięgam do Netflixa, a innego koduję. Ciekawym pomysłem jest też nauka programowania dzieci – dzięki temu muszę sobie wszystko samemu sensownie poukładać i postarać się ogarnąć z perspektywy “bardzo juniora”, a i czas z rodziną jest zaliczony.

Odpowiada Paweł Wieczorek, Senior Fullstack Developer w Chop-Chopie:

Warto do tego wszystkiego mieć „dziecięcą ciekawość”, tak by pojawiające się pytania – „co” „dlaczego”, „że co?!” – podczas czytania kodu były motywujące, a nie odpychające, wtedy ten czas spędzony „po pracy” będzie o wiele przyjemniejszy. A ile przeznaczyć na to czasu? Trudno jednoznacznie stwierdzić, ale na pewno tyle ile się chce, ale nie więcej niż trzeba. Dla jednych to będzie zarywanie nocy, aż świadomość nie skaże ich na sen, a dla drugich będzie to szybkie przejrzenie tematycznych postów na Reddicie w trakcie innych czynności.

Przed pierwszą pracą warto ogarnąć sobie jakiś mały projekt (albo duży, o ile macie siły) i go opublikować na GitHubie czy GitLabie – takie projekty nabiją Wam punktów przy przeglądaniu CV przez rekrutera, bo kod powie o Was o wiele więcej, niż długa ścieżka edukacyjna. Nie ważne, czy ten projekt to nieudany pomysł na najlepszą appkę świata, czy zrobiona po Waszemu kopia jakiegoś serwisu. I pamiętajcie, by dużo commitować podczas pracy nad takim projektem – jednocommitowce są podejrzane i nie mówią nic o Waszych postępach.

Odpowiada Adam Włodarczyk, iOS/Android Developer w Hindbrain:

ZOBACZ TEŻ:  Flask czy Django – co wybrać? Devdebata

Jeśli naprawdę marzy mu się zmiana pracy, chęć spróbowania sił w nowym środowisku, to myślę że taka osoba powinna poświęcić tyle czasu, ile tylko może i ma żeby cel osiągnąć jak najszybciej (bo chyba o to tu chodzi). Wiadomo, ludzie mają różną sytuację rodzinną i finansową, chodzą do różnych miejsc pracy, mają rodzinę i dzieci (lub też nie), no i te zmienne będą determinowały kto, ile czasu może poświęcić na naukę. Tak naprawdę chodzi o to, żeby zacząć i sukcesywnie się rozwijać, rozumieć, wyciągać wnioski z popełnionych błędów.

5. Co musi zrobić, żeby dostać podwyżkę i jak szybko, opierając się na Waszym doświadczeniu, zazwyczaj junior podnosi swoje umiejętności?

Odpowiada Krzysztof Hasiński, Senior Software Engineer:

Pokazać swoją wartość, zarówno aktualną (przez przydatne umiejętności), jak i potencjalnie przyszłą (przez szybkie przyswajanie nowej wiedzy).

Odpowiada Michał Załęcki, Senior Software Engineer w Tooploox:

W Tooploox dużo zależy od rekomendacji twojego zespołu po 3 miesięcznym okresie próbnym. Ludzie są różni i do każdego staramy się podejść indywidualnie. Jeżeli okaże się, że jesteś samodzielny to zwykle twoja pensja oscyluje w przedziale 4 000zł do 6 500zł brutto.

Odpowiada Sebastian Gruchacz, Programista .Net / C# od 15 lat:

Brutalna prawda jest taka – zmienić pracę. Zazwyczaj możliwości uzyskania większych podwyżek w ramach aktualnej pracy są minimalne. A w momencie gdy widziałem na rynku oferty pracy dla programistów z 2-letnim doświadczeniem w okolicy 8K nie wyobrażam sobie, by junior w ciągu dwóch lat pierwszej pracy osiągnął taki poziom zarobków startując od pułapu tych 3K.

Widziałem firmy, które nie miały pomysłu na rozwój juniorów i ci ucząc się wyłącznie na własną rękę zrezygnowani odchodzili szukając miejsc gdzie mogą się przydać – i zarobić więcej. Oczywiście widziałem też i takie gdzie jest jak trzeba, i tam będzie jak koledzy nadmienili.

Odpowiada Paweł Wieczorek, Senior Fullstack Developer w Chop-Chopie:

Na szybkość podwyżki możemy wyróżnić dwa czynniki.

Po pierwsze pracownik. Widziałem osoby, który uczyły się szybko i sprawnie rozwiązywały stawiane przed nimi problemy, ale widziałem też takie, którym szło to wolniej i nerwowo reagowali na każdy napotkany problem. Takie postawy, jak nietrudno się domyślić, miały wpływ na szybkość awansów czy podwyżek.

Po drugie firma. Jeżeli coraz sprawniej rozwiązujemy stawiane przed nami zadania, a mimo to firma zdaje się tego nie dostrzegać, to warto w pierwszej kolejności skonfrontować nasze wrażenia z osobą, która jest odpowiedzialna za awanse (zazwyczaj jest to osoba, która była z nami na rozmowie). Jeżeli mamy wrażenie jakbyśmy odbijali się od ściany, to czas poszukać innej firmy.

Odpowiada Adam Włodarczyk, iOS/Android Developer w Hindbrain:

Musi wykazać się tym, że potrafi być samodzielny, umie użyć szarych komórek i nawet nie znając rozwiązania danego problemu jest w stanie takie rozwiązanie wydedukować/znaleźć i w kolejnych iteracjach. Tak naprawdę najlepiej powinien wiedzieć to mentor juniora, czy jest gotowy by wysłać swojego programistycznego podrostka na głębokie wody kodocenau. Jeśli taki junior już nie będzie zabiegał o pomoc, albo będzie to robił sporadycznie, to czas na podwyżkę i stanie się samodzielnym programistą. Tu też nie ma reguły co do czasu, jeden w 3 miesiące będzie kodował jak stary wyjadacz inny natomiast po 4 latach będzie nadal w tym samym miejscu co na początku. Wszystko zależy od jednostki.

6. Jak stworzyć najlepsze warunki dla rozwoju junior developera?

Odpowiada Krzysztof Hasiński, Senior Software Engineer:

Postawić go przed ciekawym problemem i dać mu kontakt do ludzi, którzy pomogą mu w kluczowych momentach. Dać mu czas na naukę i bardzo szybki feedback. Dać mu pairować z innym juniorem lub midem (z seniorem nie ma sensu, będzie im trudniej o wspólny język, a i stres dla niektórych większy).

Odpowiada Michał Załęcki, Senior Software Engineer w Tooploox:

Promować atmosferę, w której nie boimy się zadawać pytań. Należy postawić na współpracę, często dawać feedback, organizować sesje pair programmingowe, stawiać na jakość tworzonego kodu, robić code review i nie zapomnieć o tej ludzkiej stronie procesu wytwarzania oprogramowania. Jest to nie tylko dobre dla rozwoju juniorów, ale także każdego pracownika w firmie.

Odpowiada Sebastian Gruchacz, Programista .Net / C# od 15 lat:

Tu będę teoretyzował – nigdy do tej pory nie miałem okazji widzieć tego realizowanego w sposób zaplanowany w organizacji – zarówno od strony juniora jak i seniora / team-leadera. Moje doświadczenie jest takie, że junior jest po prostu wrzucany w jakieś banalne zadania i ma się w nich samemu ogarnąć. A seniorzy tak są zarobieni, że nie mają czasu na regularne przeglądy kodu czy pracę w parach. Pamiętam też czasy gdy nikt nie używał repozytoriów kodu, o procesie code-review nawet nie wspominając. A jako leader współpracowałem już niemal wyłącznie z midami / seniorami, więc też mnie to ominęło.

OK, są jakieś warsztaty czy meetupy czasami w firmach robione, i fajnie, ale to zdecydowanie nie wystarczy. Junior powinien mieć zapewniony dostęp do bardziej doświadczonych kolegów, a ci powinni mieć bufor czasu, który mogą zainwestować w dzielenie się wiedzą bez stresu, że nie wyrobią się ze swoimi zadaniami. Można organizować wewnętrzne panele dyskusyjne i warsztaty, prowadzone przez ludzi z rozmaitych poziomów doświadczenia i na różne tematy – to pozwoli ukierunkować ewentualne dodatkowe studiowanie ciekawych tematów i stworzy atmosferę dzielenia się wiedzą. Oczywiście nawet nie wspominam o tym jak ważny jest proces konstruktywnych przeglądów kodu pisanego przez juniora – nie w postaci mniej lub bardziej złośliwej krytyki ale konkretnych wskazówek, linków a nawet przykładów. Czas do mniej technicznej rozmowy przy ekspresie do kawy też powinien się znaleźć. A i można wówczas na luzie zarzucić jakimś frapującym problemem – są spore szanse, że akurat ktoś od dawna zna odpowiedź…

Odpowiada Paweł Wieczorek, Senior Fullstack Developer w Chop-Chopie:

Zachęcić do zadawania pytań na forum firmy (czy to twarzą w twarz czy przez komunikator firmowy). Pojawią się problemy, które będą zajmować zbyt wiele czasu, a w firmie będzie osoba, która albo się spotkała z podobnym (jak nie tym samym) problemem, albo taka, która będzie chciała się wykazać, co w rezultacie może przynieść świeższe spojrzenie do całej sytuacji.

Odpowiada Adam Włodarczyk, iOS/Android Developer w Hindbrain:

Junior powinien mieć mentora, który to będzie mu przydzielał zadania i to on najlepiej będzie wiedział na jakim etapie rozwoju intelektualnego jest junior i z czym sobie poradzi a z czym nie. Na pewno junior powinien dostawać zadania, które będą zmuszały go do myślenia, poszukiwań, zgłębiania zagadnienia. Smutne jest jeśli dostanie jakieś trywialne zadanie, które polega na klepaniu jak średnio inteligentna małpa. Najlepszym powiedzeniem, które można tu przytoczyć jest to, że nieużywany organ zanika i trzeba dawać juniorowi takie zadania żeby szare komórki musiały wejść na najwyższe obroty.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
COBOL XD
COBOL to język przyszłości. Dlaczego programiści muszą się go nauczyć?