Для эйчаров в ИТ не секрет, что если твой город — не миллионник, то найти в нём программиста проблематично, а человека, который владеет нужным стеком технологий и опытом, и того сложнее. В Иркутске айтишный мир тесен. Большинство разработчиков города в курсе существования компании ISPsystem, и многие уже с нами. Часто приходят соискатели на позицию джуниора, но в основном это вчерашние выпускники вузов, которых ещё надо доучить и обтесать. А мы хотим готовых джунов, которые немного программировали на С++, знакомы с Angular и видели Linux. Значит, надо пойти и самим их научить: познакомить с компанией и дать материал, который нужен для работы у нас. Так родилась идея организовать курсы по бэкенд и фронтенд-разработке. Зимой прошлого года мы её реализовали, а в этой статье расскажем, как это было. Собрали ведущих разработчиков, обсудили с ними задачи, продолжительность и формат занятий. Больше всего нам нужны бэкенд и фронтенд-программисты, поэтому решили провести семинары именно по этим специальностям. Так как опыт первый и сколько потребует сил неизвестно, ограничили время одним месяцем (восемью занятиями по каждому направлению). Материал для семинаров по бэкенду готовили три человека, а читали два, на фронтенде темы разделили между собой семь сотрудников. Первые семинары решили провести для ребят с киберфака ИРНИТУ. Там как раз появился удобный коворкинг, а еще намечался День карьеры — встреча студентов с потенциальными работодателями, куда мы регулярно ходим. В этот раз как обычно рассказывали о себе и вакансиях, а еще приглашали на курс. Желающим поучаствовать давали анкету, чтобы понять интересы, уровень подготовки и знаний технологий, собрать контакты для приглашения на семинары, а также выяснить, есть ли у слушателя ноутбук, который он сможет принести на занятия. Ссылку на электронную версию анкеты разместили в социальных сетях, а ещё попросили сотрудника, который продолжает учиться в магистратуре ИРНИТУ, поделиться ей с однокурсниками. Еще можно было договориться с вузом о публикации новости на их сайте и в соцсетях, но желающих посещать курс и так хватало. Результаты опроса подтвердили наши предположения. Не все студенты знали, что такое бэкенд и фронтенд, и не все работали со стеком технологий, который мы применяем. Что-то слышали и даже делали проекты на 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, но это поправимо: для следующих курсов мы её доработаем. Мы неплохо подготовились к семинарам и почти ни в чем не просчитались, но на несколько граблей всё-таки наступили. Оформили этот опыт в советы, вдруг кому-нибудь пригодится. Мы понадеялись на университет, но зря. Уже под конец занятий выяснилось, что наш курс пришелся на самое неудобное время учебного года — перед сессией. Студенты приходили домой после пар, готовились к экзаменам, а потом садились за наши задания. Иногда решения приходили в 4–5 часов утра. Важно также учитывать время дня и частоту занятий. Мы начинали в 19:00, поэтому если у студента пары заканчивались рано, ему приходилось уезжать домой, а вечером возвращаться — это неудобно. Кроме того, занятия проходили в понедельник и среду или в четверг и вторник, и когда на домашку был один день, ребятам надо было сильно напрячься, чтобы выполнить её в срок. Потом мы подстроились и в такие дни задавали меньше. Поначалу не все слушатели успевали за лектором, возникали проблемы с развёртыванием окружения, настройкой. В таких ситуациях они поднимали руку, и наш сотрудник подходил, помогал разобраться. На последних занятиях помощь была не нужна, потому что всё уже было настроено. Так вы решите сразу несколько задач. Во-первых, дадите возможность посмотреть тем, кто пропустил занятие. Во-вторых, пополните внутреннюю базу знаний полезным, особенно для новичков, контентом. В-третьих, глядя на запись сможете оценить, как сотрудник доносит информацию и может ли удержать внимание аудитории. Такой анализ помогает развивать ораторское мастерство выступающего. IT-компаниям всегда есть чем поделиться с коллегами на профильных конференциях, и на семинарах можно вырастить отличных спикеров. Лектор говорит, камера пишет
 
 В первой половине лекции стали подробно рассматривать предыдущее домашнее задание, а во второй части читать теорию к следующему. Иными словами, давали студентам удочку, а дома они уже сами искали водоём, наживку и ловили рыбу — вникали в детали и разбирались с синтаксисом С++. На следующей лекции вместе обсуждали, что получилось. Такой подход оказался более продуктивным.  Семинары по бэкенду у нас вели два сотрудника, а по фронтенду — семь. Для студентов особой разницы не было, но лекторы фронтенда пришли к мнению, что для более продуктивного контакта нужно знать аудиторию, как она воспринимает информацию и т. п., а когда выступаешь впервые, этого знания нет. Поэтому, возможно, лучше не менять преподавателей часто. Сами студенты вряд ли скажут, если что-то идёт не так. Они боятся выглядеть глупо и задавать «дурацкие» вопросы, стесняются прерывать лектора. Это и понятно, ведь несколько лет они видели другой подход к обучению. Так что если будет сложно, никто не признается. Чтобы снять напряжение, мы использовали приём с «подсадной уткой». Коллега лектора не только помогал, но и задавал вопросы по ходу лекции, предлагал варианты решений. Студенты видели, что лекторы — живые люди, их можно спрашивать и даже шутить с ними. Это помогало разрядить обстановку. Главное тут — соблюсти баланс между поддержкой и перебиванием. Ну и даже с такой «подсадной уткой» всё равно спрашивайте о сложностях, выясняйте, насколько адекватна нагрузка, когда и как лучше всего разбирать домашнее задание. Получив итоговое приложение на последней лекции, мы решили отметить это пиццей и просто пообщаться в неформальной обстановке. Подарили подарки тем, кто продержался до конца, назвали пятёрку лучших, нашли новых сотрудников. Были горды собой и студентами, ну и рады, что всё наконец-то закончилось :-). 
Вручаем призы. Внутри пакета: футболка, чай, блокнот, ручка, наклейки
 
 Сразу после занятий запустили анкету, чтобы собрать отзывы.  Помогли семинары определиться с выбором направления? Что оказалось наиболее ценным? Главное — нам удалось рассказать, что после окончания университета ребят ждёт много интересной и сложной работы. Они поняли, в каком направлении хотят двигаться и стали чуть ближе к успешной карьере в ИТ. Теперь мы знаем, как выбрать подходящий формат обучения, что упростить или вообще исключить из программы, сколько времени уходит на подготовку и прочие важные вещи. Лучше понимаем своих слушателей, страхи и сомнения остались позади.  Возможно, мы ещё далеки от создания корпоративного университета, хотя уже обучаем сотрудников внутри компании и работаем со студентами, но первый шаг к этой серьёзной задаче мы сделали. И уже совсем скоро, в апреле, снова пойдём преподавать — на этот раз в Иркутский государственный университет, с которым давно сотрудничаем. Пожелайте нам удачи! Head of HR