Если провести аналогии и утрировать, то требования описывают точку, куда должна добраться вызванная машина такси, какими характеристиками она должна обладать и в какое время она должна подъехать]. Сбор, фиксация, изменение, управление. Несмотря на более чем пятидесятилетнее существование компьютерной отрасли, многие компании-разработчики ПО по-прежнему прикладывают значительные усилия для сбора и документирования требований, а также управления ими. Недостаточный объем информации, поступающей от пользователей, требования, сформулированные не полностью, их кардинальное изменение - вот основные причины, из-за которых командам, работающим в области информационных технологий, зачастую не удается вовремя и в рамках бюджета предоставить клиентам всю запланированную функциональность. Многие разработчики не умеют спокойно и профессионально собирать требования пользователей к ПО. Однако разработка ПО включает, по крайней мере, столько же общения, сколько и обычная работа с компьютером, но зачастую мы делаем акцент на работе с компьютером и не уделяем достаточно внимания общению. Пятый инвариант: основы управления проектами и управления рисками. Управление проектами является самостоятельной дисциплиной, но в рамках курса уместно привести базовые элементы и рассказать о специфике управления проектами в области разработки ПО. Любой современный проект (не только разработка ПО) требует десятков и сотен тысяч человекочасов. Для того чтобы такой проект имел шансы на успешное завершение, необходим план его реализации (управление проектом), который должен включать в себя анализ возможных неудачных сценариев и способов борьбы с ними (управление рисками). Ведь любая затяжка сроков приводит к удорожанию продукта, если не к краху компании. Нужно хотя бы вкратце рассказать о способах управления проектами, о том, чем занимается руководитель проекта, каковы его цели, почему команда разработчиков должна иметь руководителя. Практическая демонстрация расползания сроков в MS Project на примере гипотетического проекта из десяти задачек и трех исполнителей поможет перейти к понятию 'риск' и объяснить, почему продукт никогда не будет сделан к дате, которая фигурирует в первоначальной версии проекта. Следует искоренять традицию работы в авральном режиме. Эта порочная практика никогда не даст положительного результата.
Разработка ПО и кодерство - разные вещи. Настоящий разработчик, а тем более лидер команды должен быть еще и психологом.
Грустно сознавать, что с темами, которые я считаю актуальными, за один или два семестра ознакомиться нереально. А вот выстроить полноценный двухлетний курс с нуля вполне возможно. Оговорюсь еще раз, что вышеназванные задачи имеют общий характер и применимы как в профильном, так и в непрофильном образовании. При этом они никоим образом не замещают профильные дисциплины для будущих разработчиков, а только дополняют их.
С другой стороны, поскольку зависимость бизнеса от ИТ только возрастает, если студент, изучивший такие аспекты, станет руководителем группы/компании, а не простым разработчиком, то польза от этих знаний тоже будет. Понимание внутренней кухни позволит более грамотно и уверенно делать выбор при внедрении в компании новых систем и доводить внедрение до успешного завершения. Знание поможет отличать специалистов от лодырей, выявлять среди неопытных студентов и выпускников тех, в ком есть необходимый потенциал, и позволит собирать под своим крылом профессиональные команды.