Staże w IT: perspektywa kierownika

Staże w IT: perspektywa kierownika

Rekrutacja na letnie praktyki w Yandex trwa. Obejmuje pięć obszarów: backend, ML, rozwój mobilny, frontend i analitykę. Na tym blogu, w innych blogach na Habra i poza nim można znaleźć sporo informacji na temat tego, jak przebiega praktyka. Jednak wiele z tego procesu pozostaje tajemnicą dla tych, którzy nie pracują w firmie. A jeśli spojrzeć na to z perspektywy menedżerów rozwoju, pojawia się jeszcze więcej pytań. Jak prawidłowo prowadzić praktykę, jak zmaksymalizować wzajemną korzyść z praktykanta, jak zdążyć poznać go w ciągu trzech miesięcy i nauczyć wszystkiego, co potrzebne do kontynuacji pracy?

Przygotowaliśmy ten artykuł w pięciu osobach. Pozwólcie, że się przedstawimy: Ihnat Kolesniczenko z działu technologii obliczeń rozproszonych, Misza Lewin z działu sztucznej inteligencji Marketa, Denis Małyh z działu rozwoju aplikacji, Siergiej Bereżnoj z działu rozwoju interfejsów wyszukiwania oraz Dima Czerkasow z grupy zajmującej się rozwojem przeciwdziałania oszustwom. Każdy z nas reprezentuje swoją dziedzinę praktyki. Wszyscy jesteśmy menedżerami, potrzebujemy praktykantów i mamy pewne doświadczenie w pracy z nimi. Dzielimy się naszymi doświadczeniami.

Rozmowa kwalifikacyjna przed praktyką

Kandydatów czekają kilka technicznych rozmów kwalifikacyjnych. Sukces rozmowy zależy w mniejszym stopniu od soft skills (umiejętności efektywnej komunikacji) i w większym — od hard skills (umiejętności w matematyce i programowaniu). Niemniej menedżerowie oceniają zarówno jedno, jak i drugie.

Ihnat:

Nawet jeśli ktoś jest bardzo utalentowany, ale całkowicie niekomunikatywny — nie będzie w stanie zastosować wszystkich umiejętności. Na to oczywiście zwracamy uwagę, ale to nie powód, by nie przyjąć kogoś na praktykę. W ciągu trzech miesięcy wszystko może się zmienić, a ponadto, twoje pierwsze wrażenie może okazać się błędne. A jeśli wszystko jest prawdą — trzeba będzie wyjaśnić tej osobie, poszukać dla niej innych zespołów. Dla praktykantów komunikatywność zdecydowanie nie jest kluczowym czynnikiem. Mimo wszystko, umiejętności profesjonalne są znacznie ważniejsze.

Denis:

Lubię ludzi, którzy opowiadają historie — w dobrym tego słowa znaczeniu. Osoba, która potrafi opowiedzieć, jak ona i zespół heroicznie poradzili sobie z jakimśż wpadką, jest interesująca. Zaczynam zadawać dodatkowe pytania, gdy taka historia się pojawia. Ale rzadko się to zdarza, jeśli po prostu poprosisz o "opowiedzenie o czymś interesującym w twoich projektach."

Pewien kandydat kiedyś powiedział wspaniałą frazę, którą nawet zanotowałem: „Sukcesywnie unikałem rozwiązywania nudnych zadań.”

Staże w IT: perspektywa kierownika

Ponieważ czas na rozmowy jest krótki, rekruter stara się uzyskać użyteczne informacje o kandydacie każdą minutę spotkania. Fajnie, jeśli stażysta wcześniej pomyślał, jakimi szczegółami swojego doświadczenia (nie z CV) mógłby się podzielić. To ma być krótka opowieść ściśle na temat.

Denis:

Zwracam uwagę, gdy ktoś mówi, że próbował wielu języków, podejść. Ludzie z szerszym horyzontem wymyślają w trybie bojowym bardziej eleganckie rozwiązania. Ale to niejednoznaczny plus. Można złapać pobieżne informacje, a poważnie niczego się nie nauczyć.

Czas na historie opisywane przez Denisa zazwyczaj zostaje tylko na końcowej rozmowie kwalifikacyjnej. Do tego czasu trzeba pokazać te fundamentalne i praktyczne wiedzę, które staną się podstawą przyszłej pracy. I, oczywiście, będzie trzeba napisać kod na tablicy lub na kartce.

Misza:

Sprawdzamy znajomość teorii prawdopodobieństwa i statystyki matematycznej. Patrzymy, czy osoba ma doświadczenie w pracy z metrykami, z algorytmami uczenia maszynowego, z konfiguracją ich parametrów, z przeuczeniem itp. Oczekujemy, że osoba potrafi pisać kod na odpowiednim poziomie, aby być analitykiem.

Denis:

Osoby, które przychodzą na rozmowę kwalifikacyjną, w większości znają języki: mamy w Jekaterynburgu dobrą szkołę podstawowych języków, dobre uczelnie. Ale szczerze mówiąc, kandydat na staż z dobrymi umiejętnościami technicznymi to rzadkość, przynajmniej w naszej okolicy epsilon. Weźmy na przykład Swift. Praca ze stringami jest w nim bardzo skomplikowana, a ludzi, którzy potrafią z nimi pracować bez zastanowienia, jest mało. Tacy natychmiast przyciągają uwagę. Często zadaję kandydatom na rozmowach kwalifikacyjnych zadanie związane z przetwarzaniem stringów. I przez cały czas był tylko jeden człowiek, który od razu, na kartce, potrafił napisać taki kod w Swift. Po tym chodziłem i wszystkim opowiadałem, że ktoś w końcu rozwiązał to zadanie w Swift na kartce.

Sprawdzanie algorytmów na rozmowie kwalifikacyjnej

To osobny temat, ponieważ kandydaci wciąż zadają pytanie – dlaczego zawsze oceniamy znajomość algorytmów i struktur danych? Nawet przyszli programiści mobilni i frontendowcy przechodzą taką kontrolę.

Misza:

Na rozmowie kwalifikacyjnej zawsze dajemy jakieś zadanie algorytmiczne. Kandydat musi wymyślić, jak zaimplementować je w Pythonie, najlepiej bez błędów. Musimy zrozumieć, jak sprawdzać swój program i samodzielnie go poprawiać.

Staże w IT: perspektywa kierownika

Doświadczenie w algorytmach przyda się od razu z trzech powodów. Po pierwsze, będzie oczywiście potrzebne w zadaniach algorytmicznych – które zdarzają się rzadko, ale jednak się zdarzają. Po drugie, programista będzie mógł skuteczniej rozwiązywać zadania związane z algorytmami, nawet jeśli nie będą wymagały zagłębiania się w same algorytmy (a takich jest już całkiem sporo). Po trzecie, jeśli nie uczono cię algorytmów na uczelni, a mimo to potrafisz nimi się posługiwać, to świadczy o twojej ciekawości i podniesie twój autorytet w oczach rozmówcy.

Denis:

Większość programowania mobilnego to "przenoszenie JSON-u". Ale co pół roku zdarzają się sytuacje, kiedy algorytmy są potrzebne. Aktualnie tworzę ładne mapy dla Yandex.Pogody. I w ciągu tygodnia musiałem zaimplementować algorytm wygładzania, algorytm Sazerlenda-Hodgmana i algorytm Martinetsa. Gdyby ktoś nie wiedział, czym jest hashmapa lub kolejka priorytetowa, utknąłby z tym na długo i nie wiadomo, czy poradziłby sobie bez pomocy z zewnątrz.

Algorytmy to podstawa programowania. To, co pozwala programiście być programistą. Nieważne, czym się zajmujesz. Są potrzebne nawet w prostych projektach, gdzie główną pracą jest "przenoszenie JSON-u". Nawet jeśli sam nie piszesz algorytmów, ale nieświadomie używasz jakichś struktur danych, warto je rozumieć. W przeciwnym razie będziesz tworzyć aplikacje, które działają wolno lub niepoprawnie.

Są programiści, którzy weszli w świat programowania w sposób akademicki: poszli na studia, uczciwie ukończyli pięć lat, zdobyli specjalność. Zna algorytmy, ponieważ je nauczyli. Zatem sama znajomość algorytmów nie charakteryzuje wizji świata człowieka; tę wizję trzeba sprawdzić w inny sposób.

Są też samouki, do których ja się zaliczam. Tak, formalnie mam wykształcenie IT, dyplom inżyniera-programisty. Jednak samoucy nauczyli się programować 'wbrew' wszystkiemu. Nie mieli uniwersyteckiego programu. Zwykle nie są zaznajomieni z algorytmami, ponieważ nigdy nie zetknęli się z koniecznością ich nauki. A kiedy taka osoba rozumie algorytmy, oznacza to, że poświęciła czas na ich zrozumienie. Po ukończeniu uniwersytetu zrozumiałem, że mam białe plamy w kwestii fundamentalnych algorytmów — to dlatego, że specjalność była stosunkowa. Zrobiłem kursy online na Uniwersytecie Princeton, znanych dzięki Robertowi Sedgewickowi. Zrozumiałem, zrobiłem wszystkie zadania. Kiedy na rozmowie kwalifikacyjnej ktoś opowiada podobną historię, od razu staje się to interesujące, pojawia się chęć pracy z nim lub przynajmniej kontynuowania rozmowy.

Staże w IT: perspektywa kierownika

Ihnat:

Kiedy przeprowadzasz rozmowę kwalifikacyjną z praktykantem, w pewnym sensie oczekujesz nawet więcej niż od doświadczonego programisty. Mowa o umiejętności rozwiązywania zadań algorytmicznych, szybkiego pisania chociażby jakiegoś poprawnego kodu. Kandydat na staż — jest w końcu jeszcze na uniwersytecie. Dosłownie rok temu wszystkiego o algorytmach uczono go w szczegółach. Oczekuje się, że będzie w stanie to odtworzyć. Jeśli człowiek jest odpowiedzialny i uważnie słuchał wykładów, po prostu będzie wiedział wszystko, wydobędzie to z pamięci podręcznej.

Jakie zadania rozwiązują praktykanci?

Zwykle program stażowy można zaplanować i omówić na końcowych rozmowach kwalifikacyjnych. Stażysta na początku pracy może otrzymać jedynie zadania treningowe, których wyniki nie będą wykorzystywane w produkcji. Co więcej — prawdopodobieństwo otrzymania takich zadań jest niewielkie. Najczęściej przydzielane są zadania z backlogu, czyli takie, które są uznane za warte uwagi, ale nie priorytetowe i „oddzielne” — tak, aby ich realizacja nie zależała od innych komponentów. Menedżerowie starają się je przydzielać w taki sposób, aby stażysta zapoznał się z różnymi częściami usługi i pracował w tym samym środowisku co inni członkowie zespołu.

Ihnat:

To niezwykle przydatne zadania. Może nie zwiększą wykorzystania klastra o 10%, nie zaoszczędzą milionów dolarów dla firmy, ale uszczęśliwią setki ludzi. Na przykład, mamy obecnie stażystę, który zajmuje się naszym klientem w celu uruchomienia operacji na naszych klastrach. Przed uruchomieniem operacja musi załadować pewne dane do klastra. Zwykle zajmuje to od 20 do 40 sekund, a wcześniej działo się to bezgłośnie: uruchamiasz to w konsoli i siedzisz, oglądając czarny ekran. Stażysta przyszedł i w ciągu dwóch tygodni stworzył funkcję: teraz widać, jak pliki są przesyłane i co się dzieje. Zadanie, z jednej strony, jest proste w opisie, a z drugiej — można nad nim popracować, sprawdzając różne biblioteki. Najprzyjemniejsze jest to, że to zrobiłeś, minął tydzień, jest to już na klastrach, ludzie z tego korzystają. Piszesz post na wewnętrzną sieć — mówią ci „dziękuję”.

Staże w IT: perspektywa kierownika

Misza:

Stażystów przygotowuje modele, zbiera dla nich dane, wymyśla metryki i przeprowadza eksperymenty. Stopniowo zaczynamy po prostu dawać mu więcej swobody i odpowiedzialności — sprawdzamy, czy sobie radzi. Jeśli tak — przechodzi na kolejny poziom. Nie zakładamy, że kiedy stażysta przychodzi, to już wszystko umie. Menedżer pomaga mu się orientować, daje link do wewnętrznego zasobu lub kursu online.

Jeśli stażysta pokazuje się z dobrej strony — mogą mu przydzielić coś priorytetowego, ważnego dla działu lub innych usług.

Dima:

Nasz stażysta aktualnie zajmuje się hardcore'owymi modyfikacjami systemu antyfraudowego. To system, który walczy z różnego rodzaju nadużyciami i oszustwami na usługach Yandex. Na początku myśleliśmy o powierzeniu mu prostszych i mniej istotnych zadań produkcyjnych. Zwykle staramy się z wyprzedzeniem przemyśleć zadania dla stażysty, ale zobaczyliśmy, że osoba ta "pali", szybko i sprawnie rozwiązuje problemy. W efekcie zaczęliśmy przydzielać mu uruchamianie systemu antyfraudowego dla nowych usług.

Ponadto istnieje niewielka szansa na otrzymanie zadania, do którego koledzy wcześniej nie podchodzili z powodu jego rozmiaru.

Dima:

Jest jeden stary system, a także nowy, jeszcze niedokończony. Konieczne jest przeprowadzenie migracji z jednego na drugi. W perspektywie to ważny projekt, chociaż z wysoką niepewnością: trzeba dużo rozmawiać, czytać nieznany kod legacy. Na końcowej rozmowie rekrutacyjnej szczerze powiedzieliśmy stażyście, że zadanie jest trudne. Odpowiedział, że jest gotowy, dołączył do naszej drużyny i wszystko mu się udało. Okazało się, że ma cechy nie tylko programisty, ale i menedżera. Był gotów samodzielnie dowiadywać się, pytać, pingować.

Mentoring stażysty

Stażysta potrzebuje mentora, aby zintegrować się z procesami. To osoba, która jest na bieżąco nie tylko z własnymi zadaniami, ale także z zadaniami stażysty. Z mentorem nawiązuje się regularny kontakt, zawsze można zwrócić się do niego o radę. Mentorem może być albo lider grupy (jeśli to mała grupa), albo ktoś z kolegów, stałych uczestników zespołu.

Ihnat:

Starając się przynajmniej co drugi dzień pytam, jak idzie stażyście. Jeśli widzę, że się zagłębia w problem, staram się pomóc, pytam, w czym tkwi problem, i razem z nim go rozwiązuję. Jasne jest, że to zabiera moją energię i sprawia, że praca stażysty nie jest tak efektywna – zgodnie z tym, że również tracę czas. Jednak pozwala to uniknąć problemów i uzyskać wyniki. I i tak jest to szybsze, niż gdybym to robił sam. Mi potrzebne jest na zadanie około 5 godzin. Stażysta zrobi to w 5 dni. I tak, poświęcę 2 godziny w ciągu tych 5 dni, aby porozmawiać z nim i pomóc. Ale przynajmniej 3 godziny zaoszczędzę, a stażysta będzie czuł się lepiej, że mu pomogłem. Ogólnie, trzeba po prostu dogłębnie rozmawiać i obserwować, co dana osoba robi, nie tracić kontaktu.

Staże w IT: perspektywa kierownika

Serioża:

Stażysta jest w stałym kontakcie ze swoim mentorem i rozmawia z nim kilkakrotnie w ciągu dnia. Mentor przegląda kod, angażuje się w programowanie w parach ze stażystą i pomaga, gdy pojawiają się trudności. Dzięki kombinacji wsparcia mentora i rzeczywistych zadań zawodowych uczymy przyszłych frontendowców.

Dima:

Aby stażysta nie czuł się porzucony, już przed zatrudnieniem rozmawiamy o tym, kto będzie jego mentorem. To również ogromny rozwój dla samego mentora: przygotowanie do roli lidera zespołu, sprawdzenie umiejętności utrzymania w głowie zarówno własnych zadań, jak i zadań stażysty. Organizujemy regularne spotkania, na które czasami również przychodzę, aby być na bieżąco. Jednak to mentor regularnie kontaktuje się ze stażystą. Na początku poświęca bardzo dużo czasu, ale to się opłaca.

Jednak posiadanie mentora nie oznacza, że wszystkie pojawiające się pytania są rozwiązywane przez niego.

Misza:

U nas panuje zwyczaj, że osoby, które napotkały problem, pytają o radę sąsiadów, kolegów i szybko znajdują pomoc. Im szybciej osoba się rozwija, tym częściej musi udać się do kolegów, aby uzyskać nowe informacje. Samo poznawanie zadań innych osób jest przydatne, aby wymyślić nowe zadania. Kiedy stażysta sam potrafi się porozumieć, zrozumieć, co jest ważne dla drugiej strony, i dojść do wyniku w zespole, znacznie szybciej się rozwija niż ten, za którego wszystko musi robić kierownik.

Serioża:

Jest dokumentacja, ale większa część informacji jest rozproszona w powietrzu. Jeśli przyswajasz ją na początku kariery, to dodatkowa zaleta, a my możemy skupić osobę na tym, co naprawdę warto zgłębić.

Idealny stażysta to ten, kto odbywa staż przez kilka miesięcy, staje się młodszym programistą, a potem po prostu programistą, następnie liderem grupy itd. Potrzebny jest archetyp ucznia, który nie wstydzi się pytać, jeśli coś jest dla niego niejasne, ale jednocześnie potrafi pracować samodzielnie. Jeśli powiedziano mu, że może to przeczytać gdzie indziej, pójdzie, poczyta i rzeczywiście wróci z nową wiedzą. Może popełniać błędy, ale nie powinien popełniać ich więcej niż jeden, maksymalnie dwa razy w tym samym miejscu. Idealny stażysta powinien się rozwijać, chłonąć wszystko jak gąbka, uczyć się i rosnąć. Ten, kto siedzi, próbuje wszystko zrozumieć sam, długo się boryka, nie zadaje żadnych pytań, raczej się u nas nie utrzyma.

Zakończenie stażu

Przed rozpoczęciem pracy podpisujemy z każdym stażystą umowę na czas określony. Oczywiście, staż jest płatny, jest formalnie zarejestrowany zgodnie z Kodeksem Pracy Federacji Rosyjskiej, a stażysta ma te same przywileje, co każdy inny pracownik Yandexu. Po trzech miesiącach program się kończy — wielu stażystów następnie zatrudniamy na stałe (na umowę bezterminową).

Staże w IT: perspektywa kierownika

Z jednej strony, dla kierownika ważne jest, aby programista wykonał swoje stażowe minimum. Właśnie do tego prowadzi stażystę, zaczynając od rozmowy kwalifikacyjnej. Jednak to dopiero początek historii. Stażysta dla nas zawsze jest potencjalnym kandydatem do zatrudnienia. Minimalny program dla kierownika — już na samym początku dostrzec taką osobę, którą po trzech miesiącach będzie można polecić do innych działów. Program maksymalny — zatrzymać go w tej samej drużynie, zatrudniając go na stałe. Przy tym uwzględniamy, że student drugiego lub trzeciego roku — nawet jeśli stał się stażystą — z nadejściem roku szkolnego będzie musiał kontynuować naukę na uniwersytecie.

Serioża:

Przede wszystkim stażyści to dla nas potencjał kadrowy. Staramy się wychować ludzi w Yandexie, aby idealnie pasowali do naszych zadań. Dajemy im wszystko, od kultury komunikacji i współpracy w zespołach po encyklopedyczną wiedzę o wszystkich naszych systemach.

Ihnat:

Kiedy bierzemy stażystę, od razu oceniamy, czy może on dołączyć do naszego zespołu. Zazwyczaj jedyną przeszkodą jest brak wolnych miejsc. Staramy się zatrudniać głównie młodych ludzi. Jeśli ktoś ma pięć lat doświadczenia w programowaniu i przychodzi do Yandexu, a mimo to jest na poziomie stażysty, to niestety oznacza dla nas, że - nawet jeśli to świetna osoba - nie będzie w stanie awansować na starszego programistę. Zwykle chodzi o tempo: powolny rozwój w przeszłości oznacza powolny rozwój także u nas. Tak, czasami zrozumienie, że ktoś nie podoła, przychodzi dopiero po trzech miesiącach. Ale to dość rzadko się zdarza. W więcej niż połowie przypadków jesteśmy gotowi zatrudniać ludzi na stałe. Z mojego doświadczenia nie było takiego przypadku, by stażysta ukończył staż z sukcesem, ale nie przeszedł rozmowy kwalifikacyjnej na stałe stanowisko.

Misza:

Każdemu udanemu stażyście proponujemy pozostanie w firmie. Po odbyciu stażu zazwyczaj zatrudniamy na pełen etat ponad połowę z nich. Z letnim stażem jest trudniej, ponieważ często przychodzą do nas studenci, na przykład z trzeciego roku, którzy mają trudności w łączeniu pracy z nauką.

Dima:

Załóżmy, że stażysta doskonale radzi sobie z zadaniami i ma wiele perspektyw, aby stać się dobrym programistą - nawet jeśli obecnie ma niewystarczające doświadczenie. I załóżmy, że nie ma wolnego miejsca na umowę na czas nieokreślony. W takim razie sprawa jest prosta: muszę podejść do swojego przełożonego i powiedzieć mu - to naprawdę świetna osoba, musimy za wszelką cenę ją zatrzymać, zaproponujmy jej coś, znajdźmy sposób, aby ją zatrudnić.

Historie o stażystach

Denis:

Dziewczyna, która rozpoczęła u nas staż w 2017 roku, była z Permu. To około 400 kilometrów na zachód od Jekaterynburga. Co tydzień przyjeżdżała do nas pociągiem z Permu do Szkoły Mobilnego Programowania. Przyjeżdżała w dzień, wieczorem się uczyła, a późnym wieczorem wracała z powrotem. Doceniając ten zapał, zaprosiliśmy ją do pracy, co okazało się właściwą decyzją.

Ihnat:

Kilka lat temu braliśmy udział w programie wymiany stażystów. Praca z zagranicznymi młodymi ludźmi była interesująca. Ale stażyści stamtąd nie są lepsi niż na przykład z SHAD-a czy FKNa. Mogłoby się wydawać, że EPFL znajduje się w pierwszej dwudziestce uczelni w Europie. W tamtym momencie — jako jeszcze dość niedoświadczony rozmówca — miałem takie oczekiwania: niesamowite, przeprowadzamy rozmowy z ludźmi z EPFL, oni będą super. Ale osoby, które zdobyły podstawowe wykształcenie z kodowania u nas — w tym w kluczowych regionalnych uczelniach — okazują się być na dobrym poziomie.

Albo inna historia. Aktualnie w mojej firmie pracuje młody chłopak, ma chyba około 20 lat. Pracuje w Petersburgu, przyjechał na staż. Jest naprawdę świetny. Jak zwykle zadajesz mu zadania, on je rozwiązuje, a po miesiącu przychodzi i mówi: rozwiązałem, patrzę i wydaje mi się, że wasza architektura jest źle zbudowana. Zróbmy to od nowa. Kod stanie się prostszy i bardziej przejrzysty. Oczywiście starałem się go od tego odwieść: pracy do wykonania jest dużo, a korzyści dla użytkowników brak, ale pomysł brzmi absolutnie sensownie. Zrozumiał skomplikowany proces wielowątkowy i zaproponował ulepszenia — może i nietrafne, refaktoryzacja dla samej refaktoryzacji. Ale gdy tylko będzie trzeba ten kod skomplikować, można będzie przeprowadzić tę refaktoryzację. Po kilku miesiącach zajęliśmy się tym zadaniem. Z przyjemnością przyjąłem go do zespołu. My wszyscy nie jesteśmy geniuszami. Można przyjść, zrozumieć coś i zwrócić nam uwagę na nasze problemy. To jest doceniane.

Misza:

Mamy czasami takich idealnych stażystów. Pomimo braku doświadczenia, widzą zadanie nie tylko na poziomie technicznym, ale i globalnym. Proponują bardzo istotne ulepszenia. Rozumieją, jak przenieść zadania z realnego świata do technicznego, nie tracąc sensu. Zastanawiają się, jaki jest ostateczny cel, czy warto teraz zagłębiać się w szczegóły, czy można całkowicie zmienić podejście do zadania lub nawet jego sformułowanie. Oznacza to, że mają potencjał, aby znaleźć się na kilka poziomów wyżej. Aby przejść tę drogę, muszą po prostu rozwijać pewne umiejętności i narzędzia wewnętrzne. Dodatkowo uruchomić kilka udanych projektów.

Staże w IT: perspektywa kierownika

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster