По странному стечению обстоятельств, моя прошлая статья не ушла под воду, и в тихом режиме поплавала на поверхности Хабра. Похоже, интерес у людей все же есть и поэтому можно еще немного поразмышлять на тему иррациональности нашего
В этот раз мне понадобится помощь 2-х исследователей в этой теме. Дэниел Канеман — психолог и экономист, лауреат нобелевской премии по экономике. Его научные изыскания поставили под сомнение человеческий рационализм, который доминировал в экономической сфере прежде. А так же Дан Ариели — профессор психологии в университете Duke, который поставил множество экспериментов на людях и издал известные книги о иррационализации. Оба, практически всю свою сознательную жизнь положили на то, чтобы изучить поведение человека, лучше узнать, по каким принципам работает наш
Дэниел описывает
System-1: Если проводить аналогию с компами, то это наверное cache + persistence. Каждый запрос в первую очередь проходит через этот участок памяти, где стоит множество проверок, готовых выстрелить в любой момент. Здесь формируются эмоции, на фоне которых происходит дальнейшая обработка запроса. Если попробовать представить это в виде кода, оно может выглядеть примерно так:
assert danger:
throw FearEvent()
if (enemyAround)
throw FightOrRunDecisionEvent()
throw MobilizeHardware()
...
assert satisfaction:
throw RelaxationEvent()
throw DelightEvent()
...
Я же говорил, это довольно забавный код и, что интересно, он довольно уникален, т.к. у каждого человека написан по разному. Обработка может здесь и остановиться. Например, если мне хотелось почесать ухо, или прокрутить педаль на велосипеде, или дать оценку человеку, который является представителем какого-либо общепринятого стереотипа, я это сделаю на автомате, но задумываясь о том, что я только что сделал.
System-2: это рациональная часть. Что-то похожее на RAM + persistence. Если запрос пришел на этот уровень, это означает, что решение не было закешировано и тут есть над чем подумать и действительно принять решение. Здесь важнейшую роль играет наша долгосрочная память. Как на физическом уровне (нейроны, которые связаны друг с другом), так и на логическом (набор ассоциативных образов со связями), память человека можно представить в виде графа. В нем отражен наш основной жизненный опыт. Когда мы запускаем программу принятия решения, по сути это переход по ребрам графа в поисках оптимального решения или ответа на вопрос. Можно схематично представить этот процесс в виде запуска несколько потоков, как в алгоритме map-reduce, где на этапе map собираются наиболее подходящие результаты из разных областей, потом, с помощью reduce выбирается самое лучшее из того, куда мы смогли добраться с учетом множества факторов, которые довольно сложно уловить.
Если подытожить, поток исполнения всегда идет через System-1, и если подходящий обработчик найден или возникло исключение, тут же и заканчивается, иначе переходим на более медленный уровень System-2, где ситуация подвергается более тщательному анализу. На практике это означает, что далеко не всегда мы так рациональны, как про себя думаем. Подавляющее большинство реакций происходит автоматически, так и не достигнув рациональной части. И этот процесс подвержен большому количеству ошибок.
Я очень люблю code review. Это часть разработки, которая позволяет выявить скрытые проблемы, получить оценку решения проблемы кем-то еще, таким образом настраивается процесс передачи знаний и опыта внутри команды. В какой-то момент я осознал, что эта практика — меч о двух сторонах. С одной стороны все эти плюсы, с другой стороны это удар по коммандной работе и отношениям внутри коллектива, если использовать этот инструмент однобоко. Допустим, наш безымянный герой Вася получил задание и реализует какой-то кусок функционала. Он старается использовать весь свой потенциал и знания, для того, чтобы имплементация получилась наилучшей с его точки зрения. Получается она таковой или нет, зависит от конкретных способностей именно этого программиста, но в его глазах, данная имплементация чуть ли не идеализируется на уровне system-1. Приходит время code-review, появляется коллега Петя и разбивает эту идеальную картинку, пусть даже во благо всего проекта, предлагая еще лучшее решение. Результат вызывает бурю протеста у несчастного Васи. Ведь все было так хорошо и безоблачно, а тут какой-то нехороший человек… зачем он это делает? все пропало! System-1 в панике,
Люди смотрят друг на друга и на окружающий мир сквозь призмы когнитивных искажений, которые накапливаются с опытом. Очень сложно отличить то, что на самом деле происходит в реальности, от предположений, которые
Если бы Петя учитывал, что Вася это не просто рациональная машина, которая перемалывает факты, он бы наверное старался смягчать свои комментарии, и оформлял бы их в виде вопросов которые провоцируют того задуматься о недостатках и подтолкнут на лучшее решение. Чтобы уравновесить баланс сил, включил бы в свой ревью пару положительных моментов и рассказал, почему они ему нравятся. Т.е. старался бы делать так, чтобы не спровоцировать System-1 Васи выбросить исключение, а как можно спокойнее добраться до System-2. Если при этом Петя пытается доказать свою крутизну и тотальное превосходство, вряд ли ему удастся достичь этой цели.
Со своей стороны для Васи неплохо было бы иметь возможность отделить себя от результатов своего труда. Осознавать, что вопросы к его коду, это не наезд на него лично, что люди очень часто делают ошибки и всегда есть куда расти и чему учиться, и это нормально. Что Петя, в конце концов выполняет точно так же свою работу, и старается сделать ее как можно лучше, насколько он на это способен. И конечно же, о том, что и у Пети и у Васи есть одна общая цель — сделать качественный продукт и сдать его в срок. К сожалению, понимание всего этого на рациональном уровне System-2 не гарантирует того, что System-1 все равно что-нибудь не учудит. Но тут, как ни странно, coupling
Дэвид и Дан раскрывают тему подробнее (не про код ревью, а в целом), поэтому, если есть заинтересованность, очень рекоммендую следующие книжки:
Thinking, Fast and Slow
Predictably Irrational
Ну и моя прошлая статья на Хабре.
Спасибо за внимание.
Автор: ItGold