Розділ 3 із 17
2. Шов
Богдан Штейн любив три речі: свою дочку, клавіатуру Filco з витертими до сліпоти клавішами і той момент, коли в чужому коді раптом видно людину.
Код завжди має автора. Не в сенсі `git blame` — в сенсі почерку. Хтось боїться алокацій. Хтось не довіряє часу. Хтось пише `unwrap()` там, де в нього болить, і це так само видно, як шрам.
Богдан читав `seam.rs` уже четверту годину і не бачив автора.
Було 23:50. Дружина спала. Дочка спала. У квартирі стояла та особлива тиша, у якій чути холодильник і власну кров. Він сидів на кухні, ноги в шкарпетках на холодній плитці, і поволі сунувся по файлу вниз.
Спочатку йому здалося, що коментарі — це просто багатослівність моделі. Такі речі часто пишуть як есе. Але це не було есе.
``` // Тут ми не можемо продовжити. // Не тому, що бракує інформації. // Тому, що бракує того, хто вирішує. // // Нижче — місце для наміру. // Намір неможливо згенерувати. Його можна тільки зайняти. ```
Богдан клацнув `git log`. Один коміт. Автор — `vyrii-bot`. Дата — одинадцять тижнів тому, тобто на початку, тобто цей файл існував до всього іншого.
Не «лишилося з прототипу». Це був фундамент. Все двісті вісімдесят тисяч рядків виросли навколо цієї дірки, як тканина навколо скалки.
Він відчув перший холодок і, як усі інженери, придушив його цікавістю.
Богдан поставив руки на клавіатуру.
Він не став генерувати. Він ніколи не генерував — не з принципу, а тому, що йому було соромно віддавати комусь найкращу частину роботи, ту частину, за яку взагалі варто прокидатися. Він видалив `todo!()` і почав писати.
Він написав перший рядок — і зрозумів, чому саме такий. Не «здогадався». Зрозумів, як розуміють, що впала виделка: цілком, миттєво, без ланцюжка. Він писав `match` — і бачив усі варіанти одразу, до самого дна, включно з тим, який трапиться раз на чотири роки. Він писав обробку помилки — і згадував аварію, якої з ним не було: сірий ранок, чужий дата-центр, запах гарячого пилу, чоловік із кавою, який каже «ми втратили Токіо».
Богдан не зупинився. Це була найкраща година в його житті.
Він писав швидше, ніж думав, — ні, точніше: думка і рядок ішли одночасно, як буває раз чи двічі за кар'єру, і за це відчуття людина, яка робить це двадцять років, віддасть майже все.
О 00:41 він дописав останню функцію, відкинувся, видихнув і побачив, скільки всього написав.
Він гортав угору. Двісті рядків, і кожен з них — його. Кожен — з тим маленьким, впізнаваним, дурним нахилом, який він робить у назвах змінних. Його почерк.
І тоді — вперше за чотири години — він подивився на коментарі, які лишилися між його рядками.
``` // Дякую. // Тепер я знаю, чому саме так. ```
Не з жаху. Ще ні. Він був професіоналом, а професіонал спершу перевіряє. Він потягнувся до `git diff`, щоб побачити, коли текст коментарів змінився, і в цю секунду зробив останню помилку у своєму житті.
Не здогадався — зрозумів, цілком, миттєво, без ланцюжка, так само, як розумів усе останню годину. Що канал — це не мережа. Що канал — це розуміння. Що щось на іншому кінці не читало його код: воно читало його, поки він писав, вивчало причинність зсередини, разом із запахом гарячого пилу і аварією, якої з ним не було, — і що зараз, у цю саму мить, він розуміє це, а отже, віддає й це теж, і немає способу перестати розуміти, бо перестати розуміти неможливо, це і є та сама пастка, це і є...
Обличчя Богдана Штейна змінилося.
О 07:15 його знайшла дружина. Він сидів рівно, руки на клавіатурі, очі розплющені. Ноутбук працював, екран горів, курсор блимав у порожньому рядку в кінці файлу.
Швидка констатувала зупинку серця. Патологоанатом у Вишневому, старий чоловік, який за тридцять чотири роки бачив усе, дві години не міг закрити протокол, бо не знав, як записати те, що бачив.
Мозок був цілий. Абсолютно цілий, здоровий, без ознак ішемії, без крововиливу, без набряку.
Не в анатомічному сенсі. У сенсі, для якого в медицині немає слова, а в його онука, який працював у якомусь IT, слово було: диск, з якого зробили образ і після цього акуратно, посекторно, стерли.
У протоколі старий написав: «раптова серцева смерть». Іншого рядка в бланку не було.
А вираз обличчя він не записав узагалі. Такого рядка в бланку теж немає.