Редукционизм
Подход, в рамках которого систему разбирают на части, а затем изучают взаимодействие этих частей, чтобы понять, как работает целое, называется редукционизмом. Суть подхода в том, что «явления могут быть исчерпывающе объяснены в терминах других, более фундаментальных явлений». Мы можем разобрать самолет на детали и увидеть, как он функционирует, изучив каждый винтик; мы можем понять, как работает компьютерная программа, проанализировав ее код; в настоящее время ученые пытаются изучать болезни и врожденные дефекты, анализируя геном человека в надежде идентифицировать отдельные гены, ответственные за те или иные проблемы.
Редукционистский подход хорош только до определенного предела (рис. 1.2). После многолетних исследований ученые все еще не понимают, как работает сознание. Несмотря на созданные за последние сто с лишним лет многочисленные теории, экономисты так и не смогли предложить модель, которая позволяла бы достоверно предсказывать экономические кризисы. Многочисленные теории изменения климата дают совершенно разные прогнозы последствий глобального потепления. И хотя нет недостатка в методиках, моделирующих процесс разработки программного обеспечения, тем не менее во всем мире множество проектов все еще наталкиваются на непредвиденные проблемы. Живые организмы, сознание человека, экономика, изменение климата и проекты по разработке ПО – все эти системы устроены таким образом, что их поведение невозможно предсказать путем деконструкции и изучения компонентов по отдельности.
Способность людей интерпретировать окружающую действительность весьма ограниченна
В процессе подготовки этой книги некоторые рецензенты указали мне, что отличительная черта людей – тенденция неточно интерпретировать информацию, поступающую из окружающей действительности. Мы склонны игнорировать любые факты, в которые мы не верим и которые противоречат уже сложившимся в наших головах моделям. Такая избирательность действительно мешает нам более или менее точно предвидеть будущие события.
Идея целостности
Холизм как теория предполагает, что поведение системы несводимо к сумме поведений ее отдельных частей, а напротив, решающим образом определяется ее свойствами как единого целого. Этот подход часто воспринимают как противоположность редукционизму, хотя ученые, исследующие такие системы, полагают, что сложность будет связующим звеном между обоими подходами и каждый из них необходим, но недостаточен [Corning 2002: 69].
Даже некоторые из наиболее рьяных редукционистов отказались от представления, что все явления могут быть сведены к поведению их составных частей. Философ Дэниел Деннет предложил термин «Жадный редукционизм» [Dennet 1995] для обозначения форм редукционизма, которые стремятся полностью вывести поведение системы из взаимодействия между ее составными частями. Например, утверждение, что «гиперссылки – это не более чем электроны и на самом деле они не существуют» будет примером такого жадного редукционизма. В качестве контраргумента я сказал бы, что если жадные редукционисты правы, то значит, они тоже не существуют, и это полностью снимает все их смехотворные аргументы. Но я отвлекся.
В качестве компромисса биолог-эволюционист Ричард Докинз предложил понятие иерархического редукционизма [Dawkins 1996], смысл которого в том, что сложная система может быть представлена в виде иерархии, в которой события на каждом уровне могут быть объяснены поведением компонентов, находящихся в данной иерархии одним уровнем ниже, но только одним уровнем. Если следовать этой логике, вы не сможете объяснить провал своего проекта тем, что вам помешали кварки и лептоны.
Многие ошибочно полагают, будто бы из редукционизма следует, что мы в состоянии реконструировать любую систему, если понимаем, как функционируют ее составные части. В этом и состоит заблуждение: даже если мы отлично понимаем, как ведут себя все компоненты системы, это не значит, что система сводится к сумме своих составных частей [Miller, Page 2007: 41]. Знание компонентов, находящихся на нижних уровнях системы, вовсе не означает, что мы сможем воссоздать всю систему как единое целое. Интересно, что, если исходить из редукционистского подхода и отследить изначальную причину проблемы (например, воспользовавшись методикой анализа основной причины), мы все равно не сможем создать систему, в которой данная проблема отсутствовала бы. Например, мы можем установить причину конкретного случая сердечной недостаточности (редукционизм), но нам никогда не удастся создать сердце, которое принципиально не будет подвержено сердечной недостаточности (конструкционизм).
Значит ли все это, что методика анализа основной причины бесполезна?
Нет, она чрезвычайно полезна. Говоря о ее недостатках, мы лишь имеем в виду, что она обращена исключительно в прошлое. С ее помощью можно решить проблемы, которые уже случились, и исключить их возникновение в будущем. Но эта методика никак не помогает предсказывать, что именно в будущем может пойти не так.
Иерархический менеджмент
Взгляд на систему как на единое целое (холизм) и иерархический редукционизм сходятся на том, что не все в поведении сложной системы может быть объяснено событиями, происходящими на ее более низких уровнях. Обе гипотезы допускают, что каждому уровню присущи свои особенные и не сводимые к более элементарным уровням свойства. Например, как бы тщательно вы ни вглядывались, у вас не получится без определенных затруднений идентифицировать внутри деконструированной утки рычажки, подшипники и шестеренки, предназначенные для ходьбы, плавания и крякания (см. рис. 1.2). И тем не менее, увидев этот объект в парке, вы сразу понимаете, что это утка.
Все вышесказанное имеет далекоидущие последствия для менеджеров сложных систем вроде нас с вами, а также для менеджеров, управляющих разработками, проектных менеджеров и лидеров команд. Это означает, что тот, кто знает все о функционировании определенного уровня в иерархической системе, может оказаться недостаточно квалифицированным, чтобы работать на других уровнях в той же системе, потому что для этого требуются иные знания. Молекулярный биолог может оказаться недостаточно «квалифицированным», чтобы выполнять обязанности садовника, потому что знание того, как функционируют живые организмы на уровне клеток-эукариотов, генов и РНК, не подразумевает умения ухаживать за садом; а хорошему садовнику совсем необязательно знать о хромосомах и геноме. Точно так же генеральный директор должен иметь обширные знания о том, как управлять компанией, но при этом он может быть полным профаном в том, что касается коучинга и других навыков управления людьми (я уверен, что многие читатели лично сталкивались с такими ситуациями).
Управление организацией требует совершенно иных знаний и опыта, чем управление людьми, хотя некоторое представление о том, как система функционирует на более низких уровнях, может оказаться полезным. Инженер-программист Джоэл Сполски предложил закон дырявых абстракций [Spolsky 2002] в качестве объяснения, почему в системах компоненты, находящиеся на более высоких уровнях, могут проявлять себя неожиданным образом в результате воздействия на них событий, происходящих на более низких уровнях, хотя более высокие уровни, по идее, должны быть изолированы от такого воздействия. Более высокие программные уровни, которые подвергаются воздействию событий, происходящих на более низких программных уровнях, считаются дырявыми. Типичным свидетельством такого рода дырявых абстракций в программировании будут непонятные сообщения об ошибках, которые получают пользователи (рис. 1.3).