Студенческие IT стажировки — как мы стараемся делать их наиболее эффективными

Привет! Меня зовут Денис Александров, и помимо работы в качестве Android-разработчика, я уже более семи лет готовлю стажёров в разных компаниях и занимаюсь студенческими практиками. Мне приходилось и работать с перспективными студентами персонально, и проводить групповые стажировки с отсевом. Я собрал самые важные и полезные тонкости проведения стажировок для студентов, благодаря которым мы делаем наши стажировки максимально полезными и эффективными для всех ее участников.

Когда (и кого) начинать стажировать

Каждый работодатель хочет видеть в кандидате сотрудника, готового уже завтра полноценно приступить к работе. Но на практике даже опытным разработчикам требуется время для «акклиматизации». Что уж говорить о студентах или вчерашних выпускниках. Поэтому в случае набора студентов возникает выбор:

  1. Не брать студентов, а дождаться их выпуска — с надеждой, что выпускники будут лучше подготовлены к рабочей деятельности.
  2. Работать со студентами, но дать им возможность успешно закончить учёбу.
  3. Брать студентов в штат без учёта их образовательной деятельности.

Мы стараемся придерживаться второго подхода, и на это есть несколько причин.

Во-первых, борьба за достойных кандидатов начинается в вузе. Крайне редко встречаются талантливые, но недооценённые студенты, которые не смогли найти себе работу ещё в годы учебы.

Во-вторых, даже самый талантливый студент сначала попадает на стажировку. Ему ещё только предстоит сопоставить теоретические знания и реальную работу.

В-третьих, многие студенты не могут сразу понять, чем же они хотят заниматься после учёбы. С такими студентами очень важно наладить связь как можно раньше, а лучше вообще быть первым. Этот первый опыт работы во многом определяет дальнейшую судьбу айтишника (т. н. синдром утёнка).

Студенты редко выбирают один из путей — учёба или стажировка — сознательно. Большинство все-таки хотят получить и диплом, и предложение работы. Конечно, бывают ситуации, когда приходится выбирать, но в действительности большинство стажёров совмещают работу и учёбу на протяжении нескольких лет. Я поддерживаю этот выбор, и я стараюсь организовать стажировки для студентов с дальнейшим полным трудоустройством.

Картинка: утка показывает утятам строение атома воды

Я более 11 лет работаю в преподавании, и сейчас ребята, которых я готовил ещё к ЕГЭ, уже работают в крупных компаниях. Я периодически пересекаюсь со своими бывшими студентами на хакатонах и олимпиадах, и ставлю себе мысленные заметки «вот студент, который прошёл ожидаемый путь развития; было бы неплохо посмотреть, как он может применить опыт на проекте, где я сейчас работаю». Конечно, это очень долгосрочная и туманная по результатам работа, но в плане результатов игра стоит свеч.

Нашу работу со студентами можно разделить на 3 основных этапа:

  1. Работа в вузе. Для того, чтобы заинтересовать самых перспективных студентов, мы начинаем работу не с рекламы собственного блога или группы в социальных сетях, а с онлайн и офлайн работы в вузе — лекции, семинары, участие в вузовских мероприятиях.
  2. Студенческая практика. Это обязательная часть обучения в вузе, цель которой — закрепить полученные знания. Каждый учащийся должен «найти» себе место для практики и отчитаться о ней, так что со стороны студентов «спрос» всегда есть. Но бизнес заинтересован в том, что привлечь самых талантливых и мотивированных, и для этого мы так много работаем на 1 этапе.
  3. Стажировка. Это необязательная часть обучения, которую мы предлагаем лишь тем, кто хорошо себя показал на 2 этапе. Мы принимаем студента в штат компании и платим ему зарплату.

Сотрудничество с вузами

Вот что мы делаем для того, чтобы найти и привлечь лучших студентов:

  • Участие в университетских хакатонах, олимпиадах и дипломных работах в качестве экспертов.
  • Преподавание в вузе.
  • Открытые занятия и семинары на территории вуза.
  • Студенческая практика.

Конечные цели у вуза и у частных компаний, как правило, разные. Несмотря на это, я считаю, что из этого сотрудничества оба участника могут извлечь пользу.

Считается, что вуз должен полностью подготовить студентов к рабочей деятельности. Но это не совсем так. Со стороны Android-разработки могу сказать, что актуальность существующих технологий будет пересмотрена ещё до окончания учебы сегодняшних первокурсников. И даже если обучать студентов самым трендовым технологиям, это не даёт гарантии востребованности спустя 5 лет, потому что невозможно угадать, какие будут требования к разработчику через 4 года. Впрочем, это и не нужно.

В вузе студента стоит научить базовым вещам — языку C++, принципам ассемблирования и компиляции, способам организации памяти на «железном» уровне и др. Да, этого не будет в списке требований к Android-кандидату. Как, наверно, не будет и в 98% других вакансий. Вуз дает ту теоретическую базу, которая позволяет, например, видеть протекающие дыры в абстракциях (по выражению Джоэла Спольски, сформулировавшего Закон дырявых абстракций).

А вот то, что наш студент увидит в вакансиях, когда станет кандидатом, постоянно меняется — каждый год появляются новые технологии, фреймворки, версии языков программирования и др. Программисты учатся постоянно, и для этого гораздо важнее широкий базовый технический профиль, чем знание модных фреймворков. Гораздо проще самостоятельно изучить платформенное API и документацию к фреймворку, чем наверстать пробелы в знании атомарных и битовых операций.

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

Но ту необходимую теоретическую базу, которую даёт университет, нужно ещё «привязать» к жизни. И это можно увидеть только там, где идёт разработка настоящих проектов — в коммерческих компаниях. Ещё до начала непосредственно практик и стажировок мы помогаем вузу с экспертизой и университетскими активностями — здесь взгляд со стороны бизнеса очень полезен.

Многие студенческие проекты страдают не столько от низкой степени технической проработки (как будто в большом бизнесе такое не встречается!), сколько от непонимания в целом — зачем и для кого предназначен объект исследования. Студентам всегда тяжело даются фреймворки, процессы разработки и прочие «бытовые» вещи в IT-разработке. Без практики знания о таких вещах сложно усваиваются. Мы стараемся помочь студентам разобраться в этих процессах — подсказываем, где применение фреймворка поможет сэкономить драгоценное на хакатоне время, проводим игровые занятия с разбором ролей в команде разработки и в бизнес-процессах.

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

Важно не перегнуть палку — студенческий проект может быть не совсем продуман и в меру неряшлив. Гораздо важнее показать базовые принципы формирования требований к проектам и коду: почему важно понимать конечного пользователя, как делать систему гибкой и адаптивной под изменяющиеся требования, как учитывать юридические тонкости при работе с данными и т. п.

Вообще для бизнеса инвестиции в работу в вузах — одни из самых неоднозначных в плане результата. Всё будет зависеть от заинтересованности преподавательского и управленческого состава и бюрократии, которая все активнее поглощает образовательные процессы. Это долгосрочные инвестиции, результаты которых можно увидеть только спустя много лет. Однако если ваша работа регулярная и вы планируете набирать сотрудников ещё много лет, опыт работы с вузом будет очень полезен.

Студенческая практика

Я встречал множество способов организации студенческой практики — от «принеси диплом на подпись в последний день» до «вот тебе бизнес-фича в реальном проекте, у тебя как раз две недели, должен успеть».

Мы практикуем групповые студенческие работы. Во время прохождения такой практики студенты делают совместный проект под присмотром практикующего специалиста.

Пару раз в неделю мы организуем занятия, на которых разбираем текущий прогресс по работам либо изучаем необходимые материалы — архитектуру приложения, платформенные или языковые особенности и другие подобные вопросы.

Фотография с воркшопа

Наш воркшоп QARATE. В нём приняли участие в том числе и мои стажёры.

Обязательное время в офисе и минимум часов мы не обозначаем. Посещать занятия тоже не обязательно — материалы можно изучить самостоятельно (хотя это и очень сложно).

Практика у разных курсов длится по-разному — от 2 до 10 недель. Но кроме этого мы периодически устраиваем расширенные практики с возможностью дальнейшей стажировки. В этом случае практика будет длиться в среднем 6-10 недель. Студенты могут завершить практику точно в срок, регламентированный вузом, получить необходимые документы и возвращаться к учёбе. В случае же, если студент выберет, успешно завершит нашу «расширенную» практику и хорошо себя проявит — мы можем предложить ему дальнейшую стажировку.

Есть способ «обойти» практику. Если у студента уже есть неплохой проект, портфолио или опыт стажировки в другой компании, мы готовы рассмотреть вариант «перезачесть» практику.

В качестве дополнительного стимула к прохождению практики, по её завершении студенты получают проекты в свое портфолио и персональные рекомендации от менторов. Мы не практикуем грамоты или сертификаты — только реальные результаты работы и персональные отзывы.

Картинка: утята плавают в протекающей абстракции

Для меня главным критерием готовности человека к стажировке является умение быстро и в необходимой мере учиться. Так или иначе, стажировка — это процесс интеграции в реальные проекты и процессы компании. Здесь просто необходимо научиться учиться. Если студент проявляет все необходимые предпосылки, мы предлагаем ему стажировку.

Стажировка

Итак, если студент хорошо себя проявил, мы можем предложить ему стажировку. В нашем понимании стажировка студентов — процесс обучения необходимым процессам и технологиям для участия в «боевых» задачах. Очень важно дать начинающему разработчику полноценные знания о работе, научить разбираться коде, осваивать библиотеки.

Мы сформулировали несколько причин, почему стоит максимально отложить привлечение начинающих специалистов к боевым проектам:

  1. Для начала нужно дать возможность ошибиться. Не всё в разработке получается с первого раза, и возможность начать сначала — необходимость.
  2. Поэтапное внедрение в процессы. Тяжело с ходу разобраться во всех особенностях работы в IT. Стажировка — один из способов поэтапного внедрения в компанию.
  3. Нужно научить разработчика глубоко разбираться в проблеме. Не всегда боевые условия позволяют выделить необходимое для этого время.
  4. У студентов иногда случается сессия, и в этот момент им лучше иметь возможность спокойно сдать её. В случае с реальными проектами далеко не всегда удается безболезненно это сделать.

Стажировка и стресс

Стажирующиеся студенты неизбежно попадают в стрессовую ситуацию: нужно и на работу ходить, и про учёбу не забывать. Так как работодатель является непосредственным участником этой ситуации, он может как содействовать, так и усугубить и без того нелёгкое состояние студента.

Что мы делаем для поддержания студента:

  • Содействие в написании дипломной работы. Стараемся подобрать тему работы и стажировку таким образом, чтобы время, потраченное у нас в компании, помогло в написании и защите дипломной работы.
  • Свободный график, который определяет сам студент. Не совсем удобно для менторов, но загонять студента в невыполнимые сроки — пожалуй, худшее решение.
  • Учебные каникулы для сдачи сессии. Так как под стажировкой мы понимаем в первую очередь образовательный процесс, мы стараемся не задействовать стажёров в коммерческой разработке. Это позволит студенту безболезненно взять отпуск и сдать сессию или долги.
  • Возможность плавно наращивать темп. Есть лишь минимально необходимое количество часов, верхняя планка согласовывается по готовности с самим стажёром.

Стажировка и оплата

Да, как правило, стажировки оплачиваются. Стажировка — это процесс подготовки сотрудника к работе — обучение, знакомство с компанией и командой и пр. Безусловно, основной интерес компании — это получить сотрудника для решения «боевых задач».

Все позиции стажёров у нас оплачиваются. Кроме этого, у всех стажёров регламентируется рабочее время и количество часов в неделю (в соответствии с принятой ставкой). Всё «по-взрослому» — даже если сотрудник не сразу приступает к «боевым» проектам, процесс работы всё равно соблюдается — код ревью, работа в команде и с менеджером.

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

Что считается успешным завершением стажировки

В первую очередь — полная интеграция в процессы компании. К счастью, студенты в большинстве случаев без проблем вливаются в новую компанию.

Вторым, но не менее важным, критерием является самостоятельное обучение. Самое важное свойство Junior-разработчика — навык самостоятельно найти, изучить и применить технологию. Работа разработчика напрямую связана с этим. На следующей итерации, к уровню Middle, он будет учиться самостоятельно отфильтровывать необходимую информацию, но пока хватит и поиска.

В-третьих, это умение самостоятельной экспертизы собственного кода. Программисты не умеют писать идеальный код. И даже хороший код приходится переписывать по нескольку раз. Крайне важно владеть самокритикой для дальнейшего роста.

Ну и наконец, в-четвёртых, это готовность (в первую очередь временнАя) к работе на реальном проекте. Здесь важно иметь необходимое для работы количество часов, а также возможность участия в плановых созвонах и совещаниях.

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

И наконец, после того, как все критерии соблюдены, мы можем предложить стажёру позицию разработчика.

Что дальше?

Картинка: утята с трамплина прыгают в воду

А дальше — «боевой» проект. Здесь начинающий разработчик сталкивается с суровыми буднями программиста. Например, узнаёт, что код далеко не всегда пишется по канонам. Узнаёт, как появляются костыли. Разбирается, почему рефакторинг — вещь нужная, но редко выполнимая. В общем, продолжает учёбу, потому что на мой взгляд самое лучшее в разработке — вечное обучение.

Кроме этого, студент принимает участие в экспертизе других разработчиков (попросту code review). Я считаю, что для этого крайне важно привлекать специалистов разных уровней. Так и дилетантские ошибки найти проще (а опытные разработчики часто их пропускают), и вырасти команде разработки проще. В конце концов, Junior-разработчику тоже нужно разбираться в чужом коде, и лучше начинать это делать уже на этапе code review.

Вместо выводов

Я считаю, что ключевым и решающим фактором в успешности стажировки является мотивация и исполнительность стажёра. Тем не менее, я как организатор могу подкрепить эту мотивацию и обеспечить условия для того, чтобы поставленные перед стажёром задачи были выполнены в срок.

Для того, чтобы эти факторы сложились, очень важно ещё на этапе планирования понимать, что хочет получить каждая сторона и как этих результатов достичь. Технические же детали в момент уже проведения стажировки практически всегда перекраиваются.

В апреле 2020 года мы были вынуждены целиком изменить формат практики и стажировки на онлайн. Само собой, это создало целый ворох проблем — от обеспеченности техникой до заключения договоров на стажировку.

Тем не менее, мы помогли группе студентов закрыть свои учебные обязательства и познакомиться с миром коммерческой разработки. А у нас появился новый стажёр.

Полезные ссылки:

«Зачем студенту стажировка: 7 аргументов “за”» на hh.ru

«Рабочие будни программиста: ожидания и реальность» в блоге Mail.ru Group

«Топ-10 качество программиста. Мнение лучших работодателей» на geekbrains.ru

Вам также может понравиться

Блог Создаём по-настоящему надёжные плагины
22 апреля, 2021
Плагины для .NET на платформе Managed Add-In Framework (MAF) для качественной и быстрой реализации разносторонних требований пользователей.
Блог RBAC в Angular-приложениях
18 марта, 2021
Что такое RBAC, для чего он полезен во фронтенде и как использовать этот паттерн в Angular-приложениях при помощи библиотеки @doce/ngx-rbac.
Блог Стратегия тестирования краткосрочного проекта
18 февраля, 2021
К небольшим проектам не подходят стратегия и тактика тестирования длительных проектов. Как составить и внедрить стратегию тестирования в краткосрочном проекте.
1
12