Как мы в Skillbox организуем процесс проверки домашних заданий и при чём тут Code Review, линтеры и юнит-тесты

Мы стремимся к максимальной практичности знаний и навыков, чтобы наши выпускники были готовы к условиям реального рынка. Недавно мы выкатили обновление системы обучения для программистов и добавили процессы командной разработки: полноценное Code Review с линтерами, юнит-тестами и скриншотным тестированием. Теперь студенты проходят все стадии реальной коммерческой разработки ещё во время курса. Как это устроено и почему мы приняли такое решение, рассказывает Глеб Михеев, программный директор фронтенд-направления Skillbox.

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

Как это работает

  1. Под каждый проект заводят репозиторий в GitLab.
  2. На каждую задачу делают новую веточку, пишут в ней код и сдают его через Merge Request’ы проверяющему преподавателю.
  3. При каждом пуше в репозитории запускаются пайплайны, которые гоняют линтеры и тесты, — так выявляются все опечатки, синтаксические ошибки и функциональные недостатки.
  4. Проверяющие преподаватели проводят полноценный Code Review, не тратя времени на опечатки и рутину, фокусируясь на том, как ученик решил задачу, где его стоит поправить, что подсказать и что предложить переделать, а ученики вносят правки по их комментариям.
  5. Только после завершения этого процесса задача в рамках проекта считается законченной: студент получает апрув и вливает свои изменения в основную ветку разработки.

На первый взгляд звучит сложно: зачем это всё, если можно просто отправить архив с кодом на почту или через форму приёма домашнего задания внутри системы обучения LMS (Learning Management System)? Да, можно и так, но тогда наши выпускники не впитают общепринятую культуру разработки и их придётся доучивать в процессе работы.

Нам не близка такая идея: мы считаем, что выпускники должны быть способны с ходу подключиться к реальной команде разработки и не падать в обморок после фраз вроде «как сделаешь таску — оформи PR и кидай на ревью».

Эту практику мы раскатали не только на классическую бэкенд- или фронтенд-разработку — вскоре эту фичу интегрируют и в геймдев, для программистов на Unity/Unreal Engine.

Прямо сейчас пилотные программы работают в курсах по вёрстке, JS и Java: методисты вместе с преподавателями тестируют, сумеют ли студенты быстро влиться в новые процессы.

Было приятно разобраться, покопаться в инструментах и освоить новый навык. До этого при сдаче домашнего задания не было полного взаимодействия со всеми сервисами Git, исправлением ошибок. Автотесты помогли изучить и расширить больше команд — у меня только положительные эмоции от этой практики. Круто то, что теперь я намного быстрее буду получать результат, а система подскажет ошибки. Очень удобно: прогнал код через автотест, применил магию гугла и коллективный разум — и всё становится понятно. К тому же теперь я могу сам выбрать, нужен мне комментарий от преподавателя или я готов сразу сдать работу и двигаться дальше.

Владислав Новиков

, Cтудент Skillbox

Какие были альтернативы

Ещё несколько лет назад мы верили, что нужно сделать полноценный редактор кода в онлайне — внутри нашей LMS. Чтобы ученики писали программы, запускали тесты и получали обратную связь по коду в режиме единого окна. Мы проработали эту идею, собрали референсы и убедились, что можем сделать прекрасный редактор наподобие StackBlitz и встроить в него инструменты тестирования, дополнительные подсказки к задачам и тому подобное.

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

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

Тогда мы перешли к новой идее — внедрить в обучение настоящие боевые механизмы. Чтобы проверить гипотезу, мы интегрировали линтеры и юнит-тесты в процесс обучения на профессии «Java-разработчик». Сначала всё это работало без автоматизации на стороне GitLab: после сдачи домашнего задания мы предлагали студентам проверить себя самостоятельно — запустить все нужные проверки и тесты в IDE. Это помогало убедиться, что код полностью соответствует Code Style и проходит юнит-тесты.

Без автотестов преподаватели отвечали в течение суток, и им приходилось уделять время мелким помаркам и опечаткам. Но автотесты ускорили этот процесс: ошибки я могу отловить самостоятельно, а преподаватель оценивает более сложные вещи — например, как спроектировано решение и насколько компактным получился код.

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

Олег Полянский, Cтудент Skillbox

Увидев, что нашим студентам новая фишка зашла, мы взяли в свой бэклог задачи по разработке интеграции нашей LMS и GitLab, инфраструктурные задачи, разработку тестов в программах обучения и все остальные изменения педагогического процесса — а их было немало. Интеграцию пилили несколько месяцев — и вот как выглядит последняя версия системы проверки домашек в личном кабинете студента.

1. Начало работы с домашним заданием.

2. Запуск тестов и ожидание результата.

3. Тесты выдали ошибку.

4. Тесты завершились успешно, работу можно отправить на ревью преподавателю.

5. Пример тестирования веб-вёрстки на соответствие макету.

6. Результат работы линтера, проверка форматирования и чистоты кода.

Эволюция проверки домашних заданий в Skillbox

  1. На старте развития обучения программированию всё было очень просто: студенты посылали файлы с исходниками по почте. Преподаватель давал свои комментарии там же.
  2. Почти четыре года назад мы сделали процесс более взрослым: завели учётный GitLab и стали принимать код там. Это уже было ближе к реальным процессам в отрасли, но всё ещё оставался пробел: студентов нужно было учить командным практикам работы с кодом.
  3. В целом было уже неплохо, но нас это не устраивало и мы принялись искать более крутое решение. Теперь студенты Skillbox будут учиться на реальных процессах разработки ПО с Code Review, блэкджеком и всем остальным. А мы будем наблюдать, как меняются метрики, и искать, что ещё можно улучшить в этом процессе.

Что мы делаем и чем руководствуемся

За последнее время мы проделали большой путь: из просто «образовательного проекта», который делает вводные курсы по основам профессии, мы превратились в крупнейшую образовательную платформу, занимающую одну из лидирующих позиций по количеству образовательного контента — ежемесячно мы выпускаем по 1000 часов видеоуроков. И это только новые уроки, не считая регулярного обновления готовых материалов. У нас большая команда проверяющих преподавателей — более 600 человек. Среди них и наши лучшие выпускники, и эксперты из топовых компаний.

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

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

Но чтобы обучение получилось классным и комфортным, недостаточно найти одних экспертов-практиков. Из них необходимо правильно вытянуть эти навыки и знания, логично и последовательно скомпоновать материал, сбалансировать теорию и практику, чтобы студенты плавно и без хардкора погружались в новую специальность, не бросали обучение, столкнувшись с трудностями. Это объёмная и важная работа, и за неё в Skillbox отвечает большая команда методистов. Их задача — помогать авторам выстраивать трек обучения в соответствии с проверенными педагогическими практиками и вместе с автором и продюсером создавать образовательный продукт — от идеи курса до формирования последней домашки и диплома. Также они регулярно пересматривают, актуализируют и дорабатывают материалы.

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

Для веб-вёрстки, одного из наших самых популярных продуктов, мы даже сняли мини-сериал, чтобы погрузить студентов в реальные процессы и культуру разработки. Там было всё: и забытые ховеры, и клиент, который не знает, чего хочет, и пропуски пунктов в ТЗ, которые приводили к частичной перевёрстке, и драма с IE11 (о нём вспомнили за час до сдачи проекта), и выгоревший и уехавший на Бали тимлид. Это был настоящий фан. Студенты оценили фишку, писали, что было очень смешно и круто, а метрика «пользовательского счастья» CSAT сразу подскочила до 95,47.

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

А в нашем бэклоге ещё сотни идей, которые мы поэтапно тестируем и интегрируем в образовательный процесс. И все они служат одной цели — подготовить выпускников Skillbox к реальным условиям и вызовам сегодняшнего рынка.

0
4 комментария
Bruce Robertson

@Skillbox  а чем закончилась эта ситуация?

Ответить
Развернуть ветку
Nurdin

Лучше бы написали статью как вы собираете деньги ч людей и готовите псевдо программистов

Ответить
Развернуть ветку
Gleb Mikheev

Привет, давайте обсудим!)

Но, чтобы мы могли перевести это в дискуссию, накиньте пожалуйста контекста: о чем вы конкретно хотите сказать? Мне кажется у вас явно есть что подсветить)

Ответить
Развернуть ветку
Zoibana

Копирайт-инфринджемент фейл нейтрализуете?

Ответить
Развернуть ветку
1 комментарий
Раскрывать всегда