Демонстрации: ахиллесова пята гибкой разработкиИсточник: IBM
Сторонники Agile-разработки рекомендует проводить частые демонстрации - например, после каждого этапа разработки или шага - которые гарантируют соответствие хода разработки пожеланиям заказчиков.[1] Проблема здесь в том, что рекомендации по гибкой разработке не конкретизируют методы проведения демонстраций, объем работ, связанных с подготовкой и проведением демонстраций, и не указывают аудиторию, которой они должны быть представлены. Но еще хуже то, что эти рекомендации исходят из предположения, что программа разрабатывается для одного заказчика или одной организации. А что если вы разрабатываете программу для коммерческого распространения или для крупной и сложной организации с широким диапазоном подчас даже конкурирующих интересов? Несмотря на утверждение Манифеста гибкой разработки, что мы ставим "сотрудничество с заказчиком выше условий договора", откровенно говоря, многие группы гибкой разработки куда меньше контактируют с заказчиком, чем должны бы.[2] Какие же рекомендации даются по демонстрации гибких проектов? Почти никаких. Например, на многие подобные вопросы в сообществе Scrum отвечают фразой: "на усмотрение команды". Но как быть, если у вас многочисленная команда или она состоит из нескольких групп, либо и то, и другое? Как такая команда может принять решение об эффективном способе демонстрации или, что еще важнее, как собрать поступающие отзывы? Сообщество XP отстаивает понятие "местного заказчика". Интересно, что хорошего выйдет из того, что пользователи будут месяцами жить бок о бок с командой разработчиков? Предположим даже, что вы отыщите таких энтузиастов, но сможет ли местный заказчик представлять интересы всех других заказчиков, приобретающих коммерческую программу, или широкие противоречивые интересы большой и сложной организации? Если получение отзывов действительно играет важную роль для команд гибкой разработки, то для получения практической пользы от Манифеста гибкой разработки нужно дать тщательно продуманные ответы на следующие вопросы:
В этой статье я подробно остановлюсь на каждом из этих вопросов. Этот вопрос может показаться глупым. Тем не менее, он очень важен, поскольку не все заказчики одинаковы - существуют разные категории заказчиков, и это нужно учитывать. И более того, поскольку вас интересует мнение не одних лишь заказчиков (в чем нас пытается убедить Манифест гибкой разработки), я расширю это понятие до группы заинтересованных лиц . Заинтересованных лиц можно разделить на четыре категории, которые я и буду использовать в дальнейшем:[3]
Перечисленные категории заинтересованных лиц часто поддерживают друг друга или конфликтуют между собой в контексте разработки коммерческих программных продуктов или приложений. Я бы добавил еще, что среди этих четырех категорий мы зачастую уделяем больше внимания посвященным лицам и конечным пользователям, слишком часто забывая о наших деловых спонсорах (директорах) или партнерах. Как я собираюсь получать отзывы на демонстрации? Чтобы рассмотреть эту проблему на достаточно сложном примере, давайте предположим, что вы хотите получить отзывы о коммерческом программном продукте, который разрабатывается с применением гибких методов разработки. Если вы работаете в такой среде, то с самого начала понимаете, что сама идея демонстрации изначально таит в себе проблему - и называется она интеллектуальной собственностью . В зависимости от страны, в которой вы планируете проводить демонстрацию, может оказаться так, что вы потеряете ИС, как только продемонстрируете ее кому-то за пределами своей организации, поэтому рекомендуется предварительно обсудить защиту ИС с юристами. Давайте рассмотрим возможные последствия такой ситуации. Предположим, что ваша команда использует короткие этапы разработки (как и должно быть), скажем, по две недели. Предположим, что вы хотите проводить демонстрации каждые две недели. Готова ли другая сторона по договору к такому темпу? Дело здесь не только в интеллектуальной собственности, но и в том, что подготовка такой демонстрации может быть весьма сложным процессом, и при недосмотре с вашей стороны демонстрации могут быть отменены, даже не начавшись. Дифференциация отзывов заинтересованных лиц Но давайте все-таки предположим, что вам удалось разрешить юридические и прочие проблемы. Каким образом вы собираетесь получать отзывы разных заинтересованных лиц с помощью демонстраций? Взгляните на рисунок 1.[4]
Рисунок 1: Интервалы получения отзывов в ходе исполнения проекта Если вы планируете не однократную демонстрацию, а собираетесь проводить демонстрации регулярно, в этом случае может пригодиться разбивка заинтересованных лиц на разные категории. Я приведу подход, который можно считать "ментальной моделью" получения отзывов заинтересованных лиц:
И еще кое-что. Что если работа, выполненная на каком-то конкретном этапе практически не видна , например, эта работа выполнялась на API? Тут важно учесть, кто заинтересован в работе, выполненной на этом этапе или на нескольких последних этапах. Даже в случае API и аналогичных, не слишком эффектных функций, найдется тот, кому это интересно: партнерская команда разработчиков, группа разработчиков приложений, использующих вашу программу - кто угодно. И не забывайте всегда демонстрировать такие функции тем, кто заинтересован в их стабильной и эффективной работе. Принятие решений по отзывам заинтересованных лиц Есть и еще один аспект в проведении демонстраций, который не столь очевиден. Взгляните на схему, показанную на рисунке 2.
Рисунок 2: Интервалы получения отзывов по идеализированному проекту На этой простой диаграмме показана ситуация из идеального мира: вы получаете отзывы заинтересованных лиц, и эти отзывы влияют на этап разработки, следующий за тем, над которым вы собираетесь работать. Проблема в том, что реальный мир далек от идеала. Не все отзывы одинаковы. Допустим, к примеру, что после первого этапа вы можете организовать демонстрацию для девяноста конечных пользователей в рамках небольшой конференции или другого аналогичного события. При этом может оказаться так, что полученная информация вынудит вас к немедленным действиям. И, следовательно, может получиться так, что на втором этапе вы уже будете работать над реализацией полученных рекомендаций. Теперь предположим, что после второго этапа вы получаете отзыв директора, мнение которого было вам неизвестно. Если немедленно приступить к реализации его пожеланий, вы можете легко встроить в свой проект ненужные функции. Будет разумнее сравнить его мнение с отзывами, полученными после одного или нескольких последующих этапов. В конечном итоге, цель такова: проводя осмысленные демонстрации перед разными заинтересованными лицами на протяжении нескольких этапов разработки, ваша команда должна глубоко осознать, какие элементы будут отвечать общим требованиям, а какие нет. В этом случае демонстрации служат для проверки обоснованности и инновационности принятых решений и перестают играть роль серьезных и редких возможностей получения отзывов. Взгляните, к чему все это может привести. Высокопоставленный руководитель приходит к важному заказчику и возвращается с информацией о ключевой функции, добавления которой требует этот заказчик. Как вы поступите в такой ситуации? Скорее всего, вы молча примете это требование, сделав вид, что можете добавить эту функцию в существующую версию, обеспечив достаточное качество. Если же вы будете иметь опыт взаимодействия с разными заинтересованными лицами, вы сможете возразить, сказав: "Я понимаю, что вы просите добавить функцию x. И мы готовы сделать все, что вы попросите. Но помимо функций существуют коммерческие цели, о которых нам известно из обсуждений с другими лицами. Например, у нас есть двадцать заказчиков, которые попросили включить в проект вот это, но мы еще не смогли к этому приступить. И есть еще десять заказчиков, которые также обратились к нам с аналогичной просьбой. А эту функцию, о которой говорите вы, никто больше не упоминал. Какую функцию нам следует добавить?" Существуют ли другие способы получения отзывов кроме демонстраций? Методологии гибкой разработки подчеркивают роль интерактивной демонстрации как первичного механизма получения отзывов, но следует упомянуть и еще один подход. Методология Scrum вводит понятие собственника продукта . Проще говоря, собственник продукта принимает окончательное решение о том, что войдет в состав программного продукта или приложения. Для сложных проектов можно ввести в иерархию понятие главного собственника продукта в совокупности с собственниками продуктов, владеющими различными субкомпонентами или приложениями. Это важно, и может даже очень важно иметь человека, принимающего окончательное решение о том, что войдет в нашу программу. Но я боюсь, что владелец продукта может с неодобрением отнестись к описанной выше концепции демонстраций или будет слишком прислушиваться к мнению доверенных источников (например, отраслевых аналитиков), нежели к мнениям разных заинтересованных лиц. Впрочем, в конечном итоге, меня заботит не столько идея о собственнике продукта, сколько наша насущная потребность в получении содержательных отзывов. Конечно, демонстрации играют важную роль, но их недостаточно, поэтому стоит упомянуть три других подхода, способных повысить эффективность демонстраций: трансплантационная проверка, резидентура и обратная резидентура:[7]
Хотя я коснулся этих трех методов лишь поверхностно, их можно считать основными способами дополнить проводимые вами интерактивные демонстрации, которые дают более глубокое понимание способов применения вашей программы и коммерческой выгоды, которую она приносит. Есть ли другие способы получения отзывов? Безусловно. Для многих наших продуктов и приложений невероятно полезными оказались внутренние бета-тестирования. Мы использовали неформальные механизмы, позволяющие обмениваться кодом, компонентами и целыми продуктами до их выпуска. Сделайте последнюю версию своего кода доступной для применения. Будьте изобретательны. Главным недостатком такой разбивки на мелкие этапы с демонстрациями, трансплантационными проверками, резидентурами и обратными резидентурами с учетом мнения разных заинтересованных лиц - является то, что мы до некоторой степени сдерживаем то, что принято называть "инновационным мышлением". Другими словами, некоторые будут утверждать, что если вы только слушаете людей, которые покупают, используют, устанавливают и сопровождают ваши программы, то никогда не произведете "очередную революцию ". Прежде всего, я считаю, что подход, способствующий пошаговому обучению, с большей вероятностью приведет к успеху обычную команду - он обеспечивает устойчивый прогресс, не зависящий от одного лишь божественного озарения, которое весьма эфемерно. Ведь если ваша команда начнет интенсивно взаимодействовать с разными заинтересованными лицами, как рекомендовано в этой статье, разве это не позволит им лучше понять, что нужно на самом деле в противовес тому, что нужно прямо сейчас ?
|