Секция 4: «Взаимодействие вузов и ИТ-компаний» 24 октября 11:05 – 11:45

 

Доклад «Обучение командной разработке ПО на кейсах индустриальных партнеров: как мы это делаем в Политехе»

Докладчик:

Владимир Михайлович Ицыксон
директор Высшей школы интеллектуальных систем и суперкомпьютерных технологий СПбПУ, доцент, к.т.н

Аннотация: 

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

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

Запись доклада

Презентация доклада

Резюме: 

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

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

В магистратуре есть дисциплина «Технологии разработки программного обеспечения», рассчитанная на 2 семестра. Предусмотрены 2 вида занятий – лекции и курсовой проект. Мы просим российские IT-компании представить задачи, над которыми могли бы работать студенты. Обычные курсовые проекты заменяются групповыми. Студенты работают над реальными промышленными кейсами. 

В начале каждого семестра формируется 10-12 кейсов, представляемых разными промышленными партнёрами. Трудоёмкость кейса предполагает, что над ним будет работать команда из 5-6 человек в течение 4 месяцев. Выполнение проекта предусматривает 5 публичных встреч. По итогам студенты получают зачёт по курсовому проекту. В оценке учитывается личное участие студента и групповой успех всей команды. Студенты получают денежное вознаграждение за успешно выполненный проект.

Каждый год мы привлекаем 3-5 промышленных партнёров, каждый из которых предлагает 1-3 кейса. Большинство проектов программные, но есть ещё программно-аппаратные и изредка исследовательские проекты. Осуществляется либо случайное, либо случайно-справедливое распределение по командам, когда мы пытаемся сформировать команды, примерно одинаковые по силам. Несколько раз мы использовали целевое распределение, когда нужно было быть уверенным что в команде окажутся все студенты с нужными компетенциями. 

Первая встреча со студентами – это старт проектов. Встречаются все студенты (более 50 человек), преподаватели и представители заказчиков. На встрече объявляются составы команд, заказчики представляют кейсы, команды распределяют кейсы между собой, для каждой команды назначается преподаватель-куратор, команды получают контакты заказчика. 

От студентов требуется регулярное взаимодействие с заказчиком и куратором. Распределение ролей и задач в команде отдаётся на откуп студентам. Требуется равномерное участие в работе всех членов команды. В процессе выполнения проекта мы учим студентов учитывать и анализировать риски. Предъявляется ряд технических требований: ведение проекта на открытом хостинге; использования VCS, систем багтрекинга; автоматизация сборки, использование CI/CD; автоматизация тестирования.

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

От студентов требуется использование систем контроля версий, багтрекинга, хостинга проектов, автоматизации сборки, непрерывной интеграции и непрерывного развертывания, разработки, автоматизации тестирования, проведения Code review, контейнеризации, организации коммуникаций, а также использование среды разработки, канбан-доски и скрам-доски.

Дальнейшие встречи – это промежуточные ежемесячные спринты. На них участвуют все команды, кураторы, по возможности? представители заказчиков. Каждая команда докладывает результаты предыдущего спринта, кураторы и представители заказчика задают вопросы, команда защищает свой проект. 

На финальном представлении проектов демонстрируется действующее приложение/устройство/система. Студенты получают обратную связь от заказчика и коллегиально принимается решение об успешности проекта.

Такого рода взаимодействие позволяет университету эффективно организовать проектную деятельность, развить у студентов навыки для работы в индустрии. Студенты получают бесценный опыт работы в команде, погружение в реальный мир промышленных проектов, возможность заработать небольшие деньги и показать себя промышленной компании с перспективой будущего трудоустройства. Компании-партнёры получают возможность «дешевой» обкатки прототипов решений, оценить студентов в деле и прямой доступ к потенциальным стажерам/сотрудникам.