28 марта 2019

Ольга Чечельницкая

Руководитель отдела управления персоналом

Нужен готовый джун — научи его сам, или Как мы запускали курс семинаров для студентов

Для эйчаров в ИТ не секрет, что если твой город — не миллионник, то найти в нём программиста проблематично, а человека, который владеет нужным стеком технологий и опытом, и того сложнее.
В Иркутске айтишный мир тесен. Большинство разработчиков города в курсе существования компании ISPsystem, и многие уже с нами. Часто приходят соискатели на позицию джуниора, но в основном это вчерашние выпускники вузов, которых ещё надо доучить и обтесать.
А мы хотим готовых студентов, которые немного программировали на С++, знакомы с Angular и видели Linux. Значит, надо пойти и самим их научить: познакомить с компанией и дать материал, который нужен для работы у нас. Так родилась идея организовать курсы по бэкенд и фронтенд-разработке. Зимой прошлого года мы её реализовали, а в этой статье расскажем, как это было.

Подготовка

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

Долго искать преподавателей не пришлось, уговаривать тоже. За участие был предусмотрен бонус, но не он имел решающее значение. Мы привлекали сотрудников уровня мидл и выше, а им интересно попробовать себя в новой роли, развить навыки коммуникации и передачи знаний. На подготовку они потратили более 300 часов.

Первые семинары решили провести для ребят с киберфака ИРНИТУ. Там как раз появился удобный коворкинг, а еще намечался День карьеры — встреча студентов с потенциальными работодателями, куда мы регулярно ходим. В этот раз как обычно рассказывали о себе и вакансиях, а еще приглашали на курс.
Желающим поучаствовать давали анкету, чтобы понять интересы, уровень подготовки и знаний технологий, собрать контакты для приглашения на семинары, а также выяснить, есть ли у слушателя ноутбук, который он сможет принести на занятия.
Ссылку на электронную версию анкеты разместили в социальных сетях, а ещё попросили сотрудника, который продолжает учиться в магистратуре ИРНИТУ, поделиться ей с однокурсниками. Еще можно было договориться с вузом о публикации новости на их сайте и в соцсетях, но желающих посещать курс и так хватало.
Результаты опроса подтвердили наши предположения. Не все студенты знали, что такое бэкенд и фронтенд, и не все работали со стеком технологий, который мы применяем. Что-то слышали и даже делали проекты на C++ и под Linux, очень мало кто реально использовал Angular и TypeScript.
К началу занятий набралось 64 студента, этого было более чем достаточно.

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

Содержание лекций

Мы понимали: за курс из восьми занятий невозможно научить программировать на C++ или создавать веб-приложения на Angular. Но стремились показать процесс разработки в современной продуктовой компании и заодно познакомить с нашим стеком технологий.
Теорией тут не обойтись, нужна практика. Поэтому все занятия мы объединили одной задачей — создать сервис для регистрации событий. Планировали вместе со студентами по шагам разработать приложение, параллельно познакомив их с нашим стеком и его альтернативами.

Вводная лекция

На первое занятие мы пригласили всех, кто заполнил анкеты. Сначала рассказали, что только фулстек — это было давно, а сейчас в компаниях-разработчиках есть разделение на фронт и бэк-разработку. В конце предложили выбрать наиболее интересное направление. На бэкенд записались 40% студентов, на фронтенд — 30% и ещё 30% решили посещать оба курса. Но ходить на все занятия ребятам было сложно, и они постепенно определялись.
Разработчик бэкенда на вводной лекции шутит про подход к обучению: «Семинары будут как инструкция для начинающих художников: шаг 1 — рисуем кружочки, шаг 2 — дорисовываем сову»

Содержание курсов по бэкенду

Часть занятий по бэкенду была посвящена программированию, часть — процессу разработки в целом. В первой части затронули компиляцию, make СMake и Conan, многопоточность, методы и паттерны программирования, работу с базами данными и http-запросами. Во второй части говорили о тестировании, Continuous Integration и Continuous Delivery, Gitflow, работе в команде и рефакторинге.
Слайд из презентации бэкенд-разработчиков

Содержание курсов по фронтенду

Сначала настраивали окружение: устанавливали NVM, с помощью него Node.js и npm, с помощью них — Angular CLI и создавали проект на Angular. Потом взялись за модули, научились пользоваться базовыми директивами и создавать компоненты. Далее разобрались, как перемещаться между страницами и настраивать роутинг. Узнали, что такое сервисы и каковы особенности их работы в рамках отдельных компонентов, модулей и целого приложения.
Ознакомились со списком предустановленных сервисов для отправки http-запросов, работы с роутингом. Научились создавать формы, обрабатывать события. Для тестирования создали mock-сервер на Node.js. На десерт узнали о концепции реактивного программирования и таких инструментах, как RxJS.
Слайд из презентации фронтенд-разработчиков для студентов

Инструменты

Семинары подразумевают практику не только на занятиях, но и вне их, поэтому нужен был сервис для приёма и проверки домашней работы. Фронтендеры выбрали Google Classroom, бэкендеры решили написать свою систему рейтинга.
Наша система рейтинга. Сразу видно, что писал бэкендер :-)
В этой системе написанный студентами код проходил автотесты. От результатов тестов зависела оценка. Дополнительный балл можно было получить на ревью и за вовремя сданную работу. Общая оценка влияла на место в рейтинге.
Рейтинг привносил в занятия элемент соревновательности, поэтому мы решили оставить его, а от Google Classroom отказаться. Пока наша система по удобству уступает решению Google, но это поправимо: для следующих курсов мы её доработаем.

Советы

Мы неплохо подготовились к семинарам и почти ни в чем не просчитались, но на несколько граблей всё-таки наступили. Оформили этот опыт в советы, вдруг кому-нибудь пригодится.

Выбирайте время и распределяйте занятия правильно

Мы понадеялись на университет, но зря. Уже под конец занятий выяснилось, что наш курс пришелся на самое неудобное время учебного года — перед сессией. Студенты приходили домой после пар, готовились к экзаменам, а потом садились за наши задания. Иногда решения приходили в 4–5 часов.
Важно также учитывать время дня и частоту занятий. Мы начинали в 19:00, поэтому если у студента пары заканчивались рано, ему приходилось уезжать домой, а вечером возвращаться — это неудобно. Кроме того, занятия проходили в понедельник и среду или в четверг и вторник, и когда на домашку был один день, ребятам надо было сильно напрячься, чтобы выполнить её в срок. Потом мы подстроились и в такие дни задавали меньше.

На первые занятия берите коллег для помощи

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

Записывайте семинары на видео

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

Будьте готовы поменять подход, если это понадобится

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

Не меняйте преподавателей часто

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

Задавайте вопросы на каждом занятии

Сами студенты вряд ли скажут, если что-то идёт не так. Они боятся выглядеть глупо и задавать «дурацкие» вопросы, стесняются прерывать лектора. Это и понятно, ведь несколько лет они видели другой подход к обучению. Так что если будет сложно, никто не признается.
Чтобы снять напряжение, мы использовали приём с «подсадной уткой». Коллега лектора не только помогал, но и задавал вопросы по ходу лекции, предлагал варианты решений. Студенты видели, что лекторы — живые люди, их можно спрашивать и даже шутить с ними. Это помогало разрядить обстановку. Главное тут — соблюсти баланс между поддержкой и перебиванием.
Ну и даже с такой «подсадной уткой» всё равно спрашивайте о сложностях, выясняйте, насколько адекватна нагрузка, когда и как лучше всего разбирать домашнее задание.

Устройте неформальную встречу в конце

Получив итоговое приложение на последней лекции, мы решили отметить это пиццей и просто пообщаться в неформальной обстановке. Подарили подарки тем, кто продержался до конца, назвали пятёрку лучших, нашли новых сотрудников. Были горды собой и студентами, ну и рады, что всё наконец-то закончилось :-).
Вручаем призы. Внутри пакета: футболка, чай, блокнот, ручка, наклейки

Итоги

До конца занятий дошли 16 студентов, 8 по каждому направлению. По словам преподавателей вузов, это немало для курсов такой сложности. Пятерых лучших мы взяли или почти взяли на работу, ещё пятеро придут на практику летом. Сразу после занятий запустили анкету, чтобы собрать отзывы.
Помогли семинары определиться с выбором направления?
  1. Да, я пойду в бэкенд-разработку — 50%.
  2. Да, я точно хочу быть фронтенд-разработчиком — 25%.
  3. Нет, по-прежнему не знаю, что мне больше интересно — 25%.
Что оказалось наиболее ценным?
  1. Новые знания: «в универе такого не получить», «свежий взгляд на дремучий C++», обучение технологиям для повышения продуктивности — CI, Git, Conan.
  2. Профессионализм и увлечённость лекторов, стремление передать знания.
  3. Формат занятий: объяснение и практика.
  4. Примеры из реальной работы.
  5. Ссылки на статьи и инструкции.
  6. Классно составленные презентации лекций.
Главное — нам удалось рассказать, что после окончания университета ребят ждёт много интересной и сложной работы. Они поняли, в каком направлении хотят двигаться и стали чуть ближе к успешной карьере в ИТ.
Теперь мы знаем, как выбрать подходящий формат обучения, что упростить или вообще исключить из программы, сколько времени уходит на подготовку и прочие важные вещи. Лучше понимаем своих слушателей, страхи и сомнения остались позади.
Возможно, мы ещё далеки от создания корпоративного университета, хотя уже обучаем сотрудников внутри компании и работаем со студентами, но первый шаг к этой серьёзной задаче мы сделали. И уже совсем скоро, в апреле, снова пойдём преподавать — на этот раз в Иркутский государственный университет, с которым давно сотрудничаем. Пожелайте нам удачи!

Ольга Чечельницкая

Руководитель отдела управления персоналом