Стажування в ІТ: погляд керівника

Стажування в ІТ: погляд керівника

Набір літнє стажування в Яндекс продовжується. Він йде за п'ятьма напрямками: бекенд, ML, мобільна розробка, фронтенд та аналітика. У цьому блозі, в інших блогах на Хабрі та за його межами можна знайти чимало інсайду про те, як відбувається стажування. Але багато в цьому процесі залишається загадкою для тих, хто не працює в компанії. А якщо подивитися з погляду керівників розробки, виникає ще більше питань. Як правильно проводити стажування, як максимізувати взаємну корисність зі стажером, як встигнути впізнати його за три місяці та навчити всьому, що потрібно для продовження роботи?

Ми підготували цю статтю п'ятьох. Представимося: Гнат Колесніченко зі служби технологій розподілених обчислень, Михайло Левін зі служби машинного інтелекту Маркета, Денис Малих зі служби розробки додатків, Сергій Бережний із відділу розробки пошукових інтерфейсів та Діма Черкасів із групи розробки антифроду. Кожен із нас представляє свій напрямок стажування. Ми всі керівники, нам потрібні стажери, і ми маємо певний досвід роботи з ними. Давайте розповімо дещо з цього досвіду.

Співбесіда перед стажуванням

Кандидатів чекає кілька технічних співбесід. Успіх на співбесіді залежить меншою мірою від soft skills (здатності ефективно комунікувати) і більшою – від hard skills (навичок у математиці та програмуванні). Проте керівники оцінюють і те, й інше.

Гнат:

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

Денніс:

Мені подобаються люди, які розповідають байки – у хорошому розумінні. Людина, яка може розповісти, як вони з командою героїчно впоралися з якимось факапом, цікава. Я починаю ставити додаткові питання, коли така історія спливає. Але це рідко відбувається, якщо просто попросити «розповісти про щось цікаве у твоїх проектах».

Один кандидат однажды произнёс замечательную фразу, которую я даже записал: «Успешно избегал решения нудных задач».

Стажування в ІТ: погляд керівника

Оскільки часу на спілкування мало, співрозмовник щохвилини зустрічі намагається отримати корисну інформацію про кандидата. Здорово, якби стажер заздалегідь прикинув, якими деталями свого досвіду (не з резюме) він міг би поділитися. Це має бути коротка розповідь суворо у справі.

Денніс:

Я обращаю внимание, если человек рассказывает, что попробовал много языков, подходов. Люди с более широким кругозором придумывают в боевом режиме более элегантные решения. Но это неоднозначный плюс. Можно похватать по верхам, а всерьёз ничему не научиться.

Час на історії, які описує Денис, зазвичай залишається тільки на фінальній співбесіді. До того часу потрібно продемонструвати ті фундаментальні та практичні знання, які ляжуть в основу майбутньої роботи. І, звичайно, потрібно писати код на дошці або на аркуші паперу.

миша:

Ми перевіряємо знання теорії ймовірності та математичної статистики. Дивимося, чи має людина досвід роботи з метриками, з алгоритмами машинного навчання, з налаштуванням їх параметрів, з перенавчанням і т. д. Ми очікуємо, що людина може писати код достатньою мірою для того, щоб бути аналітиком.

Денніс:

Ті, хто приходить на співбесіду, переважно знають мови: у нас в Єкатеринбурзі хороша школа основних мов, хороші інститути. Але, якщо чесно, кандидат на стажування з хорошими hard skills — рідкісний випадок, принаймні в нашому епсілон-околиці. Ось наприклад, Swift. У ньому дуже складна робота з рядками, і людей, які навскідку з голови можуть з ними попрацювати, мало. За таких одразу чіпляється око. Я часто даю на співбесідах завдання, яке саме пов'язане з обробкою рядків. І за весь час була тільки одна людина, яка відразу, на листочку, змогла такий Swift-код написати. Я після цього ходив і всім розповідав, що хтось зрештою зміг вирішити це завдання на Swift на листочку.

Перевірка алгоритмів на співбесіді

Це окрема тема, оскільки у кандидатів, як і раніше, виникає питання — чому ми завжди оцінюємо знання алгоритмів та структур даних? Навіть майбутні мобільні розробники та фронтендери проходять таку перевірку.

миша:

На співбесіді обов'язково даємо якесь алгоритмічне завдання. Кандидату треба вигадати, як її реалізувати на Python, бажано без помилок. Потрібно зрозуміти, як перевіряти свою програму та самостійно її виправляти.

Стажування в ІТ: погляд керівника

Досвід в алгоритмах стане в нагоді відразу з трьох причин. По-перше, він, очевидно, буде потрібний в алгоритмічних завданнях — які бувають нечасто, але таки бувають. По-друге, розробник зможе ефективніше розв'язувати завдання, що стосуються алгоритмів, нехай не вимагають залазити в самі алгоритми (а таких вже досить багато). По-третє, якщо вам не викладали алгоритми у вузі, а ви все-таки вмієте з ними працювати, це характеризує вас як допитливу людину і підніме ваш авторитет в очах співрозмовника.

Денніс:

Більшість мобільної розробки - це "перекладання JSON". Але раз на півроку трапляються випадки, коли алгоритми потрібні. Я зараз малюю гарні карти для Яндекс.Погоди. І мені за тиждень довелося реалізувати алгоритм згладжування, алгоритм Сазерленд-Ходгмана та алгоритм Мартінеса. Якби людина не знала, що таке хешмап чи черга за пріоритетами, вона б засіла з цим надовго і незрозуміло, чи впоралася б без сторонньої допомоги.

Алгоритми – основа розробки. Це те, що допомагає розробнику бути розробником. Не має значення, чим ви займаєтеся. Вони потрібні й у нескладних проектах, де основна робота складається із «перекладання JSON». Навіть якщо ви не пишете самі алгоритми, але неявно використовуєте якісь структури даних, то краще їх розуміти. Інакше у вас будуть виходити програми, які повільно чи некоректно працюють.

Є програмісти, які у розробку прийшли академічно: вступили до універу, чесно відучилися п'ять років, здобули спеціальність. Вони знають алгоритми, оскільки їх навчили. І тоді саме знання алгоритмів ніяк не характеризує кругозір людини, треба цей кругозір перевіряти іншим способом.

А є самоучки, до яких я зараховую і себе. Так, формально я маю IT-освіту, диплом інженера-програміста. Але самоучки програмувати навчилися «всупереч». Вони не мали університетської програми. Зазвичай вони з алгоритмами не знайомі тому, що ніколи не стикалися з необхідністю їх вивчити. І коли така людина розуміє алгоритми, це означає, що вона витратила час і в них розібралася. Закінчивши універ, я зрозумів, що маю білі плями в частині фундаментальних алгоритмів — річ у тому, що спеціальність була прикладна. Я пішов і вивчив онлайн-курси університету Прінстона, добре відомого Роберта Седжвіка. Розібрався, зробив усі хатинки. І коли людина на співбесіді розповідає схожу історію, мені одразу стає цікаво, з'являється бажання з нею попрацювати чи хоча б продовжити розмову.

Стажування в ІТ: погляд керівника

Гнат:

Коли співбесідуєш стажера, у певному сенсі очікуєш навіть більше, ніж досвідченого розробника. Йдеться про вміння вирішувати алгоритмічні завдання, швидко писати хоч якийсь коректний код. Кандидат на стажування — адже він ще в університеті. Буквально рік тому йому все про алгоритми розповідали у деталях. Очікується, що він їх може відтворити. Якщо людина адекватна і слухала лекції уважно, вона просто все знатиме, діставатиме з кешу.

Які завдання вирішує стажер

Зазвичай програму стажування можна намітити та обговорити на фінальних співбесідах. Стажеру тільки на початку роботи можуть дістатись тренувальні завдання, результат яких не буде задіяний у продакшені. Більше того, ймовірність отримати такі завдання невелика. Найчастіше даються бойові проекти з беклогу, тобто визнані вартими уваги, але не пріоритетні та «відокремлені», щоб від їхньої реалізації не залежали інші компоненти. Керівники намагаються розподіляти їх так, щоби стажер познайомився з різними частинами сервісу, працював в одному оточенні з іншими учасниками команди.

Гнат:

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

Стажування в ІТ: погляд керівника

миша:

Стажери готують моделі, збирають для них дані, вигадують метрики та проводять експерименти. Поступово ми просто починаємо давати йому більше свободи та відповідальності – перевіряємо, чи справляється він. Якщо так, він переходить на наступний рівень. Ми не припускаємо, що коли стажер приходить, він усе це вміє. Керівник допомагає йому розібратися, дає посилання на внутрішній ресурс чи онлайн-курс.

Якщо стажер показує себе на висоті, йому можуть дати щось пріоритетне, важливе для відділу або інших сервісів.

Діма:

Наш стажер зараз займається хардкорними доробками антифроду. Це система, яка бореться з різним аб'юзом і шахрайством на сервісах Яндекса. Спочатку думали давати не дуже складні та не дуже важливі для продакшену речі. Ми заздалегідь намагаємося продумати завдання стажера, але тут побачили, що людина «палить», швидко і добре вирішує завдання. Через війну ми почали доручати йому запуск антифроду нових сервісів.

Крім того, існує невеликий шанс отримати завдання, до якого колеги раніше не підступали через його обсяг.

Діма:

Є одна стара система, а є нова, ще не дороблена. Потрібно провести переїзд із однієї на іншу. У перспективі це важливий проект, хоч із високою невизначеністю: потрібно багато спілкуватися, читати незрозумілий легасі-код. Ми на фінальній співбесіді по-чесному сказали стажеру, що завдання складне. Він відповів, що готовий, прийшов до нас у команду, і все вийшло. Виявилося, що він має якості не тільки розробника, а й менеджера. Він був готовий сам ходити, впізнавати, пінгувати.

Менторство над стажером

Стажеру для занурення у процеси потрібен ментор. Це людина, яка перебуває у курсі як своїх завдань, а й завдань стажера. З ментором налагоджено регулярне спілкування, до нього завжди можна звернутися за порадою. Ментором може бути керівник групи (якщо це невелика група), або хтось із колег, постійних учасників команди.

Гнат:

Я намагаюся хоч через день підходити, питати, як у стажера справи. Якщо бачу, що закопався, то намагаюся допомогти йому, запитати, в чому проблема, і разом з ним її розкопати. Зрозуміло, що це забирає мої сили і робить роботу стажера не настільки ефективною інтегрально — я теж свій час витрачаю. Проте це дозволяє йому ні в чому не закопатися, отримати результат. І все одно це швидше, ніж якби це робив сам. Самому мені потрібно завдання умовні 5 годин. Стажер її зробить за 5 днів. І так, я витрачу 2 години протягом цих 5 днів на те, щоб поспілкуватися зі стажером та допомогти. Але хоча б 3 години я заощаджу, і стажеру буде приємно, що йому підказали, допомогли. Загалом треба просто щільно спілкуватися, дивитися, що людина робить, не втрачати контакт.

Стажування в ІТ: погляд керівника

Сергій:

Стажер постійно перебуває на зв'язку зі своїм ментором і спілкується з ним кілька разів на день. Ментор рев'юїт код, займається парним програмуванням зі стажером, допомагає, коли виникають якісь проблемні місця. Саме таким способом, поєднанням допомоги ментора та реальних бойових завдань, ми навчаємо фронтендерів.

Діма:

Щоб стажер не виявлявся покинутим, ми ще до найму обговорюємо, хто його менторитиме. Це ще й велике прокачування для самого ментора: підготовка до ролі тимліда, перевірка на здатність утримати в голові і своє завдання, і стажера. Є регулярні зустрічі, на які іноді ходжу, і я сам, щоб бути в курсі. Але дуже регулярно зі стажером спілкується саме ментор. Він спочатку витрачає дуже багато часу, але це окупається.

Однак наявність ментора не означає, що всі питання вирішуються через нього.

миша:

У нас прийнято, що люди, які зіткнулися з проблемою, запитують поради у сусідів, колег і швидко знаходять допомогу. Чим швидше людина росте, тим частіше їй потрібно піти до колег дізнатися щось. Корисно навіть просто дізнаватися про завдання інших людей, щоби придумати нові завдання. Коли стажер сам спроможний домовитися, зрозуміти, що важливо іншій стороні, і дійти результату в команді, він набагато швидше виросте, ніж той, за якого все це має робити керівник.

Сергій:

Є документація, але більша частина інформації розчинена у повітрі. Якщо ти поглинаєш її на старті кар'єри, це додаткова перевага, а ми можемо сфокусувати людину на тому, що потрібно вивчити.

Ідеальний стажер - це той, хто стажується кілька місяців, стає молодшим розробником, потім просто розробником, потім керівником групи і т. д. Для цього потрібен архетип учня, який не соромиться запитати, якщо йому щось незрозуміло, але при цьому здатний самостійну роботу. Якщо йому сказали, що про це можна прочитати там, він піде, прочитає і справді повернеться з новими знаннями. Він може помилятися, але він не повинен помилятися більше одного, максимум двох разів на тому самому місці. Ідеальний стажер повинен розвиватися, вбирати все як губка, вчитися і рости. Той, хто сидить, намагається у всьому розібратися сам, довго колупається, не ставить жодних питань, навряд чи приживеться.

Закінчення стажування

Перед початком роботи підписуємо з кожним стажером терміновий договір. Зрозуміло, стажування оплачується, оформляється по ТК РФ, і в стажера з'являються самі переваги, як і в будь-якого іншого співробітника Яндекса. Через три місяці програма завершується — багато стажерів ми потім переводимо до штату (на безстроковий договір).

Стажування в ІТ: погляд керівника

З одного боку, керівнику важливо, щоб розробник виконав свій стажерський мінімум. Саме до цього веде стажера, починаючи із співбесіди. Однак це лише початок історії. Стажер для нас завжди є потенційним кандидатом у штат. Програма-мінімум для керівника — ще на самому початку розглянути таку людину, яку після трьох місяців не соромно порекомендуватиме в інші відділи. Програма-максимум - зберегти його у тій же команді, взявши до штату. При цьому ми враховуємо, що студенту другого чи третього курсу — навіть якщо він став стажером — із настанням навчального року потрібно буде продовжити навчання у виші.

Сергій:

Насамперед стажери для нас — кадровий потенціал. Ми намагаємося виростити людей усередині Яндекса, щоб вони ідеально підходили до наших завдань. Ми даємо їм все, починаючи з культури спілкування та взаємодії в командах до енциклопедичних знань про всі наші системи.

Гнат:

Беручи стажера, ми одразу приміряємо його до того, щоб він потрапив до нас у команду. І, як правило, єдина перешкода — відсутність вакансії. Стажерами намагаємось брати досить молодих хлопців. Якщо у людини п'ять років досвіду розробки, він приходить в Яндекс і за рівнем він стажер, то на жаль, для нас це означає, що він — хоч і будучи молодцем, якщо влаштовується в Яндекс із п'ятьма роками досвіду, — до старшого розробника вирости не зможе . Зазвичай, справа в швидкості: повільне зростання в минулому означатиме повільне зростання і в нас. Так, іноді розуміння, що людина не тягне, приходить лише за підсумками трьох місяців. Але це досить рідко. Більш ніж у половині випадків ми готові брати людей до штату. На моїй пам'яті не було такого, що людина успішно постажувалась, але не змогла пройти співбесіди на штатну позицію.

миша:

Усім успішним стажерам ми пропонуємо залишитися у компанії. Після стажування ми зазвичай беремо на фултайм більше половини. З літнім стажуванням складніше, тому що часто до нас приходять студенти, наприклад, третього курсу та їм важко поєднувати роботу з навчанням.

Діма:

Предположим, стажёр отлично справляется с задачами и имеет массу перспектив вырасти в хорошего разработчика — пусть даже у него сейчас недостаточно опыта. И предположим, вакансии на бессрочный договор нет. Тогда всё просто: мне нужно идти к своему руководителю и говорить ему — вот очень крутой человек, его надо всеми силами оставлять, давайте предложим ему что-нибудь, найдём, куда его пристроить.

Історії про стажистів

Денніс:

Дівчина, яка до нас влаштувалася на стажування у 2017 році, була родом із Пермі. Це кілометрів 400 від Єкатеринбургу на захід. І вона щотижня приїжджала до нас з Пермі поїздом до Школи мобільної розробки. Вдень приїжджала, ввечері навчалася і пізно ввечері їхала назад. Оцінивши таку запопадливість, ми її покликали працювати, і це себе виправдало.

Гнат:

Кілька років тому ми брали участь у програмі обміну стажистами. Попрацювати із іноземними хлопцями було цікаво. Але стажери звідти не сильніші, ніж, наприклад, із ШАДу чи з ФКНу. Здавалося б, EPFL знаходиться у топ-20 вишах Європи. У мене в той момент — як ще не дуже досвідчений співбесідник — мав таке очікування: неймовірно, ми співбесідуємо людей з EPFL, вони будуть супер-круті. Але люди, які здобули базову освіту про кодинг у нас — у тому числі в ключових регіональних вишах, — виявляються цілком на рівні.

Або інша історія. Зараз у мене в штаті хлопець, молодий зовсім близько 20 років. Працює у Пітері, приїжджав на стажування. Він дуже крутий. Ти, як завжди, даєш людині завдання, вона їх вирішує, а через місяць приходить і каже: я вирішив, дивлюся, і, здається, у вас архітектура погано збудована. Давай переробимо. Код стане простішим, зрозумілішим. Я його, звісно, ​​відмовив: обсяг робіт великий, профіту для користувачів немає, але ідея звучить абсолютно розумно. Людина розібралася у складному багатопотоковому процесі і запропонувала поліпшення — може, й невчасні, рефакторинг задля рефакторингу. Але як захочеться цей код ускладнити, можна буде цей рефакторинг все-таки зробити. За фактом минуло кілька місяців, і ми зайнялися цим завданням. Я із задоволенням узяв його до штату. Ми не генії. Можна прийти, розібратися в чомусь та вказати нам на наші проблеми. Це цінується.

миша:

У нас бувають такі ідеальні стажери. Незважаючи на відсутність досвіду, вони бачать завдання не лише на технічному, а й на глобальному рівні. Пропонують важливі поліпшення. Вони мають розуміння того, як перевести завдання з реального світу до технічного, не втративши сенсу. Вони замислюються, у чому підсумкова мета, чи варто зараз закопуватися в деталі, чи можна повністю змінити підхід до завдання або навіть постановку завдання. Значить, вони мають заділ на те, щоб виявитися на кілька рівнів вище. Щоб пройти цей шлях, їм просто потрібно прокачати якісь скіли та внутрішні інструменти. Плюс запустити кілька вдалих проектів.

Стажування в ІТ: погляд керівника

Джерело: habr.com

Додати коментар або відгук