Студенческие 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 

    Аркадия
    Заказная разработка, IT-консалтинг

    Комментарии 7

      0

      Спасибо за разбор полетов :)
      Интересно увидеть онлайн формат в записи. Уверен, многим студентам из других городов это поможет и добавит знаний.

        0
        Спасибо за отзыв!
        Я выступал с очень близким докладом на TechTrain 2019 на demo площадке. Если материалы будут выложены в открытый доступ, приложу обязательно.
          0
          Вот еще одно видео от меня про мое судьективное отношение к стажировкам

            0

            У меня он начался с середины. Видимо, начинал смотреть в начале сентября.
            А как смотришь на свитчеров, тех, кто переходит в профессию айти, но уже не студент? Есть ли живые примеры и твой взгляд на то как смотрит работодатель, выбирая между выпускником и свитчером?
            В статье ты пишешь о важном свойстве — обучаемость. Я замечаю, что в крупных компаниях обращают внимание именно на этот признак у человека.
            Например, из 1С. Кто-то может спорить об этой профессии (1С), но это айти, если работаешь в крупной компании. Из личного опыта: тоже есть методология Agile, тоже командная разработка и работа над задачами, только они больше бизнесовые и отличаются от айтишечки. Но это процедурный язык программирования и очень высокоуровневое восприятие сущностей: все объекты (классы, если рассматривать с позиции Java, например) уже созданы и закрыты для изменений. Разработчик лишь жонглирует этими сущностями и данными. А весь учет 1С построен на дублировании данных: нарезая их так, чтобы увеличить их скорость чтения/записи.

              0
              Здесь нет предвзятости по предедыдущему опыту, скорее вопрос в гибкости мышления в целом.
              В целом я знаком с успешным опытом вайтишников. Предвзятость в найме — да, существует. Так же как и существует разница между студентами-гуманитариями и студентами ИТ специальностей. Но это все индивидуальные вопросы, надо смотреть по конкретному кандидату
                0

                Что посоветуешь из ютуб каналов, книг и статей (новости, презентации и т.д.) по андроиду? В том числе на англ.

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

      Самое читаемое