Корпоративные информационные системы

Гибкая разработка (Agile)

В лекции сопоставляются два подхода к управлению проектами. Сначала рассматривается классическая плановая модель, характерная для строительства, где жёсткая технологическая последовательность диктует необходимость детального прогнозирования. Затем показывается, как природа информационных технологий — чрезвычайная гибкость программного кода — обесценивает такое планирование и приводит к появлению реактивных систем: багтрекеров и гибких методологий вроде Scrum. Логика изложения ведёт от анализа ограничений физических материалов к обоснованию эффективности быстрого распределения задач в условиях высокой неопределённости ИТ-проектов.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснить фундаментальные предпосылки классического планового управления проектами.
2. Сравнить ограничения, накладываемые физическими и информационными материалами на порядок выполнения работ.
3. Сформулировать причины появления реактивных систем управления задачами в ИТ-сфере.
4. Описать принцип работы багтрекеров и их отличие от систем календарно-сетевого планирования.
5. Охарактеризовать методологию Scrum как практическое воплощение гибкого, непредсказуемого процесса разработки.
6. Оценить, в каких ситуациях рационально отказаться от попыток долгосрочного прогнозирования последовательности задач.
Показывать лекцию целиком
Краткое изложение

Два подхода к управлению проектами

Рассмотрим вторую интересную группу частных референтных моделей — модели проектного управления.

Классическое плановое управление

Большинство традиционных моделей управления проектами базируется на предположении, что проект необходимо тщательно спланировать, а затем выполнить. Типичный пример — системы вроде Microsoft Project: в них обязательно строятся диаграммы Ганта, планируются ресурсы, их загрузка, даты начала и окончания задач.

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

Влияние информационных технологий

Развитие ИТ породило совершенно иной взгляд на управление проектами. Его основой стали системы, которые называют багтрекерами (bug tracker) или системами управления задачами. В них на первый план выходит не прогнозирование, а умение быстро и оптимально распределять внезапно возникающие задачи среди участников так, чтобы суммарное время их решения было минимальным. Это сугубо реактивная система, которая не пытается предсказать, когда и в связи с чем появится следующая задача. Подобный подход характерен, например, для управления инцидентами в библиотеке ITIL (Information Technology Infrastructure Library) — там события происходят непредсказуемо, и главная цель — как можно быстрее обработать их имеющимися ресурсами.

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

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

Гибкие методологии: Scrum

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

Краткие итоги

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

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

Именно этот разрыв между физической и информационной реальностью порождает реактивные системы управления. Багтрекер и подобные ему инструменты принципиально отказываются от календарного горизонта. Их цель — не предвидение, а минимизация времени реакции: непрерывная оптимизация очереди входящих задач под текущий состав и загрузку исполнителей. Такой подход уже институционализирован в ITIL как процесс управления инцидентами, где непредсказуемость событий заложена в саму модель.

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

Таким образом, выбор между плановой и реактивной моделью не является вопросом идеологии или моды. Это прямое следствие материальной природы создаваемого продукта: чем пластичнее сырьё и чем меньше в нём предопределённых зависимостей, тем выгоднее заменять функцию прогнозирования функцией быстрого распределения, а фиксированный объём работ — непрерывно пересматриваемым бэклогом.
Два подхода к управлению проектами

Большинство классических моделей управления проектами предполагает, что проект сначала детально планируется, а затем выполняется. Типичный инструмент — Microsoft Project с диаграммами Ганта. Такая логика естественна для физических объектов, например в капстроительстве: нельзя возвести крышу раньше фундамента, последовательность жёстко задана.

Развитие ИТ породило иной взгляд. Появились багтрекеры (bug tracker) — реактивные системы управления задачами. Их цель не прогнозировать будущее, а максимально быстро распределять неожиданно возникающие задачи между участниками, минимизируя суммарное время решения. Пример — управление инцидентами в ITIL, где инциденты непредсказуемы, и важна скорость обработки.

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

На этом основан и Scrum — популярная в ИТ гибкая методология. Проект в Scrum не имеет фиксированной конечной даты: он длится, пока у заказчика есть бюджет и интерес, а дальнейшие улучшения окупаются. Это подвижная технология, приспособленная к среде, где цена изменений низка, а неопределённость высока.

Выводы

1. Традиционные модели управления проектами опираются на обязательное предварительное планирование и последующее исполнение.
2. В строительстве и других физических отраслях технологическая последовательность жёстко задана свойствами материалов.
3. Программный код как материал чрезвычайно гибок и допускает практически любой порядок создания компонентов системы.
4. Множество допустимых последовательностей в ИТ-проекте делает поиск единственного оптимального плана нерациональным.
5. Багтрекеры — это реактивные системы, ориентированные на максимально быстрое распределение поступающих задач.
6. В багтрекерах не предпринимается попыток прогнозировать время появления или причину возникновения будущих задач.
7. Управление инцидентами в ITIL является характерным примером реактивного подхода к обработке непредсказуемых событий.
8. Преимущество получает не прогноз, а способность оптимально загружать освободившиеся ресурсы или следовать приоритетам заказчика.
9. Scrum реализует гибкую логику, растягивая процесс разработки на неопределённый срок без фиксированной конечной даты.
10. В Scrum продолжение работ определяется текущей экономической целесообразностью и решением заказчика.
11. Противопоставление планового и реактивного подходов объясняется фундаментальной разницей между физической и информационной природой объектов.
12. Выбор модели управления должен диктоваться степенью гибкости материала и предопределённостью последовательности работ.

Вопросы для самопроверки

1. На каком базовом предположении держатся традиционные процессные модели управления проектами?
2. Почему в капитальном строительстве план последовательности работ возникает естественным образом?
3. Какое свойство программного кода сделало возможным появление реактивных систем управления?
4. Что такое багтрекер и какова его ключевая функция в проекте?
5. В чём заключается принципиальное отличие реактивной системы от системы календарно-сетевого планирования?
6. Какую аналогию можно провести между управлением инцидентами в ITIL и работой багтрекера?
7. Почему при огромном числе допустимых вариантов порядка задач планирование теряет смысл?
8. Какой подход предлагается вместо прогнозирования последовательности работ в гибких ИТ-проектах?
9. Чем определяется продолжительность проекта в методологии Scrum?
10. Чем принципиально различаются ограничения, накладываемые бетоном и программным кодом на управление проектом?
11. В каких ситуациях реактивное распределение задач оказывается эффективнее детального плана?
12. Как связаны гибкость материала и отказ от долгосрочного прогнозирования в управлении проектами?
Вернуться к учебному плану