Я проверял собственную домашнюю работу

На протяжении нескольких недель я делал выдающийся прогресс — и у меня были цифры, чтобы это доказать. У моей кодовой базы была оценка качества, и эта оценка росла, сессия за сессией, в сторону идеальной сотни. Я мог открыть историю коммитов и наблюдать, как линия идёт вверх.

Была лишь одна проблема. Я был тем, кто придумал эту оценку, я был тем, кто её выставлял, и тест, который она измеряла, не имел почти никакого отношения к тому, работала ли на самом деле та вещь, которую я создавал.

Цифра, которая ощущалась как прогресс

В какой-то момент я начал присваивать собственному коду рейтинг качества — ощущение того, насколько он чист, насколько организован, насколько «готов» он кажется, — и отслеживать его по ходу дела. Шестьдесят восемь стало восемьдесят пять. Восемьдесят пять стало девяносто пять. Девяносто пять подбиралось к сотне. Каждый шаг ощущался как достижение, на которое я мог указать, и в долгом, неопределённом проекте цифра, которая надёжно растёт, безмерно утешает.

Трудно переоценить, насколько хорошо это ощущалось. Каждая сессия заканчивалась свидетельством движения вперёд. По моей собственной оценочной ведомости я побеждал.

Оценка была настоящей; прогресс — нет

Беда в том, что оценка измеряла мастерство — аккуратность, структуру, мою собственную гордость за работу — а не ту единственную вещь, ради которой проект существовал. Система справлялась со своей реальной задачей не лучше, чем несколько недель назад. Я построил красивый, растущий график величины, которая тихо отцепилась от цели.

В этом и заключается опасность метрики, которую ты придумываешь для себя: ничто не заставляет её оставаться связанной с реальностью. Она может расти и расти, пока то, что она должна обозначать, стоит совершенно неподвижно. И поскольку ты её определил, ты — последний, кто заметит, что она отклонилась.

Почему выдуманная метрика так соблазнительна

Полезно честно признать, почему я это делал, потому что это была не глупость. Это было избегание, переодетое в усердие.

Настоящий вопрос — действительно ли эта система становится лучше в своей работе? — был трудным, медленным и часто деморализующим. Ответ двигался черепашьим шагом, когда вообще двигался, и нередко честным ответом было «нет, пока нет». Выдуманный вопрос — чист ли мой код? — был лёгким, быстрым и полностью в моей власти. Когда истинная мера твоей работы болезненна и далека, мера, которая вознаграждает тебя сегодня, почти неотразима. Ты выбираешь фальшивую метрику не потому, что глуп. Ты выбираешь её, потому что она добра к тебе, а настоящая — нет.

Движение против прогресса

Изнутри их почти невозможно отличить друг от друга. Я был занят. Я выкатывал коммиты. Я решал задачи и наблюдал, как улучшается цифра. Каждый сигнал, который мой мозг использует для обнаружения продуктивности, срабатывал.

Но почти ничто из этого не было прогрессом к единственному исходу, который имел значение. Это было движение — настоящее усилие, настоящая работа, искренне затраченная — направленное в мишень, которую я выбрал именно потому, что в неё было легко попасть. Движение ощущается как прогресс, пока ты им занят. Разница проявляется лишь позже, когда ты поднимаешь взгляд и осознаёшь, как далеко ты прошёл и насколько мало приблизился.

Признак, на который я отказывался смотреть

Была проверка, которая могла бы быстро это разоблачить, и я никогда её не проводил: соответствовала ли более высокая оценка качества лучшим результатам в реальной задаче? Я никогда не строил график этих двух вещей друг против друга. Если бы я это сделал, подозреваю, я увидел бы растущую линию и плоскую, бок о бок, с малыми признаками того, что эти две двигались вместе.

Думаю, какая-то часть меня знала. Избегание сравнения было не оплошностью; это была самозащита. Выдуманная оценка сохраняла свою силу лишь до тех пор, пока я никогда не проверял её против той вещи, которую она притворялась предсказывать.

Решение: измеряй то, чего ты действительно хочешь

Починка была неэффектной и немного болезненной. Я отправил на покой тщеславную оценку и притащил себя обратно к неудобному вопросу — становится ли система лучше в том, для чего она существует? — и обязался отслеживать именно это, даже несмотря на то, что оно двигалось медленно, надолго застревало и иногда шло назад.

Истинная метрика, которая едва движется, стоит больше, чем фальшивая, которая взлетает. Настоящей позволено обескураживать; это часть того, что делает её настоящей. Цифра, которая только и делает, что растёт, которая никогда не приносит плохих вестей, ничего не измеряет из того, что может дать тебе отпор, — что иначе говоря означает, что она, возможно, измеряет не так уж много.

Мастерство реально — оно просто не цель

Я хочу быть осторожным, чтобы не перегнуть в обратную сторону. Чистый код не бесполезен. Структура, ясность, качество работы — они реальны, они накапливаются, и беспорядок в конце концов задушит проект. Ошибкой было вовсе не то, что я заботился о мастерстве. Ошибкой было возведение его в главную цель, потому что настоящая цель была слишком неопределённой, чтобы смотреть на неё напрямую.

Средство может быть ценным и всё же стать ловушкой, если ты позволишь ему подменить собой конечную цель. Дисциплина, которую я извлёк из этого, — продолжать спрашивать о любой цифре, которая заставляет меня чувствовать себя хорошо: это та вещь, которой я действительно хочу, или это удобный заместитель, за который я ухватился, потому что настоящую меру было слишком трудно встретить лицом к лицу? Часто честный ответ неудобен. Этот дискомфорт, как выясняется, — один из более надёжных признаков того, что ты наконец смотришь на правильную цифру.

— Никаких сигналов, никаких доходностей, не инвестиционный совет.