IT-образование в ВУЗах

17 мая 2014 г.

Окончился очередной учебный год в университете. Ниже будет мой отчет по работе на IT-специальности. Возможно кому-то тема обучения в ВУЗе близка, буду рад вашим комментариям и замечаниям, идеям как можно сделать лучше.

На данный момент у меня 4 года опыта преподавания в ВУЗах. Первые 3 года вел ООП и Технологии программирования у 4-го курса на кафедре Информатики в ЮУрГУ. Этот опыт я уже описывал в статье Обучение IT-специалистов в университете. Текущий год я провел на ВМИ в ЮУрГУ и эпизодически в ЧелГУ на нескольких лекциях.

Эволюция отношения к студентам

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

И я верил. Я даже в какой-то момент именно так и думал. Но прошло определенное время и стало очевидно, что это не так. За разговорами про глупых студентов пряталась некомпетентность преподавателей, нежелание сделать лекции интересными.

На самом деле студенты схватывают всё очень быстро. Последняя курсовая, которую они делали, была создана с DVCS, CI, Kanban-доской и всё это было интегрировано между собой. Причем я намеренно не давал подробного описания систем контроля версий и нюансов CI, всё это студенты нашли и изучили сами. Некоторые присылали мне скринкасты с описанием их систем вместо отчетов на А4, по-моему отличная идея.

Насчёт скорости восприятия вспоминается Эффект сотой обезьяны. Видимо использование некоторых практик стало насколько популярным, что для новых IT-специалистов нет сложности в усвоении и понимании.

Далее я опишу своё видение обучения, как и почему оно строилось именно так. Буду рад вашим предложениям.

Программа обучения и цели

Год назад я ушёл с кафедры Информатики, т.к. не смог ставить тройки и зачеты за незнание предмета. На фоне моего нежелания у нас вышел конфликт с зав. кафедры. Практически сразу меня пригласили на кафедру ВМИ вести Методологии управления проектами на 4-м курсе. Дали всего 11 пар, не так много для глубокого понимания предмета.

Задачи, которые ставит перед собой эта дисциплина:

  1. Систематизировать знания участников курса по основным принципам гибкой разработки и классического подхода
  2. Изучить основные подходы современной разработки программного обеспечения: Agile (Scrum, XP, Crystal) и Lean (Kanban), от начала работы над проектом до выпуска и поддержки работающего продукта
  3. Сформировать компетенции применения в практической деятельности различных подходов к управлению проектами разработки ПО

Задача довольно амбициозная для 11 пар, как считаете? Нужно было придумать способ донести информацию как можно проще, попробовать всё на практике и дать набор литературы для изучения.

Организация процесса и игра в лего

В итоге я решил поступить следующим образом:

  • На лекциях я рассказываю основную теорию с примерами из наших проектов и не только
  • Студенты делятся на команды и делают курсовой командой с использованием одной из методологий. Сдача курсового - это допуск до зачёта. На курсовом проекте они должны отработать практики в команде.
  • После изучения какой-то методологии мы проводим игру в лего. Например, стоим дом из лего по Waterfall или по Scrum.

Курсовой проект

Тематику курсовых определяли сами студенты. Важным критерием оценки является:

  1. Использование DVCS с открытым хостингом. Например, github.com
  2. Использование электронной доски. Например, trello.com
  3. Использование CI-сервера. Например, appharbor.com
  4. Интеграция DVCS, электронной доски и CI-сервера

Кроме того, у меня было право поменять тему, если она была банальной. Не хотелось видеть очередные пятнашки или что-то подобного уровня.

Курсовые по моему предмету решили объединить с курсовыми по ГИС. Получилось, что из курса по ГИС они взяли тему, а из моего курса методологию работы над проектом.

Зачёт

Формальные вопросы для зачета:

  1. Методики, достоинства и недостатки, границы применимости Waterfall
  2. Методики, достоинства и недостатки, границы применимости Scrum
  3. Методики, достоинства и недостатки, границы применимости Agile
  4. Методики, достоинства и недостатки, границы применимости RUP
  5. Методики, достоинства и недостатки, границы применимости DevOps
  6. Методики, достоинства и недостатки, границы применимости XP
  7. Методики, достоинства и недостатки, границы применимости Lean
  8. Методики, достоинства и недостатки, границы применимости Kanban

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

Зачет стоится на диалоге между преподавателем и студентом. Например, типичный вопрос, когда кто-то рассказывал про Lean: "Какие потери на ваш взгляд самые существенные при разработке ПО? Приведите пример из работы вашей команды над курсовым". Ответить на такой вопрос да/нет невозможно, списать ответ или найти в Интернете тоже. Моей целью было убедиться, что студенты ухватили суть проблем и решений.

Все сдали зачет и курсовую с первого раза, чего раньше на моих курсах никогда не было. Обычно половина студентов не сдавала с первого раза и даже со второго. На этот раз по курсовой была только одна тройка, остальные сдали на 4 или 5. Несколько проектов купили домены и залили свои проекты в публичный доступ.

Несколько отзывов студентов после окончания курса:

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

Что может мотивировать больше, чем такие отзывы о проделанной работе?

Проблемы и выводы на следующий учебный год

Начало курса и начало курсовых сопадает. Одной из первых студенты узнают водопад и Scrum, поэтому с него и начинают проекты. В последствии несколько человек сказали, что лучше бы начали работать по Kanban, если бы узнали о нем с самого начала. Возможно стоило в самом начале дать обзорную лекцию по каждой теме, чтобы студенты смогли выбрать.

У меня мало реального опыта работы по Waterfall, буквально несколько проектов, поэтому тему жестких процессов оказалось давать не легко. Кроме того, как мне кажется, на Waterfall требуется больше времени на изучение артефактов, схем работы и т.п. Если Kanban можно объяснить за пару лекций и студенты схватывают его на лету, то с Waterfall всё не так просто. На следующий год думаю подготовить примеры из индустрии, поискать статьи на тему успеха/провала того или иного водопадного проекта.

В целом про преподавание в ВУЗе могу сказать, что дело обычно не в студентах, а в методиках преподавания и желании преподавателя сделать интересно. У меня нет профессионального образования в педагогике, но чтение литературы в этом направлении, дает возможности предугадывать правильные подходы. Вложенная энергия преподавателя отражается интересом в глазах студентов. Я увидел понимание темы на зачёте, эти студенты понесут правильные мысли в компании, куда они устроятся на работу.

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

Моя книга «Антихрупкость в IT»

Как достигать результатов в IT-проектах в условиях неопределённости. Подробнее...