Чем еще заняться в период пандемии и удаленки, как ни разглагольствованием о великом? У всех нас появилось много свободного времени, которое теперь не обязательно тратить на дорогу, и если кому-то не жалко тратить это время на просмотр сериалов, инстаграм и борьбу с диваном, то мне за первый месяц все это порядком поднадоело и захотелось чего-то продуктивного.
Начитавшись разных статей и книжек про эффективность, а также вдохновившись такими людьми как Стив Джобс сразу хочется пойти и перевернуть этот гребаный мир. Но уж коли никто не хочет дать мне тот самый рычаг, попробуем перевернуть что-то поменьше. Например, нашу закостеневшую систему образования. Ну или не совсем систему, скорее так, маленький ее кусочек, а затем посмотрим на результат. По традиции тренироваться принято на кошечках, а в моем случае на студентах. Эксперимент уже проведен, результат оказался положительным. А благодаря пандемии появилось время об этом написать.
Сразу хотел бы предупредить о двух вещах: во-первых, ни один студент во время экспериментов не пострадал, во-вторых, писать статью я начал еще где-то полгода назад, но мне текст казался сырым, а времени поправить его не было, но в эти выходные все-таки удалось это сделать, и я решил публиковать, иначе еще на полгода зависнет! В общем, эта статья сильно запоздала с выходом (или точнее ее автор запоздал с написанием). Но я лично клинический оптимист, так что надеюсь она все равно будет полезна. Уж если не читателям, то хотя бы автор получит фидбек (стакан же всегда полон, если не водой, то воздухом).
Почти четыре года назад мне довелось стать преподавателем двух предметов в Новосибирском Государственном Университете на Факультете Информационных Технологий. Потом из-за нехватки времени появилось желание отказаться от преподавания одного из них, но лектор попросил оставить хотя бы одну группу. Предмет, на мой взгляд, бесполезный, а введен он был для галочки.
Суть лабораторных работ по этому предмету в следующем: показать, что студент умеет работать с bash (файлик скопировать, или там поиск по файлу сделать). Нет, разумеется, умение пользоваться bash-ем важно и даже очень. Скорее дело в том, что у лабораторных должна быть какая-то цель, а bash это всего лишь средство, которое студенты освоят в процессе достижения этой цели. А если заставить студентов изучать bash ради того, чтобы изучить bash, им это будет скучно и не интересно.
Благо, лектор сам сказал, что на парах можно рассказывать все, что не противоречит названию, а называется он Информатика. Соответственно впихнуть туда можно все, что душе угодно. Первые два года я принимал лабораторные, так как это был весомый аргумент для студентов не прогуливать пары. Но уж слишком они неинтересные. Немного удавалось уровнять чаши весов за счет рассказов про ежедневный инструментарий разработчика, то есть такие инструменты как:
-
Git
-
JiraRedmineTrello
-
Code review
-
Unit-тестирование
-
CICD
В прошлой статье я подробно рассказывал про эти нововведения, не хотелось бы повторяться. Скажу только, что все эти вещи, как и проведение «мини-хаккатона» с поеданием пиццы, было решено сохранить и приумножить. Вообще студенты - народ специфический, они хотят только развлекаться, а от них требуют учиться, так вот я всегда говорю, что те, кому удастся найти баланс между первым и вторым – самые счастливые люди. Вот и я ставлю своей целью пустить их энергию в нужное русло. И чтобы им было в кайф, надо сделать так, чтобы формат занятий был близок к их привычной среде обитания!
На что вообще клюют студенты-перваки? Надо чтобы было драйвово, интересно, понятно, стильно, модно, молодежно. Кстати, многие аутсорс-компании тоже делают на этом акцент, и мне не верится, что это случайность. Теперь информатика – это предмет «все обо всем», этакий окружающий мир для программистов.
Нужно было расширить предыдущий список чем-то таким, чтобы, во-первых, приучить ребят работать в командной строке и, во-вторых, посильнее заинтересовать. Фантазия позволила придумать следующую концепцию:
-
Отменяем лабы и домашки. Пусть все делают на самих парах. Я буду показывать, а они повторять
-
Оценка должна быть за посещаемость. Иначе вообще никто ходить не будет
-
Все работы делаются в ubuntu. На выбор студентов можно установить ее себе на ноут, можно пользоваться VirtualBox или WSL
-
Все, что делают студенты должно быть наглядно. Им это нравится. Круто же когда ты увидел не чиселки в консоли, а открыл самостоятельно настроенный сайт в браузере. Магия должна быть видна невооруженным взглядом
-
Стоит сделать акцент на таких вещах как NPM и yeoman, они просты и в то же время позволяют делать сложные вещи, это опять же должно повысить интерес к самому процессу и приучить ребят работать в консоли
-
Часть заданий нужно сделать в группах, это повысит их SoftSkills
Лайфхак. Если хочется расположить людей к себе, их нужно накормить. Для голодных студентов это актуально вдвойне.
Каждую пару я захожу в одну из кофеен, расположенных в универе, и покупаю себе кофе. Я стал периодически покупать большой ЭмЭмДемс и оставлять его на первой парте. Все желающие могли угоститься. И теперь в девять утра полная аудитория довольных студентов. И нет, мне не платили за рекламу m&m's. Да и в принципе за преподавание платят смешные деньги – хватает в аккурат заправить полный бак моего крокодила.
Но я не жалуюсь, у меня прекрасная работа, а вот это все - для души! Но в целом, за страну обидно, не должно быть преподавание благотворительностью! Но вернемся к нашим студентам! Взамен старых лабораторных нужно было что-то придумать, и, отталкиваясь от описанных выше принципов, был составлен примерный список заданий. Список был довольно внушительный, но тогда мне казалось, что ребята из НГУ должны были справиться. Пришлось некоторые вещи скорректировать в процессе. Основной критерий тут достаточно прост, если видно, что студентам становится не интересно, то нужно что-то менять. С другой стороны, без завышенных требований не получилось бы узнать максимум. Далее постараюсь кратко, но емко рассказать о самих заданиях и том, как проходил процесс их освоения.
Поднимаем Gitlab на локальной машине. Тогда автору показалось это не слишком сложным (инструкция на сайте есть, команд всего несколько), зато очень впечатляющим, круто, когда на твоей машине поднялся огромный сайт с кучей кнопочек и настроек. Плюс ко всему это хорошо коррелирует с рассказом про Git иCICD. Здесь был мой первый промах - студентам оказалось сделать подобные вещи сильно сложно. Задача осложнилось тем, что студенты устанавливали себе разные дистрибутивы, и у кого-то все взлетело сразу, а у кого-то вообще никак не стартовало. В общем, они долго плевались и делали это с неохотой. В следующем году это задание будет выброшено, уж слишком сложно получилось. В следующем году планирую сделать определенный образ убунты в VirtualBox, чтобы выполнив все действия по инструкции, все заработало.
Устанавливаем Docker и делаем то же самое в доккере. Это всего одна команда, и тут ребята должны были понять, для чего этот самый докер нужен, и как сильно он упрощает жизнь (не кидайтесь помидорами, я знаю, как он может усложнить жизнь, но они же пока маленькие, не стоит их сразу пугать.) Надо сказать здесь ребята точно также разбились на два лагеря: те у кого личные ноутбуки с успехом поддерживают Docker (это либо те, у кого поддерживается Hyper-V или либо же те, кто пользуется Ubuntu как основной системой) и те, кому пришлось долго возиться с Docker Toolbox и VirtualBox. Я разрешил тем ребятам, у кого не удалось настроить окружение, просто забить на это задание и посмотреть, как это должно выглядеть у той половины, которой все удалось настроить. Задание с докером не хотелось бы выбрасывать особенно потому, что оно отлично вписывается в рассказ про облачные сервисы на подобии Azure и Amazon. Добиться цели, конечно, удалось, ребята увидели, что множество команд можно заменить одной, если в Docker есть уже готовое решение. Но само задание надо будет доработать напильником.
Создаем проект на Apache Cordova. Используем тот же yeoman, комплим и заливаем результат на телефон. Благо, сейчас это можно сделать достаточно просто и даже без проводов. Здесь снова акцент идет на наглядность. Менять в самом проекте ничего не нужно, ну разве что поиграться с какими-нибудь названиями или заголовками. Это было первое задание, когда у студентов действительно загорелись глаза. В следующем году это задание будет передвинуто в самое начало для большей мотивации.
Создаем проект на Angular. Мы создавали обычный HelloWorld. Суть в том, чтобы показать студентам процесс создания проекта. Хотелось, чтобы они увидели разные подходы и не испугались, когда их попросят сделать что-то подобное на работе или в универе. Помню, как сам впадал в ступор, когда приходилось делать подобные вещи, потому что в универе привыкаешь к тому, что как правило надо открыть VisualStudio(или Idea) и нажать кнопочку на GUI-интерфейсе «Создать проект». Но не для всего есть GUI интерфейс, да и не всегда он нужен. Вроде простая истина, но процесс ее осознания достаточно сложный, а для того, чтобы облегчить эту учесть достаточно всего один раз об этом рассказать.
Последние два задания потребовали наличия NodeJs и это хорошо коррелировало с рассказом про консольные скрипты и что их можно писать не только на bash или powershell, но также python или даже js. Просто для каждого языка есть свой интерпретатор. Это опять же не делает их знатоками в данных областях, но расширяет их кругозор.
С точки зрения практики этого хватит, но лектор говорил, что нужно обязательно всем выступить с презентациями. Мы сошлись на том, что гораздо прикольнее будет заставить всех ребят выбрать случайную статью с хабра прочитать и вникнуть в нее. А на паре мы кратко обсудим каждую статью. Статьи должны быть уникальными. Такой формат зашел, примерно за полторы пары мы обсудили с дюжину статей. При том все были вовлечены, и, в конечном счете, ребята расширили свой кругозор.
Чтобы не слишком нагружать юный
Еще в силу моей занятости, несколько пар пришлось отменить. Но восстанавливать как-то надо. По традиции сделали мы это на Youtube. Но как сказал один из наших преподавателей про онлайн-образование: «Лекция по интернету - это худшее, что могли придумать, я ведь никогда в жизни столько сам с собой не разговаривал». Все-таки тяжко говорить, не видя других лиц и их реакции.
Подводя итоги
Было бы нечестно сказать, что все прошло гладко, скорее здесь был первый блин комом. Я взял достаточно высокую планку, многие вещи студентам были не понятны. Пришлось на ходу переобуваться и менять задания, но думаю в следующем году получится найти баланс между сложностью и заинтересованностью, при котором все будут довольны. Позитивно сказалась работа в группах, индивидуально ребята не могли все осилить, а когда в группе есть 1-2 человека более сильных, то процесс идет лучше. Тут главное не допустить ситуации, когда только эти двое работают, а остальные сидят в телефонах. Еще один прием, который я взял на вооружение, дать ребятам разные задания, а затем сделать swap и заставить их научить друг друга. Все это повышает SoftSkills, которые обязательно пригодятся в жизни.
В целом, студенты были довольны предметом. По моим ощущениям, им было куда интереснее, чем прошлые два года. Удалось хоть не на много, но расширить их кругозор и заинтересовать их магией программирования. В начале этого семестра был удивлен тем, что студенты, которых мне довелось учить информатике год назад, сами связались со мной и попросили преподавать у них Объектно-Ориентированное Программирование. Хотя еще на парах по информатике я говорил им, что это две совершенно разные вселенные, на ООП халявы не будет, из-за ООП люди вылетают из универа, но их это не остановило. Что ж, хотят пожестче – пускай.
А еще не так давно пара студентов с четвертого курса попросились ходить на пары по тому же ООП. Я опять же не против и добавил этих ребят в общий чатик в ВК, и вот какой получился у них диалог. Все-таки приятно, когда старания не проходят даром!
Касаемо ООП все осталось как и раньше, ничего лучше я придумать не смог. Мы все так же играем в реальную работу, заливаем код в Git, двигаем задачи в Trello, создаем пул-реквесты, используем IoC-контейнеры и пишем Unit-тесты. Подробно об этом я писал в прошлой статье.
Еще как оказалось, если взять ребят, которых я уже учил, им гораздо легче рассказывать про сложные вещи. Они уже более или мене подготовлены, они знают что-то в теории и теперь им можно показать, как оно работает на практике. Можно быть уверенным, что ребята имеют некоторый бэкграунд. В общем, это круто, когда можно не учить с нуля, а продолжить их обучение. Получается, что это уже не два отдельных предмета, а целая система, в которой прошлые школьники вначале получают полезную и легко воспринимаемую информацию, а по мере их взросления коэфициент ответственности растет, и на втором курсе им уже придется пыхтеть изо всех сил. Разве не так и должно быть все устроено в жизни? И мне бы хотелось дать им такие знания и возможности, при которых, если не все, то большая часть дверей для них будет открыта. Опыт оказался весьма интересным, и нужно развивать такие подходы в дальнейшем. Когда удастся все сбалансировать, думаю, будет полезно посмотреть в сторону развития в студентах SoftSkills, но пока это только перспективы. А пока, было бы очень полезно получить фидбек от читателей на тему того, что они думают на этот счет.
Автор: TemaTre