18+
Баги разума

Бесплатный фрагмент - Баги разума

Как QA-инженер чинил себя

Электронная книга - 908 ₽

Объем: 54 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Жене и детям — за то, что ждали, пока я найду дорогу домой.

Здесь есть иллюстрация

Зарегистрируйтесь или войдите, чтобы увидеть ее и другие изображения

Введение

Сервер, который сгорел вместо меня

Запах палёной резины я помню до сих пор.

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

И вдруг — система легла. Вся.

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

Но это всё было снаружи.

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

Это не он сгорел. Это я сгорел. Просто я ещё хожу.

Меня зовут Моше. Я родился в Советском Союзе, в стране, которой больше нет. Подростком переехал в Израиль — почти без языка, почти без денег, с чувством, что жизнь нужно строить заново с нуля. И я её построил. Программист, потом QA-инженер, потом тимлид, потом эксперт по cyber security. Двенадцать-четырнадцать часов в день. Совещания по выходным. Жена. Трое детей. Ипотека. Всё как положено.

Двадцать лет я чинил чужие системы. Серверы. Телекомы. Видеоигры. Протоколы. Я знал, как находить баги в чужом коде с одного взгляда. Я был хорош в этом.

Я просто никогда не запускал тот же самый тест на себе.

Эта книга — не «как стать продуктивнее». Не «пять шагов к счастью». Не очередной список лайфхаков от человека, который сам себя не починил. Таких книг хватает, и они, по большей части, бесполезны — я знаю, потому что прочитал их штук триста, прежде чем понял.

Эта книга — о другом маршруте.

О человеке, который однажды понял, что главный непроверенный продакшн — это он сам. Без бэкапов. Без мониторинга. С перегретыми серверами внутри, которые рано или поздно задымят — так же, как тот, в лаборатории.

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

Эта книга — для тех, кто, как и я тогда, сидит в офисе и чувствует: что-то не так, но не понимает, что именно.

Для айтишников, которые устали быть процессорами.

Для предпринимателей, которые устали быть машинами по производству денег.

Для людей в кризисе смысла, которые подозревают, что смысл всё-таки есть.

Для всех, кто однажды посмотрел в зеркало и не узнал.

Я не обещаю вам, что после этой книги вы станете другим человеком. Я обещаю кое-что точнее: вы вспомните, что вы — не процесс. Вы — не должность. Вы — не KPI. Вы — что-то живое, что-то очень древнее.

И, может быть, к последней странице у вас появится тихое подозрение: эта жизнь — не конец маршрута. А мы — не одни в ней.

Об этом мы ещё поговорим в самом конце.

А пока — я расскажу всё как было.

Сядьте. Налейте себе чего-нибудь тёплого. И давайте начнём с того сервера.

Глава первая — Bug Detected

I

Через час после того, как сервер задымил, я сидел в опен-спейсе и писал отчёт.

Это и есть самое странное. Не дым. Не запах. Не двухнедельное восстановление данных, которых уже не было. Самое странное — что через шестьдесят минут после этого момента я уже спокойно набирал текст в Confluence: «Incident report. Server SRV-04. Cooling system failure. Backup status: none. Estimated recovery time: 10–14 business days.»

Будто ничего не произошло.

Будто внутри меня тоже не задымила какая-то очень важная часть.

Я отправил отчёт, закрыл ноутбук, поехал домой. Жена что-то спросила про ужин. Я что-то ответил. Дети что-то рассказывали про школу — я кивал в правильных местах. Лёг спать. Утром встал, поехал на работу.

И всё.

Так продолжалось ещё года полтора.

II

Если вы работали в QA — вы знаете эту вещь. Самые опасные баги — это не те, которые роняют систему сразу. Это «тихие баги». Race condition, который проявляется раз в десять тысяч транзакций. Memory leak, который ест по килобайту в час. Логическая ошибка, которая копится молча, пока в один прекрасный день не выдаёт катастрофу — обычно в продакшне, обычно в пятницу вечером, обычно когда тимлид в отпуске.

Я был ходячим тихим багом.

Снаружи всё работало. Семья. Должность. Дом. Машина. Резюме, в которое я мог гордо смотреть. Я закрывал проекты, делал ревью кода, ездил на семинары по cyber security, читал статьи по тестированию, ходил в спортзал три раза в неделю. По всем метрикам — успешный израильский хайтек-инженер, сорок с небольшим, в неплохой форме, при деньгах.

Внутри — race condition. Memory leak. Что-то очень тихо протекало уже много лет, и никто этого не видел. Включая меня.

В QA для таких ситуаций есть точный термин: silent failure. Тихий отказ. Когда система формально работает, формально возвращает ответы, формально проходит автотесты — но на самом деле уже мёртвая. Просто никто ещё не открыл нужную страницу.

Это была моя жизнь.

III

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

Уравнение очень тихое. Поначалу безобидное.

Я = моя работа.

Сначала это даже льстит. Я — QA. Я — лидер. Я — эксперт по security. Я — тот, к кому приходят, когда что-то горит. Я — тот, кто тушит. Это даёт идентичность, даёт смысл, даёт ощущение, что ты не пыль во вселенной, а конкретный человек с конкретной функцией.

Потом уравнение усложняется. Тайвань пишет в шесть утра. Германия — в десять. Индия — в час. Америка — в восемь вечера. Суббота — отгрузка релиза. Воскресенье — пост-мортем. Двенадцать-четырнадцать часов в день. Совещания на иврите, английском, иногда на русском с сабконтракторами из бывшего СССР. Пять часовых поясов одновременно — это не работа. Это операционная система, которая запущена в твоей голове круглосуточно. Ты не выходишь из неё, даже когда спишь. Особенно когда спишь.

И в какой-то момент уравнение становится окончательным:

Если я останавливаюсь — меня нет.

Это и есть главный баг, который я в себе не видел двадцать лет.

Я не работал. Я держался работой. Работа была единственной несущей конструкцией. Уберите её — и человек складывается, как ангар без столбов.

IV

Все эти годы я был хорошим QA. Я знал четыре золотых вопроса, которые задают любой системе перед релизом:

1. Что эта система должна делать? (Спецификация.)

2. Что она делает на самом деле? (Реальное поведение.)

3. Где расхождение? (Дельта.)

4. Какой риск, если не починить? (Impact analysis.)

Я задавал эти четыре вопроса серверам, продуктам, протоколам, целым архитектурам.

Я ни разу не задал их себе.

Если бы я в любой случайный вторник, между совещаниями, открыл текстовый файл и честно прогнал свой self-QA, картина была бы такая:

— Что эта система (Моше) должна делать? Жить. Любить. Быть с семьёй. Создавать. Чувствовать. Расти.

— Что она делает на самом деле? Отвечает на письма. Закрывает тикеты. Заглушает тревогу кофеином. Засыпает в одежде. Не помнит вкуса еды. Не помнит, когда последний раз смеялся вслух.

— Дельта? Колоссальная. Между спецификацией и реальностью — пропасть.

— Риск, если не починить? Тот самый сервер. Только сервер можно заменить за две недели. Меня — нельзя.

Я не сделал этот аудит. Я был слишком занят аудитом других систем.

V

Симптомы были. Их всегда видно — если знать, куда смотреть.

Сердце иногда стучало не так. Не «инфаркт», просто — не так. Внеочередной удар. Лёгкая аритмия по вечерам, которую я списывал на кофе.

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

Раздражительность. По мелочам. Жена что-то говорит — внутри короткая вспышка, которую я гасил, но которая всё равно успевала отравить воздух в комнате. Дети что-то спрашивают — а у меня в голове ещё не закрылся последний тред в Slack, и я отвечаю с опозданием в полсекунды. Полсекунды — это много. Дети это чувствуют. Они всегда чувствуют.

И главное — исчезновение вкуса. Не метафорически. Буквально. Я ел и не помнил, что ел. Душ — не помнил, что был в душе. Дорога с работы — не помнил, как доехал. Жизнь шла через меня, как трафик через роутер. Я её не проживал, я её маршрутизировал.

Это и есть выгорание. Не «устал». Перестал быть в собственной жизни.

VI

В литературе по продуктивности обычно предлагают два пути.

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

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

Я тогда ещё не знал третьего пути.

Третий путь я открыл случайно — через разговор у кофе-машины с индийским коллегой, через первое занятие у израильского учителя по имени Ори, через странного человека из России по имени Дмитрий, который четыре года вообще ничего не ел. Об этом будут следующие главы.

Но до того, как третий путь начался, мне нужно было сделать одну простую вещь, которую я откладывал двадцать лет.

Признать, что я — система, в которой есть баг.

VII

Расскажу две истории. Они короткие. Они настоящие.

История первая. Михаил.

Михаил был моим коллегой много лет назад. Старше меня лет на десять, очень сильный инженер, из тех, кто помнит, как писали на ассемблере. Работал по шестнадцать часов. Гордился этим. Хвастался, что не был в отпуске четыре года. Жена ушла — он сказал «это к лучшему, теперь могу работать спокойно». Дети выросли без него — он сказал «я обеспечил им образование, это главное».

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

— Знаешь, Моше, я всю жизнь думал, что я нужен на работе. Оказалось, я был там не нужен. Меня заменили за три дня. А вот дома меня ждали. Только я этого не знал.

Это путь «как обычно».

История вторая. Раджеш.

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

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

Этот человек делал ту же работу, что и я. Получал примерно те же деньги. Жил в том же мире сроков, релизов и совещаний. Но он не был этой работой. Между ним и его должностью было свободное пространство. Он мог из неё выйти. Я — не мог.

Это путь «как иначе».

Разница между Михаилом и Раджешем — не в зарплате, не в стране, не в индустрии.

Разница в том, что один из них знал, кто он, без работы. А другой — нет.

VIII

Практика: Self-QA

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

Возьмите лист бумаги или откройте текстовый файл. Никаких приложений, никаких трекеров — это важно. Только вы и слова.

Напишите четыре заголовка:

1. SPEC. Что эта система — я — должна делать в этой жизни? Не «должна» в смысле обязательств перед начальником. Должна — в смысле своего предназначения. Своих ценностей. Того, ради чего я тут.

Запишите три-пять пунктов. Честно. Не для коллег.

2. ACTUAL. Что я делал на этой неделе на самом деле? По часам. Сколько часов работал, сколько спал, сколько провёл с семьёй, сколько в телефоне, сколько в собственном теле — то есть в моменте, когда вы реально были тут, а не маршрутизировали жизнь.

3. DELTA. Где расхождение между первым и вторым? Чем больше дельта, тем громче ваш тихий бэкграунд-процесс. Тем ближе ваш сервер к тому моменту, когда задымит.

4. RISK. Что будет, если ничего не менять ещё год? Пять лет? Десять?

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

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

То, что я написал, я не буду повторять здесь. Это слишком личное. Скажу только: после этого я первый раз за двадцать лет позвонил человеку, который ничего общего не имел с моей работой. Это был учитель йоги в моём городе. Его звали Ори.

С этого звонка начался третий путь.

IX

Сервер можно починить или заменить.

Человека — нельзя заменить. Можно только починить. Но сначала — нужно его открыть, посмотреть внутрь и назвать бага по имени.

Признать, что он есть.

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

Я выбрал двигаться.

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

Но прежде — закройте на секунду эту книгу. Посмотрите на свой собственный сервер.

Он ещё работает?

Или уже немного пахнет?

Главные идеи главы

1. Самые опасные баги — тихие. Выгорание редко выглядит как катастрофа. Обычно оно выглядит как «всё хорошо», только вкус жизни куда-то пропал.

2. «Я = моя работа» — это не идентичность, это конструкция. Уберите работу — если внутри пусто, человек складывается. Свобода начинается там, где между вами и вашей должностью есть зазор.

3. Self-QA важнее, чем QA для продукта. Четыре инженерных вопроса — SPEC / ACTUAL / DELTA / RISK — заданные себе раз в неделю, делают для жизни больше, чем все приложения для медитации вместе взятые.

18+

Книга предназначена
для читателей старше 18 лет

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.