Когда тренер Ливерпуля Юрген Клопп, который сделал команду чемпионом Англии и победителем Лиги Чемпионов, только появился в команде, то в первую очередь он встретился с начальником академии Ливерпуля. Почему? Потому что Клопп, как тимлид, знает, кто будет играть у него в команде и какие требования к ним он предъявляет. Самым важным для него было рассказать об этом начальнику академии, чтобы тот знал, как воспитывать игроков для Клоппа.
А как, думаете, с этим обстоит дело в мире SW development? Мы с завидным постоянством пытаемся отдать работу с молодыми специалистами — ребятами, которые учатся в университетах — на откуп рекрутерам. И считаем, что только они должны заниматься сотрудничеством с вузами.
В Dell Technologies я занимаюсь совместными проектами с университетами более десяти лет. И, как вы уже поняли, очень люблю футбол. Поэтому сегодня на примере аналогий из футбольного мира я расскажу, как мы готовим молодых специалистов к началу их карьеры. Почему такие аналогии могут быть уместными? Кажется, что в двух этих индустриях много похожего.
Во-первых, если посмотреть на возраст разработки и футбола, то удивительным образом футбол и разработка ПО плюс-минус ровесники и довольно молодые индустрии:
Во-вторых, в обеих индустриях компании (они же — клубы) хотят нанимать классных специалистов, но этих специалистов не так много, и за них появляется высокая конкуренция.
Авторы одной статьи предлагают складывать стоимость футбольной команды из двух компонентов. Первый из них — это покупка игроков: клубы инвестируют средства в привлечение игроков с рынка. Для мира IT это абсолютно понятная аналогия — мы тоже в определенных случаях приглашаем в свои команды дорогостоящих специалистов с ИТ-рынка.
И, также как в футболе, мы иногда работаем с молодыми и перспективными «игроками». Если мы находим студента, то всё, что происходит с ним за все время нахождения у нас (например, рост до синьора или миддла) — это второй компонент стоимости команды, team value менеджмент. Проще говоря, это то, насколько бейдж вашей компании влияет на изменение статуса и стоимости находящегося у вас сотрудника.
Если верить авторам статьи, то футбольный клуб Ливерпуль — мастера именно в этом. На покупку игроков они тратят очень мало, зато на изменение стоимости — во много раз больше:
Один из примеров такой стратегии Ливерпуля — правый защитник Трент Александер-Арнольд. Этот парень родился и провел всю жизнь в Ливерпуле, сейчас ему 22 года. Но благодаря Юргену Клоппу и Академии Ливерпуля его рыночная стоимость выросла до 75 млн евро. То есть из тех 700 млн, которые мы видели ранее, 75 — это стоимость Трента:
А как с этим в мире разработки?
В аналогии с футбольным клубом я играю роль начальника академии, а роль тренера — это работа наших тимлидов. Именно они знают, какие студенты подойдут их команде, и как они будут их выбирать. И если я, как начальник академии, буду знать требования тимлидов, то всё наше сотрудничество будет чуть более продуктивным с точки зрения поиска молодых специалистов и их дальнейшего развития.
Конечно, вы можете мне сказать: «Ты всё здорово рассказываешь, но зачем это инженерам в моей команде? Они заняты, у них релизы». Отвечу еще одной аналогией из мира футбола.
В прошлом году центральный защитник Ливерпуля Деян Ловрен променял «хороший коллектив на высокую зарплату» и ушел в другую команду — в петербургский Зенит. Одновременно в Ливерпуле два других центральных защитника команды получили травмы, и пришлось ключевую позицию закрывать молодым 19-летним парнем, Рисом Уильямсом. Получилось плохо: неподготовленный к игре в основе, он очень плохо вписывался в команду в первых матчах и достаточно сильно ошибался.
То же самое происходит, когда кто-то уходит из команды разработчиков. Нам приходится искать нового человека на освободившееся место. В ряде случаев мы рассматриваем вариант пригласить того, кто недавно окончил университет, и наши инженеры проводят интервью. Но то, что они пишут в результате, в моем outlook ищется по словосочетанию «очень слабо»:
Взаимодействуя с вузами, мы с большей вероятностью избежим ситуации «Опять не пойми кого наняли». Инженеры реже будут возвращаться с собеседований, ругаясь на то, какие плохие студенты сейчас приходят из университетов.
Даже если я вас убедил, что сотрудничать с вузами — нужно, важно и полезно, то всегда есть следующий вопрос, который мне задают: «Для этого нужен большой бюджет?» Люди считают, что сотрудничать с вузами весьма затратно. Мир спортивной индустрии подсказывает, что «дорого и накладно» — это искать за большие деньги состоявшихся специалистов на рынке. А бюджет для сотрудничества с вузами, на самом деле, может быть нужен, а… может быть и нет. Давайте с этого последнего утверждения и начнем.
У вас нет бюджета
В этом случае задайте себе вопрос: а много ли у вас инженеров, которые готовы так или иначе войти в сотрудничество с университетами? Если их мало, то ваш возможный путь — в преподавание. А если таких инженеров у вас много — то вы можете комбинировать преподавание и наставничество.
Наставничество
Расскажу, как программа наставничества работает у нас и что в ней прижилось. К участию в программе мы приглашаем студентов второго курса:
Желающие студенты присылают нам заявку с эссе, где рассказывают, о чем им хотелось бы поговорить и что узнать. На основании этой информации мы привлекаем наших менторов из состава инженеров. Таким образом, у студентов появляется возможность в течение одного семестра (обычно весной) раз в неделю встречаться со своим наставником, задавая ему вопросы: что поделать, что почитать, как строить карьеру. А также спрашивать, что привело наставника в мир индустрии, зачем это нужно и почему это работает.
Наставники отвечают на вопросы студентов, помогая им делать первые шаги в карьере. В работе пары «ментор-подопечный» у менторов важная роль, и, исходя из нашего опыта, мы определили, какими качествами обладают наиболее успешные из них.
Желание делиться опытом
Просвещенные государи и мудрые полководцы нападали и побеждали, совершали подвиги, превосходя всех других, потому что всё знали наперёд. Знание наперёд нельзя получить от богов и демонов, умозаключениями или вычислениями. Знание наперёд можно получить только от людей. Сунь-цзы, «Искусство войны»
Ментор — это человек, который обладает значительно бОльшим опытом успеха в профессиональной сфере и имеет возможность и желание помочь вам состояться. Александр Кравцов, «Найди ментора».
То есть «знание наперед и от людей» передает именно ментор, такое знание невозможно получить из учебников. Но ментор — это необязательно крутой эксперт, как, например, ваш самый классный техлид. Классному техлиду может быть неинтересно общаться со студентами и делиться с ними опытом. А это — ключевое качество для работы с молодыми специалистами. Поэтому хорошие менторы часто получаются из инженеров на 1-2 грейда выше стажёра. Они еще помнят, что студентов заботит. Знают, что им интересно. Умеют с ними разговаривать и понимают их сленг.
Не назначайте менторов сами и не отправляйте в программу перегруженных наставников. Если нет ни возможности, ни желания, то это плохо работает. Мы же помним, что ментор — это человек, который «… имеет возможность и желание помочь состояться»?
Нетворкинг
Нетворкинг наставника может очень сильно помочь студенту. Следующая история — об этом. Несколько лет назад к нам пришел парень, который сказал ментору, что хочет изучать игровой мир и научиться делать игрушки. Мы подумали, что нет ничего плохого, чтобы помочь ему познакомиться с этим миром. И, если игровой мир будет для него интересен, то у студента будет шанс начать свою карьеру (что и есть цель нашей программы), а наставник в любом случае получит возможность поупражняться в навыках передачи знаний начинающему специалисту.
Благодаря нетворкингу его наставника мы сводили парня на экскурсию к разработчикам игр. Он попробовал сделать свою игру и выяснил, что ему не очень это нравится. Так он вернулся к нам и сейчас занимается реализацией CSI для систем хранения данных от Dell Technologies. А в нашем списке рекомендуемой литературы для студентов появилась отдельная глава про игровое программирование:
Случайный подбор пары
Поначалу мы пытались случайным образом подбирать пары «наставник — подопечный». Такой способ, равно как и подбор наставников радикально других специальностей или с другими навыками, к сожалению, приводил только к тому, что пары «разваливались». Если студенту-инженеру дать в наставники ментора-рекрутера или ментора из какой-то финансовой группы, то студенты потом пишут письма:
Опытным путем мы пришли к подбору пар на основании анкет и эссе. В идеале заявок в программу должно быть больше, чем готовых менторов. И тогда наставники делят студентов на группы и подгруппы, делая осознанный выбор подопечного:
Менторы видят в наставничестве пользу и для себя. Часто бывает, что с развитием молодого специалиста им приходится развивать и собственные навыки передачи знаний. Оттачивая этот навык благодаря общению со студентом, они могут научиться объяснять сложные вещи так, чтобы это было понятно подопечному, а также слушать и понимать его.
Теперь поговорим про преподавание.
Преподавание
Наверное, не нужно преподавать то, что вуз умеет и без нас: математику и алгоритмы, введение в программирование на уровне 16-ти лекций по С++ или введение в операционные системы.
Что можно и нужно преподавать? Если помнить, что мы «вписываем 19-летнего парня в основной состав команды», то становится понятно: нам нужно, чтобы те навыки студента, что нужны нашей команде. Например, мы помогаем вузу с такими областями:
K8s, CI/CD;
Продвинутые главы программирования;
Тестирование ПО (обычно работаем с 3-4 курсами, а в отечественных вузах тестирование чаще преподается в магистратуре)
За десять лет мы попробовали разные форматы преподавания. Ниже некоторые идеи и наблюдения.
Курс на большой поток студентов
По направлению «Программная инженерия» в Санкт-Петербурге есть вузы, где на одном потоке обучается 80 человек. С одной стороны, преподавание для такого количества студентов позволяет «посмотреть на москвичей в массе» — то есть проверить навыки и умение учить предмет у большой группы обучающихся. Но при этом важно помнить, что одному преподавателю будет очень тяжело проверять лабораторные работы у всех студентов, и нужно будет дополнительно привлекать коллег к проведению практических занятий.
Спецкурс (для желающих)
Часто мы организуем спецкурсы в формате «перевернутого класса», оно же reverse education (обратное обучение). Для желающих студентов организуется факультатив, куда приходят те, кому интересно послушать, например, про тестирование, Kubernetes и введение в DevOps.
На встречах мы выдаем студентам список литературы для прочтения и практическое задание на неделю, после чего проверяем только задания с предыдущего раза. Теорию студенты изучают самостоятельно. Такой подход позволяет с одной стороны сделать максимальный упор на практику, а с другой — дополнительно проверить у студентов умение самостоятельно разбираться в большом объеме новой информации.
О хороших преподавателях и о том, чем им можно помочь
Хороший инженер-преподаватель может быть немного похож на этого капитана команды «Что? Где? Когда?»:
В качестве условия вопроса его попросили нарисовать на лбу букву Q. А у команды спросили: «Какой ваш капитан?» Правильный ответ был: капитан — экстраверт, он нарисовал букву Q так, что она видна нам с вами, а не ему. Если бы он нарисовал по-другому, был бы интровертом. Так вот, ваш будущий преподаватель должен «рисовать букву Q» примерно так.
Второй момент. Преподавателю желательно иметь опыт выступлений, чтобы чуть увереннее чувствовать себя перед студенческой аудиторией. Ему может помочь академический опыт (например, аспирантура) или опыт выступлений на конференциях (внутренних или внешних). Если такого опыта нет, мы помогаем нашим потенциальным преподавателям и учим их выступать. Когда-то давно мы создали спикер-клуб, где мы делимся друг с другом навыками, связанными с публичными выступлениями. Например, нашу школу по тестированию мы воспринимаем тоже как элемент подготовки будущих спикеров: на встречах спикер-клуба ее обсуждали также, как любое конференционное выступление.
Помимо этого, помогает приглашение на занятия со студентами в качестве «второго пилота» более опытного спикера, который может помочь с теми или иными вопросами аудитории.
С тем, что бюджета не требует, разобрались. Перейдем ко второй части алгоритма.
Если у вас есть бюджет
В этом случае решите, будете вы работать со студентами долго или запустите небольшой проект. И в том, и в другом случае с вашей стороны понадобится технический специалист (инженер), а со стороны вуза — преподаватель, который будет находить студентов, организовывать и проводить встречи с ними.
В случае студенческого проекта мы предполагаем активность, ограниченную по времени. Например, в течение семестра студенты выполняют законченную работу. Инвестиция делается в готовый результат. По окончании проекта сотрудничество по данной теме прекращается.
В случае лаборатории мы предполагаем длительную работу по какой-то тематике. Лаборатория предполагает постановку темы в общем виде (например, «инструментарий k8s») и постоянную работу преподавателя над поиском новых задач для работ студентов в данной области. По окончании семестра работа лаборатории не завершается — после экзаменов и каникул новая группа обучающихся приступает к работе над новым задачами от преподавателя.
Всё, о чем я буду писать далее, применимо и для проекта, и для лаборатории.
Специфический софт
Не стоит выстраивать проекты и лаборатории вокруг проприетарного, дорогого софта или чего-то, что сложно воспроизвести. Поясню на примере. У нас был проприетарный софт для запуска тестов, и в нем был реализован некоторый наш внутренний процесс. Гипотеза звучала так: студенты посмотрят на этот процесс, воспроизведут его сами, и дальше с помощью Python научатся им управлять. Такое письмо с приглашением в этот проект я писал студентам:
Как мы воспроизвели в триальной версии наш процесс — была целая отдельная история. Но с точки зрения ожидаемого результата это было далеко от того, что мы хотели увидеть. Правда, стоит отметить, что с точки зрения навыков проект оказался крайне полезным — по итогам, к нам присоединилось в качестве стажеров сразу несколько студентов.
Специфическое железо
Начинать проекты и лаборатории вокруг специфического железа тоже непросто. Еще один пример — open source библиотека dpdk, которая позволяет сохранять в обход сетевого стека Linux приходящие по сети пакеты. Гипотетически она должна это делать быстрее. Мы решили попросить студентов сравнить производительность, что быстрее — стек Linux или dpdk. И студенты это даже сделали:
Синий график — это dpdk, и он вроде бы оказался быстрее. Но на второй неделе проекта мы выяснили, что для корректной работы dpdk нужна дорогая сетевая карта на две машины (из одной передаем, на вторую получаем), и такой карточки не было ни у студентов, ни у университета.
Так что этот график получен на двух виртуальных машинах. Но тот, кто знает, что такое тестировать производительность на двух виртуалках — понимает, что это хорошая учебная задача, но практическая применимость ее весьма условна.
Open Source
Хорошей идеей для начала запуска проекта или лаборатории могут быть различные Open Source-продукты: их «склеивание», модификации или использование для исследовательских задач кафедры.
Например, у нас был фреймворк для тестирования производительности систем хранения данных Mongoose, и система хранения данных с открытым исходным кодом Pravega. И, конечно, у нас появился вопрос: почему бы фреймворком для тестирования производительности не протестировать систему хранения? Для этого нужен был драйвер, создание которого и стало целью студенческого проекта:
В ГУАПе (Санк-Петербургском государственном университете аэрокосмического приборостроения) мы организовали лабораторию, в которой студенты изучают совместную работу различных open source инструментов.
В этом вузе развернута инфраструктура интернета вещей — датчики, оконечные серверы, полноценные серверы для создания внутреннего облака. На этих серверах и «вещах» разворачивается комплекс open-source продуктов, который интересен нам: софт для передачи данных, разные виды ПО для контейнерной оркестрации и непрерывного развертывания. В результате у нас есть так называемое smart space (умное пространство), на котором студенты изучают, как с этим софтом работать.
Двое «выпускников» этой лаборатории сейчас проводят встречи со студентами ГУАП уже как технические специалисты со стороны Dell Technologies. И вообще, часто оказывается, что бывшие участники различных университетских активностей благодаря своему опыту оказываются успешными наставниками и кураторами.
Рабочие процессы
Наконец, очень хорошо для проектов и лабораторий создать окружение, максимально напоминающее ваш рабочий процесс. Поскольку мы готовим студента к работе в нашем рабочем контексте, то, если мы общаемся на работе в Slack, то и со студентами лучше общаться там же.
О конверсиях
В нашем случае связь между различными этапами подготовки молодых специалистов и конверсией на этих этапах можно представить следующим образом:
В лабораториях конверсия доходит до 50-80%, в зависимости от вуза: в среднем из десяти человек семеро становятся нашими стажерами. Этих семерых мы дополняем людьми с рынка или из других открытых источников.
Конверсия среди стажеров обычно выше, поскольку это студенты, которые прошли через работу в лаборатории, они понимают наши требования по навыкам и знают, как с нами работать. В среднем это 85-95%, то есть из десяти всего один не становится нашим full-time-инженером.
С чего начать взаимодействие с вузами
Важно понимать, что работа с университетами — долгосрочный процесс. Внутренние «ритмы» университета подчинены семестровым циклам, поэтому сделать что-то «оперативно» получается не всегда.
Начинать сотрудничество с вузом лучше с разговора с заведующим кафедрой, на которой учились вы или ваши инженеры. Что-то подсказывает, что эта кафедра умеет делать хороших инженеров, правильно? В рамках этого разговора можно договориться о каком-то из форматов, которые мы ранее рассмотрели (наставничество, преподавание, проекты, лаборатории). Посмотреть, как покажет себя этот формат. Далее, принимать решение о возможном развитии сотрудничества.
Кооперируемся
Могут ли несколько компаний кооперироваться в сотрудничестве с университетами? Мне кажется, что да. На одной из встреч представителей вузов и ИТ компаний я задавал преподавателям следующий вопрос: «Что мы могли бы сделать, чтобы на первый курс принималось больше студентов?»
Преподаватели сказали, что хороших студентов и так много на первом курсе. И среди них есть большой пул студентов, которые могли бы соответствовать требованиям работодателей:
Проблема в том, что их кто-то должен учить, а преподавателей не хватает. Есть гипотеза, что помочь в обучении широкого пула студентов может онлайн-образование. Представители индустрии могут объединиться для того, чтобы создать несколько онлайн-курсов для студентов, которые могли бы стать с одной стороны «стандартом» для индустрии (мы понимали бы, что должны знать студенты), а с другой — помогли бы обучить большее количество студентов силами меньшего числа преподавателей.
Если вам интересно поговорить про совместное создание курсов — напишите, пожалуйста, мне в telegram.
Но ведь в футболе есть трансферы?
Да, специфика футбольного мира состоит в том, что команды могут продавать игроков и на этом зарабатывать:
После трансфера у клуба-продавца, понятно, есть необходимость в новом игроке на освободившуюся позицию. И, если он умеет работать с молодыми, позиция закрывается начинающим игроком, а клуб фиксирует прибыль от продажи. Если нет — приходится выходить на рынок и те деньги, которые клуб заработал, тратить на покупку нового игрока.
В случае нашей индустрии, если из компании уходит инженер, то у нас также появляется вакансия, которую нужно кем-то закрыть, но при этом денег от трансфера разработчика не предусмотрено:
Однако если мы умеем готовить молодых специалистов, то вакансия закрывается относительно быстро. Если не умеем — у нас появляется множество затрат на поиск нового человека (очень хорошо об этом написано в статье Виталия Шароватова). И даже после этого наши инженеры могут написать то самое «очень слабо», о чем я говорил в начале. То есть мы получаем определённое количество сложностей, которые нужно как-то решать с некоторыми затратами.
Финал
Повторюсь: только вы, коллеги, знаете, какой студент подойдёт вашей команде и как вы будете его выбирать. Если вы с этим определитесь, то сотрудничество с вузами может дать вашей команде перспективных стажеров, из которых в дальнейшем вы сможете вырастить подходящих вам инженеров.
Полный алгоритм взаимодействия с вузами примерно такой:
Кстати, тот 19-летний футболист, Рис Уильямс, в конце концов доиграл сезон, и с ним Ливерпуль занял 3 место, что для прошлого сезона было очень хорошим результатом. Чего и нам всем желаю — давайте делать так, чтобы 19-21-летние студенты легко «вписывались» и успешно «играли» в наших основных составах.
Видео моего выступления на TeamLead Conf 2021:
Открылся доступ к докладам с конференции SaintTeamLead 2021. Плейлист прекрасен, но доклады — это только часть конференции, намного важнее живое общение с единомышленниками.
В этом году конференция для тимлидов поменяла свое название на TeamLead Conf Foundation, потому что стала прочным основанием, главной точкой сбора, сохранения и передачи менеджерских знаний в IT-индустрии. В программе будут мастер-классы, круглые столы, 2 трека по управлению знаниями и больше 70 докладов.
На площадке из двух этажей Крокус-Экспо встретятся 2000 тимлидов и руководителей со своим опытом, инсайтами и энергией. Расписание уже готово, а купить билеты можно здесь. До встречи на конференции!