Введение в целенаправленное исследование

Перевод статьи Дэна Норта "Introducing Deliberate Discovery"

В прошлом году я писал о том, как мы всё неправильно планируем, точнее, как мы зачем-то фокусируемся на ненужных вещах, когда занимаемся планированием.
Мы зациклены на историях, их оценках и процессе оценивания, потому что это то, чему нас учили.
Это напоминает мне анекдот про человека, который встречает ночью на улице пьяного, ищущего что-то под фонарём. Пьяный говорит, что ищет ключи, а человек ему говорит: похоже под фонарём их нет, иначе мы бы их уже заметили. «Конечно, — говорит пьяный, — я их уронил совсем не здесь, но там темно и я решил их поискать здесь - тут-то всё видно».
Наш фонарь — это Игра В Планирование, которая включает в себя записывание Историй и Оценивание, использование Покера Планирования, а также других Техник Оценивания (всё, что с большой буквы — встречается в Литературе По Гибким Методам и поэтому имеет налёт Официально Признанного).
Я предположил, что нам не удаётся эффективно использовать время планирования, и что нам стоило бы посвятить это время выяснению как можно большего количества полезных вещей, пока все участники находятся в одной комнате. Я это назвал «целенаправленное исследование».
Марк МакНейлл прокомментировал: «Целенаправленное исследование. Противопоставленное хаотичному исследованию? Или какому-нибудь ещё виду исследования? Зачем добавлять лишнее слово «целенаправленное»?»

Хаотичное исследование
Если вы делаете одно и то же сто раз, вы узнаёте об этом всё больше и больше. Возможно. Скорее всего. Может быть. Хорошо, если вы делаете одно и то же сто раз, и случаются всякие неожиданные вещи — вы будете учиться. Если вы просто делаете то же самое снова и снова, вы вероятно будете всё лучше выполнять эту последовательность действий, но вы не научитесь ничему новому.
Прагматичные программисты описывают это как разницу между десятью годами опыта и годичным опытом, повторенным десять раз.
Обучение происходит при столкновении с неожиданным.
Как говорит пословица: «Правильные решения приходят с опытом. Опыт приобретается из-за неправильных решений».
Когда вы получаете неожиданный результат, вам приходится адаптировать свою модель мира в соответствии с ним (или отбросить это событие как глюк и выискивать только данные, подтверждающие правило — это известно, как “склонность к подтверждению", и является отличным способом ничему не научиться).
В дзэне этот момент озарения — развития своей модели мира — известен как сатори, и ученики дзэна стремятся вызвать у себя такие моменты сатори с помощью коанов.
Подобно этому, модель Дрейфуса приобретения знаний описывает Продвинутого Новичка, как того, кто начинает помещать вызубренные знания в контекст — и понимать, где они работают, а где — неприменимы.
Опять же, это может случиться только когда обучающийся сталкивается с ситуациями, выходящими за рамки того, что он уже знает (вот почему искусственное ограничение Лучшими Практиками может подавлять обучение).
Из этого следует, что ученик может ускорить своё обучение с помощью активного выискивания столкновений, которые его, скорее всего, чему-то научат. Вот в чём разница между хаотичным и целенаправленным исследованием.

Знание является ограничением
Liz Keogh рассказала мне о мысленном эксперименте, который она проделала. Подумайте о недавнем серьёзном проекте, или работе, которую ваша команда выполнила (идеально, если это заняло несколько месяцев). Сколько времени это заняло, от начала до конца, от начала и до сдачи? Теперь представьте, что вам предстоит сделать тот же самый проект ещё раз, той же командой, с теми же организационными ограничениями, со всем-всем тем же самым, кроме того, что ваша команда уже будет знать всё то, чему она научилась за время выполнения этого проекта. Сколько бы времени у вас это заняло во второй раз, пройти весь этот путь? Сейчас остановитесь и прикиньте.
Оказалось, что нередкими были ответы с порядком цифр от ¼ до ½ времени на повторение проекта. Это привело к выводу, что “Знание является ограничением".
Исправлено: Лиз говорит, что мысленный эксперимент породил Эшли Джонсон (Ashley Johnson) из Gemba Systems, а она услышала о нём от César Idrovo.
Если мы допустим, что единственная разница в том, что во втором подходе вы уже изучили проблему, это приведёт к предположению, что самым большим препятствием для вашей производительности было то, о чём вы тогда не знали. Я не говорю, что вы потратили всё дополнительное время, плотно занимаясь изучением того или сего. Это, чёрт возьми, весело, и даже более того — полезно! Более типичным был бы случай, когда вы, возможно, потратили его, стуча во все двери вокруг в попытках найти путь вперёд, или изнывали на встречах в попытках понять, что на уме у парня с той стороны, чтобы можно было пройти следующее препятствие на дороге, или идя вперёд по дорожке, которая всегда заводит в тупик, знай вы об этом заранее. Иди в попытках в надцатый раз как-то обойти дурацкую работу сокетов NIO на Java. Так что в действительности не знание является ограничением — а невежество. Точнее, невежество в специфических аспектах решаемой проблемы. Другими словами: невежество — это единственное и самое большое препятствие для производительности.

Невежество многомерно
Невежество таится за каждым углом. Вы можете быть невежественными в особенностях используемых технологий, невежественными в доступной для вас широте выбора технологий, невежественными в предметной области, невежественными в способах, которыми вы можете справиться с проблемой или с благоприятной возможностью, невежественными в лучшем способе озвучивания проблемы – о лучшей модели – которая сделала бы решение очевидным, невежественными относительно людей в команде — их устремлениях и страхах, их мотивации, их отношениях друг с другом, и далее – вширь – внутри организации, невежественными относительно ограничений внутри организации, невежественными относительно рисков интеграции решений сторонних разработчиков, невежественными о людях, с которыми вам предстоит наладить отношения, невежественными в методике поставки, невежественными относительно культуры организации. Я здесь просто поверхностно обрисовал это — я уверен, что вы можете себе представить множество других факторов, которые отражаются на нашей способности сдать продукт, и в которых мы будем более или менее невежественными.
И напоследок добиваю: вы обычно невежественны относительно того, насколько вы невежественны, и эта невежественность второго порядка, вместо того, чтобы сделать вас более осторожным, заставляет вас вести себя, как записной дурак. Это прекрасно просуммировано в этой цитате с сайта фрагментов чата, bash.org:
<Pahalial> “невежество чаще плодит уверенность, чем знание" — Чарльз Дарвин
<kionix> wtf? плодит — это не слово. Прекрати выдумывать слова […нецензурно…]

Исследование нелинейно и непредсказуемо
Теперь ещё раз подумайте о проекте, который вы только что выполнили. Ваше невежество уменьшалось постоянно и линейно по всем этим направлениям? Едва ли. Что вероятно случалось — это то, что в различные моменты — некоторые запомнились лучше, чем остальные — у вас были внезапные озарения или осознания, которые или произошли сами, или под напором обстоятельств. Очень вероятно, что многое из этого незапланированного обучения происходило довольно поздно вечером, в сопровождении глубокого неверия, гнева, и, вероятно, также и всех остальных стадий скорби, когда вы пришли к соглашению о смерти вашей строгой модели того, Как Всё Должно Быть.
Таким образом, для любого отдельного фактора, вы начинаете проект с определенного уровня невежества, и оно уменьшается скачками - в непредсказуемом стиле - с каждым обучающим эпизодом, пока в конце проекта оно не окажется на другом, более низком уровне. Конечно, многие из этих факторов взаимосвязаны, поэтому в одном эпизоде вы, как правило, научитесь нескольким разным вещам - ваше невежество о различных факторах одновременно снизится на различный объём. В действительности большая часть этого обучения является по прихоти Богов Проекта, и в значительной степени находится вне вашего контроля. Как вы могли бы догадаться, что API сторонних разработчиков будет настолько отличаться от спецификации? Кто мог бы предположить, жена Дэйва выберет эти выходные, чтобы родить ребенка?
Ну на самом деле, вы могли бы. Хорошо, вы не могли знать, что эти вещи будут происходить, но вы были бы сумасшедшим - или, скорее, "нормальным" – если бы не думали, что что-то случится, и это суть Целенаправленного Исследования.
Что если вы предположите, что что-то плохое случится?
У нас есть встроенный механизм для бездумного оптимизма. Это называется склонностью к приписыванию, и мы используем её, чтобы защитить наши хрупкие эго от большой плохой реальности снаружи. Вы можете больше прочитать об этом в увлекательной книге Корделии Файн “A Mind of Its Own” (“Сам себе ум”), но в общем, это означает, что мы предполагаем, что, когда плохие вещи случаются с другими людьми, они, вероятно, этого заслуживают. Они облажались, или они не планировали заранее, или, ну, любое количество причин. Но когда плохие вещи случаются с нами — о! — это совсем другое. Мы не имели никакой возможности предвидеть, что у нас впереди – такое! Это могло случиться с кем угодно. Пожалейте нас.
Мы поддаёмся склонности к приписыванию, когда мы оцениваем (как указала Линда Райзинг), и когда мы оцениваем риск, и поэтому мы постоянно поражаемся - и давайте увидим это, немного разочарованно, – когда плохие вещи случаются на наших проектах. Вот еще один мысленный эксперимент: Что, если вместо того, чтобы надеяться, что ничего плохого не случится на этот раз, вы примете как факт следующее:
несколько (выбрать количество) Непредсказуемых Плохих Вещей произойдёт во время вашего проекта. Вы не можете знать заранее, что это будут за Плохие Вещи. Поэтому они “Непредсказуемые”. Плохие Вещи будут существенно влиять на сдачу проекта. Поэтому они “Плохие”.
Как бы это повлияло на ваш подход к проекту?

Наконец, целенаправленное исследование
Итак, я думаю, что мы искали в неправильном месте. Методологии, практики и шаблоны поставки – это всё хорошо и правильно, но они не принимают во внимание единственный и самый большой ограничивающий фактор для успешной сдачи проекта. Давайте допустим, что в течение жизни проекта наше невежество будет уменьшаться в нескольких измерениях, которые имеют отношение к нашему проекту. Давайте также допустим, что незнание определенных факторов сейчас – это то, что ограничивает нас в настоящее время больше всего. Допустим далее, что мы, вероятно, не знаем, что это именно за волшебные факторы, которые откроют наши возможности: мы находимся в неведении второго порядка о том, какие факторы являются в настоящее время наиболее ограничивающими. После того, как мы поймём, что это такое, мы сможем применять методологию, чтобы последовательно двигаться вперед, но до той поры, пока мы этого не сделаем, мы будем блуждать в потёмках.
Конечно, имеет смысл вкладывать усилия, во-первых, в исследовании того, в каких аспектах сдачи проекта мы наиболее критически невежественны (то есть где мы одновременно и невежественны, и наше невежество тормозит производительность), и далее инвестировать в снижение этого невежества – преднамеренно обнаруживая достаточно вещей, чтобы снять это ограничение и позволить себе двигаться. И во время всего проекта, изо дня в день, мы должны пытаться определить, где и как наше невежество тормозит нас. В идеале мы хотим создать максимально крутой, насколько это возможно, спуск по каждому измерению на кривой невежества, поэтому мы преднамеренно уменьшаем степень, в которой невежество нас ограничивает, вместо того, чтобы быть жертвой обстоятельств.
Это умение, и как таковое является предметом изучения для модели Дрейфуса. Это означает, что первоначально мы будем в этом очень плохи. Потом мы начнем выяснить, насколько мы в этом плохи, и работать над этим. Потом мы выясним некоторые Лучшие Практики (я извиняюсь – это неизбежно. Это то, что делают Компетентные люди, чтобы "защитить" Продвинутых Новичков), и, мы надеемся, вскоре после этого, выясним способы, чтобы ниспровергнуть эти Лучшие Практики и продолжать выполнение работ. Самая трудной частью будет удар по нашим эго, когда мы поймём, насколько мы систематически плохи в реализации проектов, и то, как мы раньше смотрели мимо проблемы, потому что наша методика – всегда искать под фонарем, ведь мы чувствуем себе в безопасности под фонарем.

Что дальше?
Это возвращает меня к первоначальной посылке от прошлого (2005?) года о том, что в самом начале, когда мы наиболее невежественны в большинстве аспектов проекта, лучшим использованием имеющегося времени будет попытаться определить и уменьшить наше невежество на всех измерениях, о которых мы только можем подумать. (Небесспорно, но во время одного из первых упражнений нам желательно принять удар и выявить эти самые измерения, а также попытаться выяснить, насколько невежественны мы есть. Как вам такое упражнения в смирении?) Конечно, если мы будем придерживаться традиционной модели Гибкого планирования, мы сделаем некоторые открытия, походу того, как мы будем разделять эпики в истории, истории – в фичи, фичи – в сценарии, но насколько большего мы можем достичь, если мы отложим это в сторону, и вместо этого сосредоточимся на реальном деле?
Изобретатель проблемно-ориентированного проектирования Эрик Эванс описывает предварительный анализ как "замыкание в нашем невежестве." Он попал в точку, и это относится не только к анализу требований старой школы. Смертельные случаи упражнений в планировании, которые я видел на многих Гибких проектах, были завещаны нам той же самой проблемой.
Я надеюсь, что это дало вам представление, о чём болит моя голова. Про целенаправленное исследование можно сказать намного больше. Подумайте о применении этого принципа при изучении нового языка, или при освоении новой технологии, или новой предметной области. Что вы могли бы сделать, чтобы определить и уменьшить свое невежество наиболее быстро? Почему группы с быстрой обратной связью настолько более успешны, чем команды длинного цикла? Как мы можем измерить невежество? Я буду писать ещё на эту тему в ближайшие недели и месяцы, и я буду говорить о Преднамеренном Открытии на QCon в Сан-Франциско в ноябре [2007 г.?].
Благодарности Лиз Кео, Линдсей Норт, Джо Вэлнс, Крис Мэттс, Стив Хейс, Кевлин Хенни и многим другим за помощь выращивании идей из этой статьи. И отдельное спасибо Гленн Ванденбург и Майк Нигард за разговор на JAOO Австралии о единице невежества.
Chief technology officer "Один Сервис.ВЦ" - Денис Олейник