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