— Помимо работы вы еще преподаете курс по С++ в ИТМО. Как вы к этому пришли?
— Честно, я не умею нормально отвечать на этот вопрос, потому что просто случилась неведомая череда событий, которая привела меня в преподавание. Немного помогать на этом курсе я начал еще с бакалавриата: проверял домашние задания и даже один раз принял экзамен. Почему я это делал — не помню, вероятно, когда-то меня попросили помочь, а я не отказал, тем более, что курс был действительно хорош. Потом был перерыв, и в начале 2020-го, когда как раз началась пандемия COVID-19, на курсе возникла проблема с проверкой практической части. Курс тогда вел один человек, и если с лекциями все было хорошо, то на домашние задания попросту не хватало рук. Небольшая вводная: на этом курсе задания проверяются у каждого студента при личном взаимодействии, т. е. студент приходит, показывает код и получает к нему комментарии. На удаленке организовать такое взаимодействие оказалось сложнее, и так случилось, что время приближалось к сессии, а студенты так и не получили фидбека по домашним заданиям. Зная про всю эту ситуацию, я решил предложить преподавателю курса свою помощь. Так мы за три недели приняли все домашки и экзамены, собрав с нуля первую систему проверки через автотесты на GitHub Actions. В ней были недочеты, например, репозитории студентов были открытыми форками репозиторев с заданием, а времени настраивать гранулярные доступы под каждого студента и проверяющих у нас не было, и, соответственно, все могли посмотреть его. Для детальной проверки мы использовали код ревью. Мне удалось привлечь еще нескольких ребят, которые согласились в свободное время просматривать домашние задания студентов. Мы также помогли принять и экзамен. После всего этого мне написали с кафедры и предложили продолжить поддерживать и развивать эту систему. Я и остался.
С тех пор мы доработали ее: понятно, что ядро осталось тем же, но теперь для организации студенческих репозиториев мы используем GitHub Classroom, у всех приватные доступы. Для студента сдача домашней работы выглядит так: написал код, запушил, код прошел тесты, ты финально все проверил, отправил заявку на проверку в Google-формах, и ждешь, пока к тебе придут с код ревью с подробными комментариями и оценкой. Затем студент переделывает задание с учетом рекомендации, и мы проверяем его еще раз. У нас нет никаких штрафов за попытки, т. е. можно хоть раз пять править и отправлять, и оценка будет выставлена по финальному результату. В этом плане мы исходим из того, что в первую очередь мы учим, а не проверяем то, насколько человек способен с первого раза сделать все без ошибок.
На курсе я отвечаю за практики, а лекции все так же читает Иван Сорокин. Мы координируемся по темам и плану курса, чтобы не отстать по домашним заданиям или не выдать что-то, чего ребята еще не проходили. В разное время практику проверяли разные люди и в разном количестве, сейчас сформировался более-менее постоянный состав. На будущее у нас план сделать простую систему, в которой любой желающий достаточно легко может помочь тем, что будет делать код ревью в уже готовой инфраструктуре.