Когнитивные искажения в программировании. Часть 2
Всем привет!
Ну что ж, давайте продолжим знакомство с когнитивными искажениями и узнаем, какие еще ловушки нам уготованы. (А для тех, кто только что присоединился, вот ссылка на первую часть этой статьи.)
Итак, сегодня мы поговорим о таких искажениях:
эффект фокусировки;
предпочтение нулевого риска;
искажение в восприятии сделанного выбора;
иррациональная эскалация;
эффект знакомства с объектом;
эффект Даннинга — Крюгера.
Эффект фокусировки
Это чрезмерная концентрация на каком-то одном объекте, событии или аспекте, а в результате — ошибка в предсказании эффекта от его изменения. И вот вам пример. Допустим, нам кажется, что ТЗ, которое мы получили, мягко скажем, далеко от идеала. Но если бы его написали хорошо, вот тогда бы да-а, тогда бы мы ух какой проект запилили! «Гуглу» на зависть просто. Возможно, конечно. Но вряд ли. Возможно, наша основная беда вовсе не в ТЗ, а в команде, состоящей исключительно из джуниоров, которые если и способны сделать хороший проект, то в далеком будущем, но точно не сейчас.
Зацикливаясь на чем-то одном (на плохом управлении или, допустим, на одной технологии) и не пытаясь взглянуть на проблему шире, мы можем уйти по пути неверных решений, а в результате — проект на костылях, тлен и безысходность: «Ну как так-то, как так? Плохое вроде исправили, а хорошо все равно не стало. Беда, беда, огорчение».
Совет: оценивая воздействие тех или иных факторов, смотрите на них в совокупности, а не на каждый по отдельности. Если поставить в «Приору» двигатель от Nissan GTR, то, может, у вас и получится на ней полететь. (Полететь на небеса, кхм.) Но, очевидно, что двигатель не самая большая проблема «Приоры». (Кстати, не имею ничего против «Приор».)
Предпочтение нулевого риска
Это искажение о том, что обычно мы выбираем решение, которое убирает какой-то один риск целиком и полностью, но игнорирует все остальные или даже усугубляет их. В разрезе программирования можно проиллюстрировать так: мы выбираем подход, который избавляет нас от определенных рисков и проблем, зачастую даже не очень важных, но приносит с собой статистически более частые и значимые неудобства.
Вот вам самый простой и отчасти натянутый пример. Допустим, мы боремся с проблемой, связанной со скоростью ответа сервера, и выбираем решение на основе кеширования. И мы вроде бы молодцы и красавчики, ведь проблема полностью решена. Риск того, что пользователь будет долго ждать свои данные, ликвидирован. (Разумеется, остаются угрозы в виде медленного интернета, перегруженного фронта и т.д.). Но в то же время мы получаем проблемы с валидацией и инвалидацией кеша, консистентностью, релевантностью и всем таким прочим.
Еще один простой пример. Переусложненное тестирование. Вроде бы вероятность появления багов мы снизили. Да, но. Риски по поддержке вошли в чат. А вместе с ними — падение скорости реализации задач и еще целый хоровод последствий. Оптимальное решение — это компромисс. Так что приглядитесь к своей гениальной идее:, а не троянский ли конь она, часом?
Совет: выбирайте решение с наибольшей эффективностью в целом. Работа с рисками вообще штука непростая. На эту тему есть много книг и статей, существуют разные подходы и стратегии. Наверное, можно сказать, что это целая наука. Если не хотите в нее углубляться, выкручиваемся так: выписываем все возможные риски, указываем вероятность их возникновения в процентах и некое числовое значение значимости. В другой столбик заносим решения и их влияние на риски в целом. Дальше все просто: выбираем тот вариант, который нас устраивает, не усугубляет боль и страдания по каждой проблеме и не приносит новых неудобств. В общем, с наибольшей общей эффективностью, если по-умному.
Искажение в восприятии сделанного выбора
О, это искажение встречается в повседневной жизни на каждом углу. В разработке, кстати, тоже. Суть в том, что мы начинаем придумывать плюсы и оправдывать собственный выбор уже после того, как мы его сделали. Доходит порой до истинно фанатического упорства. Мы придумали какое-то решение, реализовали его, и от всех противоречащих ему аргументов яростно отбиваемся порой даже надуманными и крайне субъективными доказательствами своей правоты.
Совет: иногда нужно уметь сказать себе: «Да, я облажался, я все исправлю». На такое способны только психологически взрослые люди. Признать свои ошибки, особенно перед другими людьми, очень сложно. Но стоит помнить о том, что признание ошибок говорит не о вашей слабости, а о вашей взрослости и умении брать на себя ответственность.
Иррациональная эскалация
Это ошибка невозвратных затрат. Приверженность ранее сделанному выбору, даже при объективных недостатках оного. Очень распространено в инвестировании. (Ох, сколько я видел стартапов, с которых хоть научный труд пиши по этой теме!). Ну и в программировании встречается, конечно.
К примеру, есть у нас проект с неправильной архитектурой. Ну не подходит она теперь под новые требования и реалии. Что же делать, как же быть? По-хорошему, надо собрать волю в кулак, выкинуть все старое и написать с нуля. Но мы же не готовы так просто сдаться. Мы же еще поборемся. Мыши плакали, кололись, но продолжали свое мазохистское развлечение, да. Проект дорабатывается и обрастает костылями невообразимой формы. И чем дальше, тем, с одной стороны, жальче проявленной фантазии и усилий, потраченных на очередную гениальную подпорку, с другой стороны, все ближе тупик, выход из которого вы уже не найдете. Если посмотреть в цифрах, реально дешевле и быстрее было вовремя сказать: «Прости, прощай!». Но мы подпираем палками, ставим заплатки, плачем и просим нашу лошадку скакать дальше, не замечая, что она как бы умерла. Насовсем. И никакая некромантия уже не поможет.
Кстати, заметили, что это искажение похоже на предыдущее, которое о восприятии сделанного выбора? Так и есть, они вообще часто парой ходят.
Совет: оценивайте риски и дальнейшие потери. Оценили? Повеяло безысходностью? Значит, говорим себе: «Умерла так умерла, пойду куплю новую коняшку, но в этот раз кормить буду зерном, а не пиццей».
Эффект знакомства с объектом
Мы выражаем симпатию и отдаем предпочтение тем вещам, с которыми мы знакомы. Вы думаете, зачем нам эти бесячие рекламы показывают без конца? Вот именно поэтому. А в программировании это очень частое явление при выборе фреймворков, языков программирования и тому подобного.
Совет от капитана Очевидность: откройтесь новому! Предубеждения и привычки бывают полезны, не спорю. Но лишь тогда, когда они приносят пользу. И если вы глядите на числовые показатели, графики, сравнительное тестирование, а результаты вас не радуют, пора искать новый путь. Но не стоит впадать и в другую крайность: каждый раз использовать новые технологии — это за гранью добра и зла, конечно.
Ну и напоследок небольшой вброс.
Эффект Даннинга — Крюгера
Люди с низким уровнем квалификации делают ошибочные выводы и принимают неудачные решения, но при этом они не в состоянии осознать свои ошибки как раз из-за низкого уровня квалификации.
Как говорил доктор Хаус: «Хуже профнепригодных только те, кто не подозревает о своей непригодности».
Совет (тут сложно, но я попробую): когда принимаете решение, спросите себя: «А так ли это, как я думаю?». Проверьте информацию, хранящуюся в вашей голове. Быть может, существуют более удачные подходы, а возможно, об этом еще и писали, и даже видео снимали. Здоровая самокритичность и здоровое сомнение в своих познаниях — это хорошо. Главное, не впадайте в состояние «я ни в чем не уверен, и вообще у меня лапки».
Что ж, на этом пока все. Надеюсь, вам было интересно. И если все-таки было, то могу обрадовать: скоро появится еще одна статья об искажениях. Ну, или две. (Но это, как вы поняли, неточно.)