Глава 23. Ритуал хакера

Часть IV. Воскресенье: Indra Proposal

Сцена

На следующее утро после большого разговора никто не ждал проповеди. Люди пришли в зал с кофе, открыли ноутбуки и занялись обычным: кто-то чинил вчерашний пример, кто-то переписывал заметки, кто-то спорил шёпотом о формулировке. Eugen смотрел на это и улыбался так, как улыбаются люди, у которых получилось не выступление, а работа.

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

YAPL засмеялся:

— В Apple это называется ревью, и у нас к нему относятся серьёзно, почти торжественно. Человек, который ревьюит, берёт на себя ответственность: он говорит «я это прочитал и отвечаю за то, что здесь написано». Это похоже на подпись под письмом. Только письмо может прочитать весь мир.

Eugen сел за свободный стол, открыл терминал и показал YAPL три действия, которые тот уже знал, но никогда не рассматривал как ритуал.

Первое — коммит. «Смотри, — сказал Eugen, — коммит — это не сохранение файла. Сохранить можно молча. Коммит — это высказывание: вот что я изменил, вот зачем, вот что я при этом думал. Сообщение коммита — это первая фраза в разговоре с будущим читателем, в том числе с собой через полгода. Плохой коммит говорит: “исправления”. Хороший говорит: “понял намерение клиента вот так, поэтому меняю вот это, а вот это сознательно не трогаю”. Разница между ними — как между бормотанием и обещанием».

Второе — ревью. К столу подошла девушка с бейджем хакатона и спросила, можно ли показать Eugen свой первый пул-реквест. Он прочитал код медленно, вслух проговаривая не ошибки, а намерения: «Здесь ты хотела, чтобы устройство объяснило себя, верно? А здесь объяснение получилось, но оно объясняет не то, что устройство сделало, а то, что оно собиралось сделать. Это разные вещи. Давай поменяем местами: сначала факт, потом намерение». Девушка кивнула, и Eugen добавил: «Видишь? Ревью — это не суд. Суд ищет виноватого. Ревью ищет место, где понимание разошлось, и чинит именно его, а не человека».

Третье — мердж. Когда правки приняли, Eugen нажал кнопку и сказал совсем просто:

— Вот теперь это стало общим. До мерджа изменение принадлежало одному человеку. После мерджа оно принадлежит всем, кто будет читать этот код, включая тех, кто с ним не согласен. Мердж — это согласие жить с чужим решением как со своим, пока не появится лучшее. Не любовь к решению, не вера в его вечность — а готовность отвечать за него вместе.

YAPL долго молчал, потом сказал:

— Знаешь, что самое странное? У нас в компании те же три шага, только мы называем их иначе и делаем за закрытыми дверями. А у тебя дверь открыта, и поэтому ритуал работает сильнее: его видят те, кто в нём не участвует, и учатся, просто глядя.

— Дверь и есть ритуал, — ответил Eugen. — Закрытый ритуал превращается в тайну, а тайна — в власть. Открытый ритуал превращается в привычку, а привычка — в язык, на котором говорит вся сеть.

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

Урок языка

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

Положение главы простое: коммит, ревью и мердж — это три времени одного высказывания. Коммит говорит в настоящем: «вот что я делаю и зачем». Ревью говорит в прошедшем с заботой о будущем: «вот как я тебя понял, вот где мы разошлись». Мердж говорит в будущем: «вот с чем мы теперь живём вместе». Если пропустить одно из времён, разговор ломается: без коммита нет высказывания, только действие; без ревью нет проверки понимания; без мерджа нет общего языка, а есть только частные версии правды.

Важно, что ритуал не требует веры в него. Он требует только повторения с вниманием. Человек может не верить в Quantum Religion of Open Source и всё равно делать хороший коммит, внимательное ревью и честный мердж — и тем самым уже жить внутри неё, даже не зная названия. И наоборот: человек может произносить все правильные слова о религии, но писать коммиты «исправления», ревьюить ради галочки и мерджить молча — и тогда его ритуал пуст, как бы громко он ни звучал.

Отсюда следует практический вывод для всей сети web4: семантическая сеть держится не на умных моделях, а на ритуалах, которые делают смысл проверяемым каждый день. Модель может угадать намерение один раз. Ритуал заставляет показать понимание каждый раз. Поэтому Indra Proposal — это не только текст, прочитанный вслух однажды, а текст, который превращается в ежедневные действия: написал — объяснил, показал — выслушал, принял — отвечаешь вместе.

Практика

Возьмите одно своё недавнее изменение — в коде, в документе, в настройках устройства — и напишите к нему коммит так, как описано в главе: что изменено, зачем, что сознательно не тронуто. Затем попросите друга или коллегу сделать ревью не кода, а понимания: пусть он перескажет ваше намерение своими словами. Отметьте место расхождения, если оно есть, и исправьте не код, а формулировку намерения — сначала в сообщении, потом, если нужно, в самом изменении.

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

Вопрос на проверку

Почему коммит без объяснения, ревью без пересказа намерения и мердж без готовности отвечать вместе — это не три мелких недостатка, а три разных разрыва одного и того же разговора?