Программное обеспечение всегда абстрактно и изменчиво. Этим свойством софт отличается от производства вещей в реальном мире. Например, после постройки дома никому не придёт в голову сказать: «Теперь давайте раздвинем 5-й и 6-й этажи и вставим между ними огромный аквариум с акулой». В мире материального производства так не бывает, а в разработке ПО это норма. Таким образом, подход к планированию работ должен соответствовать природе софта. Такой подход должен обеспечивать антихрупкость системе, давать ей возможность извлекать пользу от постоянных внешних изменений, даже от тех, которые мы изначально не могли предусмотреть.
Рис. 28. Метафора для инструмента планирования
На мой взгляд, хорошо подходит метафора навигатора (рис. 28) в автомобиле:
1. Навигатор знает, где мы сейчас и куда хотим приехать.
2. Если по дороге домой мы решили свернуть в магазин, то он перестроит первоначальный путь с учётом изменений.
3. Если мы передумали ехать домой, то ставим новую точку, и нам сразу показывается новый оптимальный путь до новой цели.
4. Если на дороге случилось ДТП и путь закрыт, то навигатор перестраивает маршрут.
Хорошо было бы иметь такие навигаторы при работе над IT-продуктами. Наше планирование превратилось бы в постоянное прокладывание оптимальных маршрутов до бизнес-ценности с быстрой реакцией на изменение внешних факторов, таких как отзывы пользователей, действия конкурентов, желания инвесторов и других. «Чёрные лебеди» (неожиданные события, которые очень сильно влияют на ситуацию) не предупреждают о своём появлении, поэтому я за такой инструмент, который готов выдержать любые неожиданности.