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