Почему очевидные вещи нужно проговаривать
В 1999 году NASA потеряла Mars Climate Orbiter. На минуточку, это аппарат стоил миллионы долларов. И он просто сгорел в атмосфере Марса. Причина оказалась до слез глупой. Одна команда инженеров использовала международную единицу измерения силы (ньютон), а другая – британскую единицу измерения (фунт-сила). Каждая группа считала свою систему единиц очевидной. Никто не проговорил вслух элементарный вопрос: "А мы ведь все считаем в ньютонах, ведь так?". Когда я прочитал заметку об этом, подумал: "Ну КАК? Инженеры, космос и все такое, ну вот как так?". А потом повспоминал, что подобное случалось, в общем-то, и на моих глазах. Конечно, в более скромных масштабах, не космических, но тем не менее.
Собственно, психологи давно описали когнитивные ловушки, из-за которых мы перестаем проговаривать важное, но нужное. И эти ловушки можно обойти вполне простыми действиями.
Но давайте немного покопаемся. Самая известная штука здесь - проклятие знания. В 1990 году Элизабет Ньютон провела интересный эксперимент. И вот его суть. Одни участники отбивали пальцем ритм известной песни, а другие пытались угадать мелодию. Те, кто стучали, думали, что слушатели их поймут и отгадают, а реально доля угадываний составила жалкие 2,5%. А почему? А потому что голове стучащего играет мелодия, он слышит прямо оркестр, а вот слушатель воспринимает только, ну по-честному, бессвязные стуки. Когда я пишу код, у меня в голове звучит, простите, целая симфония (причины выбора библиотеки, крайние случаи, архитектурные тонкости и так далее). А для коллеги же на код-ревью это просто строчки кода, без всей этой истории. Без моих комментариев он не восстановит ход мысли.
Следующий подвох - иллюзия прозрачности. Ну мы же всерьез думаем, что наши мысли, сомнения и даже намерения прекрасно видны окружающим. Помню, как однажды на митинге молчаливо страдал по поводу одной задачи. Я, так сказать, красноречиво (как мне казалось) молчал по поводу сомнительных моментов. Мне казалось, мой скептический вид прямо кричит о том, что все не так. Не-а, никто не услышал. Ну и потом коллега радостно взял эту самую задачу и героически потратил четыре (кажется) дня, чтобы в итоге упереться в те грабли, которые я и предполагал, о которых, так сказать, "очевидно" молчал.
Ну так какие же очевидные вещи мы не проговариваем? Да, собственно, почти все, что составляет контекст работы. Ну вот смотрите, допустим, "Сделать отчет по продажам" - звучит как будто бы просто. Но для исполнителя этот самый "отчет" – это, допустим, сгенерированный PDF-файл. А вот для другого, для заказчика, - это Excel-таблица, где можно покрутить всякие фильтры. Вот поэтому понятие общего знания и говорит о том, что, чтобы все правильно сложилось, собеседники должны обладать плюс-минус одинаковой информацией. А здесь это как раз-таки и не проверили. Ну и собственно, итог: готовый PDF улетает в мусорку, и нужно все переделывать.
Или допустим, в проекте живет костыль, добавленный года три назад. И старички знают, что без него чего-то там ломается. Новенький разработчик видит некрасивый код и решает его переписать, ведь очевидно же, что тут надо сделать вообще по-другому. И это, собственно, фундаментальная ошибка атрибуции. Это когда чужие поступки мы объясняем личными качествами (он плохой программист), а свои - обстоятельствами (меня торопили, и вообще я не виноват). И вот новичок думает: "Ну-у-у автор костыля очень сильно был неправ". Но если бы новичку рассказали, ПОЧЕМУ он так сделал, он бы понял, что автор был умница и вообще спас проект в дедлайн. Контекст-то не был проговорен.
Или вот еще вопрос: как вообще определить готовность задачи? Что значит "задача выполнена"? Код написан и лежит в ветке? Покрыт тестами? Задокументирован? И т.д. У каждого может быть свое очевидное определение. Без явной договоренности мы получаем либо недотестированный функционал, либо бесконечный перфекционизм.
Вообще, история с Mars Climate Orbiter не единственный пример подобных катастроф, случившихся из-за непроговоренных очевидностей. И сценарий везде плюс-минус один и тот же. Люди уверены, что собеседник разделяет их картину мира, и не произносят вслух ключевую фразу, которая могла бы все предотвратить.
Рейс Avianca 52. У самолета, заходящего на посадку в Нью-Йорке, заканчивалось топливо. Экипаж несколько раз говорил диспетчерам о том, что оно на исходе и просил приоритет на посадку. Но если для испаноговорящих пилотов слово "приоритет", обозначало критически важный факт, то англоговорящие диспетчеры восприняли это совсем иначе. Пилотам казалось очевидным, что, если они сообщают, что топливо на исходе, это автоматически означает катастрофу. Диспетчеры же трактовали ситуацию как рядовую. Самолет разбился.
Катастрофа Челленджера. Инженеры компании Morton Thiokol знали, что резиновые уплотнительные кольца плохо ведут себя при низких температурах. Накануне запуска ударили заморозки. Инженеры пытались донести до руководства, мол, нельзя запускать, кольца откажут. Но недостаточно убедительно. Менеджеры думали, что риск приемлемый. Шаттл взорвался на 73 секунде полета.
Все эти истории - про одно и то же. Пока мы не проговариваем очевидное, мы рискуем, что собеседник додумает за нас. И его догадка может оказаться фатальной. В обычной жизни, конечно, ставки сильно ниже. Но потери тоже могут быть ощутимы. Можно потратить часы на реверс-инжиниринг чужого очевидного кода, не подкрепленного комментариями. Или какой-нибудь новичок может потратить неделю на настройку окружения, потому что не спросил, как это правильно сделать, хотя решение занимало от силы пару часов.
В общем, чтобы не наступать на такие грабли, просто не нужно молчать, нужно проговаривать даже, казалось бы, очевидные вещи. И в том числе прописывать это в комментариях к коду. Можно, например, при багофиксе, да и вообще в любой задаче, подробно описывать, что, зачем и почему. Можно давать младшим коллегам или новичкам читать написанную вами документацию и просить задавать любые, даже глупые, вопросы. Потому что то, что вам кажется избыточным или очевидным, для других – не факт. Да и вообще забыть о том, что вопросы могут быть глупые. И если в голове пронеслась мысль "ой, да здесь и так все понятно", все равно надо проговорить, что именно понятно и как. Пара вовремя сказанных фраз может уберечь от больших потерь.
Проговаривание очевидных вещей - это не признание собеседника некомпетентным и не занудство. Мы не умеем читать мысли, но мы умеем говорить. И это проще, чем кажется.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.