Стажировка в IT: поглед на ръководителя

Стажировка в IT: поглед на ръководителя

Набор за летен стаж в Яндекс продължава. Той върви по пет направления: бекенд, ML, мобилно развитие, фронтенд и анализ. В този блог, в други блогове на Хабра и извън него можете да намерите много инсайдерска информация за това как протича стажът. Но много в този процес остава загадка за тези, които не работят в компанията. А ако погледнем от гледна точка на ръководителите на разработки, ще възникнат още повече въпроси. Как правилно да се провежда стажът, как да се максимизира взаимната полезност със стажанта, как да успеем да го опознаем за три месеца и да го обучим на всичко, което е необходимо за продължаване на работата?

Подготвихме тази статия в петима. Нека се представим: Игнат Колесниченко от службата за технологии на разпределените изчисления, Миша Левин от службата за машинен интелект на Маркета, Денис Малых от службата за разработка на приложения, Серьожа Бережной от отдела за разработка на търсачки и Дима Черкасов от групата за разработка на антифрод. Всеки от нас представлява своето направление на стажа. Всички сме ръководители, нуждаем се от стажанти и имаме известен опит в работата с тях. Нека разкажем малко от този опит.

Интервюто преди стажа

Кандидатите очакват няколко технически интервюта. Успехът на интервюто зависи в по-малка степен от софт скилсове (умения за ефективна комуникация) и в по-голяма степен — от хард скилсове (умения в математиката и програмирането). Въпреки това ръководителите оценяват и двете.

Игнат:

Дори ако човек е много талантлив, но абсолютно некоммуникативен — той няма да може да приложи всичките си умения. На това, разбира се, обръщаме внимание, но това не е повод да не вземем някого на стаж. За три месеца всичко може да се промени, освен това, първоначалното ви впечатление може да се окаже грешно. А ако всичко е вярно — ще трябва да обясните на човека, да потърсите други отбори за него. За стажантите комуникацията определено не е ключов фактор. В крайна сметка професионалните умения са много по-важни.

Денис:

Харесват ми хората, които разказват истории — в добрия смисъл. Човек, който може да разкаже как е успял заедно с екипа си да се справи с някой проблем, е интересен. Започвам да задавам допълнителни въпроси, когато изскочи такава история. Но това рядко се случва, ако просто попиташ "разкажи нещо интересно за твоите проекти".

Един кандидат веднъж произнесе забележителна фраза, която дори записах: "Успешно избягвах решаването на досадни задачи."

Стажировка в IT: поглед на ръководителя

Тъй като времето за общуване е ограничено, интервюиращият се опитва да получи полезна информация за кандидата всяка минута от срещата. Бъдете сигурни, че стажантът предварително е помислил за какви детайли от опита си (не от автобиографията) би могъл да сподели. Трябва да е кратък разказ, точно по тема.

Денис:

Обърсвам внимание, ако човекът разказва, че е опитвал много езици, подходи. Хората с по-широк кръгозор измислят по-елегантни решения в реално време. Но това не е еднозначно предимство. Може да се повърхностно да се научи нещо, без всъщност да усвоява сериозно.

Времето за историите, които Денис описва, обикновено остава само за последното интервю. До тогава трябва да се демонстрират основните и практически познания, които ще легнат в основата на бъдещата работа. И разбира се, ще се наложи да пишете код на дъската или на лист хартия.

Миша:

Ние проверяваме знанието за теорията на вероятностите и математическата статистика. Дали кандидатът има опит с метрики, с алгоритми за машинно обучение, с настройка на техните параметри, с преобучение и т.н. Очакваме, че човекът може да пише код в достатъчна степен, за да бъде аналитик.

Денис:

Хората, които идват на интервюта, основно знаят езици: в Екатеринбург имаме добра школа по основни езици и отлични институти. Но ако трябва да бъда искрен, кандидат за стаж с добри hard skills е рядкост, поне в нашата епсилон-околия. Например, Swift. Тук работата със стрингове е много сложна и малко хора могат да работят с тях от глава. Именно такива веднага привлекат вниманието. Често давам задача на интервюта, която е свързана с обработка на стрингове. И през времето, в което провеждам интервюта, само един човек успя веднага, на лист хартия, да напише такъв Swift код. След това ходих и на всички разказвах, че някой най-накрая успя да реши тази задача на Swift на лист хартия.

Проверка на алгоритмите на интервюто

Това е отделна тема, тъй като кандидатите все още задават въпроса — защо винаги оценяваме знанието на алгоритми и структури от данни? Дори бъдещите мобилни разработчици и фронтендери преминават през такава проверка.

Миша:

На интервюто задължително даваме някаква алгоритмична задача. Кандидатът трябва да измисли как да я реализира на Python, за предпочитане без грешки. Трябва да разберем как да проверим програмата си и да я коригираме сами.

Стажировка в IT: поглед на ръководителя

Опитът с алгоритмите ще бъде полезен по три причини. Първо, очевидно ще е необходим в алгоритмичните задачи — които не са чести, но все пак съществуват. Второ, разработчикът ще може по-ефективно да решава задачи, свързани с алгоритми, дори и те да не изискват да се задълбочават в самите алгоритми (а такива вече има доста). Трето, ако не сте изучавали алгоритми в университета, но все пак умеете да работите с тях, това показва, че сте любознателен човек и ще повиши авторитета ви в очите на интервюиращия.

Денис:

Голяма част от мобилната разработка е "пренастройване на JSON". Но веднъж на шест месеца има случаи, когато алгоритми са необходими. В момента рисувам красиви карти за Яндекс.Прогнозата за времето. И за една седмица трябваше да реализирам алгоритъм за изглаждане, алгоритъм на Сазърланд-Ходгман и алгоритъм на Мартинес. Ако човекът не знаеше какво е хешмап или опашка с приоритети, щеше да се затрудни дълго, и не е ясно дали щеше да се справи сам без външна помощ.

Алгоритмите са основата на разработката. Те помагат на разработчика да бъде такъв. Няма значение с какво се занимавате. Те са необходими и в несложни проекти, където основната работа се състои в "пренасочване на JSON". Дори ако не пишете сами алгоритми, но неосъзнато използвате някакви структури от данни, е по-добре да ги разбирате. В противен случай приложенията, които създавате, ще работят бавно или неправилно.

Има програмисти, които са влезли в разработката академично: записали са се в университета, учели са честно пет години и са получили специалност. Те знаят алгоритми, защото са ги учили. Но това знание за алгоритми не характеризира кръгозора на човека, трябва да проверявате този кръгозор по друг начин.

Има и самоучки, към които причислявам и себе си. Да, формално имам IT-образование, диплома като инженерен програмист. Но самоучките са се научили да програмират "въпреки всичко". Те нямат университетска програма. Обикновено не са запознати с алгоритмите, защото никога не са имали нужда да ги изучават. Когато такъв човек разбира алгоритмите, това означава, че е отделил време, за да ги усвои. След като завърших университета, осъзнах, че имам бели петна в частта на фундаменталните алгоритми - проблемът е, че специалността беше приложна. Отидох и изучих онлайн курсовете на Принстънския университет, известния Robert Sedgewick. Разбрах всичко, направих всички домашни задания. И когато човек на интервю разказва подобна история, веднага ми става интересно, появява се желание да работя с него или поне да продължа разговора.

Стажировка в IT: поглед на ръководителя

Игнат:

Когато провеждате интервю с интерн, в известен смисъл очаквате дори повече, отколкото от опитен разработчик. Става въпрос за способността да решава алгоритмични задачи, бързо да пише коректен код. Кандидатът за стаж - той все още е в университета. Точно година по-рано са му разказвали всичко за алгоритмите в детайли. Очаква се, че той може да ги възпроизведе. Ако човекът е адекватен и е слушал лекциите внимателно, той просто ще знае всичко, ще го извлече от кеша.

Какви задачи решава стажантът

Обикновено програма за стажуване може да бъде планирана и обсъдена на финалните интервюта. На стажанта в началото на работата може да се предоставят тренировъчни задачи, чийто резултат няма да бъде използван в продукцията. Освен това, вероятността да получи такива задачи е ниска. Най-често се дават реални проекти от беклога, тоест признати за важни, но не приоритетни и "отделими" — така че реализацията им да не зависи от други компоненти. Ръководителите се опитват да разпределят задачите така, че стажантът да се запознае с различни части на услугата, работейки в едно обкръжение с другите членове на екипа.

Игнат:

Тези задачи наистина са полезни. Може би няма да увеличат използването на клъстера с 10%, няма да спестят милион долара на компанията, но ще направят стотици хора щастливи. Например, в момента имаме стажант, който работи с клиент, за да стартира операции на нашите клъстери. Преди стартиране, операцията трябва да зареди определени данни в клъстера. Обикновено това отнема 20–40 секунди и преди се случваше безшумно: просто я пускаш в конзолата и седиш, гледайки в черния екран. Стажантът дойде и за две седмици направи функция: сега се вижда как файловете се качват и какво се случва. Задачата, от една страна, е несложна в описанието, а от друга — има какво да се изследва, кои библиотеки да се погледнат. Най-доброто е, че си го направил, минала е седмица, това е вече на клъстерите и хората вече го използват. Пишеш пост в вътрешната мрежа — и ти казват благодаря.

Стажировка в IT: поглед на ръководителя

Миша:

Стажантите подготвят модели, събират данни за тях, измислят метрики и провеждат експерименти. Постепенно започваме да им даваме повече свобода и отговорност — проверяваме дали се справят. Ако да — преминават на следващото ниво. Не предполагаме, че когато стажантът дойде, той знае всичко това. Ръководителят му помага да се ориентира, предоставя му линк към вътрешен ресурс или онлайн курс.

Ако стажантът демонстрира отлични резултати — може да му бъде предоставена нещо приоритетно, важно за отдела или за други услуги.

Дима:

Нашият стажант в момента работи по сложни доработки на антифрод системата. Това е система, която се бори с различни злоупотреби и измами в услугите на Яндекс. Първоначално мислехме да даваме не много сложни и не особено важни задачи за продукцията. Стремим се предварително да обмислим задачите на стажанта, но видяхме, че той „изпепелява“, бързо и успешно решава задачи. В резултат назначихме да стартира антифрод за нови услуги.

Освен това, съществува малък шанс да получи задача, за която колегите по-рано не са се заемали поради обема й.

Дима:

Има стара система и нова, все още незавършена. Необходимо е да се извърши прехвърляне от едната на другата. В перспектива това е важен проект, въпреки че с висока несигурност: необходима е много комуникация, четене на неразбираем легаси код. На финалното интервю честно казахме на стажанта, че задачата е сложна. Той отговори, че е готов, присъедини се към екипа ни и успя. Оказа се, че има качества не само на разработчик, но и на мениджър. Беше готов сам да ходи, да пита, да пингва.

Наставничество на стажанта

На стажанта му е нужен ментор, за да се потопи в процесите. Това е човек, който е запознат не само със задачите си, но и със задачите на стажанта. С менторa е установена редовна комуникация, винаги може да се обърне за съвет. Ментор може да бъде или ръководителят на групата (ако е малка група), или някой от колегите, постоянни участници в екипа.

Игнат:

Опитвам се поне през ден да подхождам, да питам как е стажантът. Ако видя, че е затрупан, се опитвам да му помогна, да питам какъв е проблемът и заедно да го решим. Ясно е, че това отнема моите сили и прави работата на стажанта не толкова ефективна интегрално — и аз също губя време. Но поне така той няма да затъне, а ще постигне резултати. И въпреки това е по-бързо, отколкото ако го правех сам. На мен ми трябват условно 5 часа за задачата. Стажантът ще я направи за 5 дни. И да, ще похарча 2 часа през тези 5 дни, за да разговарям със стажанта и да помогна. Но поне 3 часа ще спестя и стажантът ще се радва, че му е подсказано и му е помогнато. Като цяло, трябва просто да комуникираме активно, да наблюдаваме какво прави човекът, да не губим контакт.

Стажировка в IT: поглед на ръководителя

Сергей:

Стажантът е постоянно на връзка със своя ментор и комуникира с него няколко пъти на ден. Менторът преглежда кода, занимава се с двойно програмиране с стажанта и помага, когато възникнат проблемни места. Именно по този начин, чрез комбиниране на помощ от ментора и реални работни задачи, обучаваме фронтендери.

Дима:

За да не остане стажантът изоставен, дори преди наемането обсъждаме кой ще бъде неговият ментор. Това също така е голямо предизвикателство за самия ментор: подготовка за ролята на тимлид, проверка на способността му да запази в ума си както собствените задачи, така и задачите на стажанта. Има редовни срещи, на които понякога присъствам и аз самият, за да бъда в течение. Но менторът общува изцяло и редовно със стажанта. Той в началото отделя много време, но това се изплаща.

Въпреки това, наличието на ментор не означава, че всички възникващи въпроси се решават чрез него.

Миша:

В нас е прието, че хората, изправени пред проблем, питат съседите, колегите за съвет и бързо намерят помощ. Колкото по-бързо расте човек, толкова по-често му е нужно да отиде при колегите и да научи нещо. Полезно е дори просто да се запознае с задачите на другите, за да измисли нови задачи. Когато стажантът сам може да се уговори, да разбере какво е важно за другата страна и да достигне до резултат в екипа, той ще израсне много по-бързо, отколкото онзи, за когото всичко това трябва да прави ръководителят.

Сергей:

Съществува документация, но по-голямата част от информацията е разпъната във въздуха. Ако я усвоиш в началото на кариерата си, това е допълнително предимство, а ние можем да насочим човека към това, което трябва да изучи.

Идеалният стажант е този, който стажува няколко месеца, става младши разработчик, после просто разработчик, после ръководител на екип и т.н. За това е нужен архетип на ученика, който не се срамува да пита, ако нещо му е неясно, но същевременно е способен на самостоятелна работа. Ако му кажат, че може да прочете нещо на определено място, той ще отиде, ще прочете и наистина ще се върне с нови знания. Той може да греши, но не трябва да греши повече от веднъж, максимум два пъти на едно и също място. Идеалният стажант трябва да се развива, да усвоява всичко като гъба, да учи и да расте. Този, който седи, опитва се сам да разбере всичко, дълго се колебае, не задава никакви въпроси, едва ли ще успее.

Край на стажировката

Преди да започнем работа, подписваме с всеки стажант срочен договор. Разбира се, стажировката се заплаща, оформя се по ТК на Руската федерация, и стажантът получава същите предимства като всички други служители на Яндекс. След три месеца програмата завършва — много от стажантите след това преминават в щат (на безсрочен договор).

Стажировка в IT: поглед на ръководителя

От една страна, за ръководителя е важно, разработчикът да изпълни своя стажантски минимум. Именно към това води стажанта, започвайки от интервюто. Въпреки това, това е само началото на историята. Стажантът за нас винаги е потенциален кандидат за щат. Минималната програма за ръководителя е да забележи такъв човек в самото начало, когото след три месеца не би било срамно да препоръча в други отдели. Максималната програма е да го запазят в същия екип, като го приемат в щат. При това вземахме предвид, че студентът от втори или трети курс — дори и да е станал стажант — с настъпването на учебната година ще трябва да продължи обучението си в университета.

Сергей:

На първо място, стажантите за нас са кадрови потенциал. Опитваме се да отгледаме хора вътре в Яндекс, за да се вписват идеално в нашите задачи. Даваме им всичко, започвайки от културата на общуване и взаимодействие в екипите до енциклопедични знания за всичките ни системи.

Игнат:

Когато приемаме стажант, ние веднага го подготвяме за работа в нашия екип. Обикновено единственото препятствие е липсата на налични позиции. Стремим се да наемаме млади хора за стажанти. Ако някой има пет години опит в разработката и идва при нас като стажант, за съжаление, това означава, че дори и да е способен, с пет години опит в Яндекс, няма да е в състояние да се издигне до старши разработчик. Обикновено става въпрос за скорост: бавен растеж в миналото означава бавен растеж и при нас. Да, понякога разбирането, че човек не се справя, идва едва след три месеца. Но това е доста рядко. В повече от половината случаи сме готови да наемем хора на постоянен договор. Спомням си, че никога не е имало случай, в който стажантът да се справи успешно, а след това да не успее да премине интервюто за постоянна позиция.

Миша:

На всички успешни стажанти предлагаме да останат в компанията. След стажовете обикновено взимаме повече от половината на работа на пълен работен ден. Лятната стажировка е по-трудна, защото често получаваме студенти, например, от трети курс, които имат трудности да съчетават работа с учения.

Дима:

Да предположим, че стажантът се справя отлично с задачите и има много перспективи да се издигне в добър разработчик — дори и сега да му липсва опит. И да предположим, че няма вакантна позиция за постоянен договор. Тогава просто: трябва да отида при моят ръководител и да му кажа — ето един страхотен човек, трябва да направим всичко възможно, за да го задържим, нека му предложим нещо, да намерим как да го интегрираме.

Истории за стажанти

Денис:

Момичето, което започна стаж при нас през 2017 година, е от Перм. Това е на около 400 километра западно от Екатеринбург. Всеки седмица тя пътуваше до нас от Перм с влак за Школата по мобилна разработка. Пристигането й беше през деня, учеше вечер и късно вечерта заминаваше обратно. Оценявайки такава амбиция, я поканихме да работи и това се оправда.

Игнат:

Преди няколко години участвахме в програма за обмен на стажантите. Да работиш с чуждестранни млади хора беше интересно. Но стажантите оттам не се различават значително от тези, например, от ШАДа или ФКНа. На пръв поглед, EPFL е класирана сред топ 20 университети в Европа. В онзи момент — както и при не много опитен интервюиращ — имах очакването, че ще интервюираме хора от EPFL, те ще бъдат супер яки. Но хората, които получават основно образование по програмиране у нас — вкл. и в ключови регионални университети — се оказват в съвсем добра форма.

Или друга история. В момента в екипа ми има млад мъж, само на около 20 години. Работи в Санкт Петербург, дойде при нас на стаж. Той е много талантлив. Както обикновено, даваш на човек задачи, той ги решава, а след месец идва и казва: разреших ги, гледам, и ми се струва, че архитектурата ви е зле построена. Нека го преработим. Кодът ще стане по-прост и ясен. Разбира се, опитах да го разубедя: обемът на работа е голям, ползата за потребителите е малка, но идеята звучи напълно разумно. Човекът се е запознал със сложния многопоточен процес и е предложил подобрения — може би не е точният момент, рефакторинг заради рефакторинга. Но веднага щом пожелаем да усложним този код, можем да направим този рефакторинг. По същество изминаха няколко месеца и ние се заемахме с тази задача. С удоволствие го приех в екипа. Ние не сме гении. Можеш да дойдеш, да се запознаеш с нещо и да ни посочиш проблемите. Това е ценно.

Миша:

Имаме идеални стажанти. Въпреки липсата на опит, те виждат задачата не само на техническо, но и на глобално ниво. Предлагат принципни подобрения. Те разбират как да прехвърлят задачи от реалния свят в техническия, без да загубят смисъла. Размишляват за крайната цел, дали в момента е уместно да се задълбочават в детайли или е възможно напълно да променят подхода към задачата или дори формулировката на задачата. Значи, те имат потенциал да достигнат до няколко нива по-високо. За да преминат този път, просто трябва да развият някои умения и вътрешни инструменти. Плюс да реализират няколко успешни проекта.

Стажировка в IT: поглед на ръководителя

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster