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