ПРИМИРИСЬ С ГРИНДОМ
I Have No Mouth But I'm Good With Words
Я уже много лет постоянно думаю об одном карточном фокусе. Суть его крайне проста (для пущей ясности я упростил всё донельзя): доброволец выбирает карту, прячет в конверт, который сам же потом заклеивает. После этого иллюзионист просит добровольца выбрать пакетик с чаем. Перед человеком стоят десятки запечатанных упаковок с чаем. Доброволец выбирает одну из них, срывает плёнку и берёт один из запечатанных пакетиков с чаем. И вот он наконец разрывает упаковку… а внутри - его карта.
⚠️ Если вам не хочется узнавать секрет этого фокуса, дальше можно не читать.
Секрет зауряден, но я от него в восторге. Выбор карты - дело принуждения (так иллюзионисты называют искусство создать у зрителя иллюзию свободного проявления воли - прим. пер.). Однако выбор одной из десятков упаковок с чаем - абсолютно свободный, равно как и выбор пакетика из упаковки. Тут нет никакой ловкости рук: иллюзионист не трогает ни упаковки, ни выбираемый участником пакетик. Карта действительно находится в запечатанном пакетике.
Фокус, во всех смыслах, заключается в подготовке. Перед выступлением иллюзионист покупает десятки упаковок с чаем, открывает каждую из них, распечатывает каждый пакетик. Кладёт в каждый из них тройку треф. Запечатывает пакетик заново. Складывает все пакетики в упаковку. Заново запечатывает каждую упаковку. И повторяет процедуру сотни раз. На это уходит много часов — нет, скорее, дней.
Единственным «фокусом» здесь можно считать то, что подготовка настолько утомительна и так занудна, что при представлении шокирующего итогового результата, нам и в голову не придёт мысль, что ради такого простого итога кто-то занимался таким занудным делом.
Когда-то об этом писал Теллер (Рэймонд Теллер, один из участников дуэта иллюзионистов «Пенн и Теллер» - прим. пер.), в своей статье про семь секретов магии:
Вы попадётесь на удочку иллюзиониста, если его фокус будет требовать больше времени, денег и подготовки, чем вы (или любой другой вменяемый зритель) захотите изначально вложить в него сами. Как-то раз мы с моим коллегой, Пенном, пришли на шоу Дэвида Леттермана и достали из цилиндра 500 живых тараканов - они оказались на столе ведущего. На подготовку ушло много недель. Мы наняли энтомолога, предоставившего нам медленных тараканов, которые не боятся камеры (тараканы, ползающие у вас под плитой, и не подумают задержаться, чтобы их успели снять крупным планом). Он научил нас доставать насекомых так, чтобы мы не срывались на истеричный визг девочек-школьниц. После этого мы собрали секретное отделение, сделанное из пенокартона (одного из немногих материалов, за который не могут зацепиться тараканы) и продумали хитрый шаблон закрепления этого отделения в цилиндре. Слишком много проблем из-за одного фокуса? Для вас - возможно. Для иллюзиоиниста - никогда.
Очень часто новички IT-индустрии спрашивают меня насчёт секретов успеха. На самом деле, их не то, чтобы много, но конкретно этот — готовность делать нечто столь кошмарно занудное, что процесс и результат в итоге кажутся волшебством — работает и в IT.
Наша индустрия просто одержима автоматизацией процесса, его оптимизацией, его эффективностью. В одном из самых главных текстов нашей, инженерной, культуры, «Три добродетели ОТЛИЧНОГО программиста» Ларри Уолла, упоминается лень:
Лень: Качество, заставляющее всерьез напрячься, чтобы сократить дальнейшие энергозатраты. Лень заставляет писать трудосберегающие программы, которые люди посчитают полезными, и прописывать ей документацию, чтобы потом не приходилось отвечать на целую кучу вопросов.
Я с ним согласен: возможность передать программе повторяющиеся задачи это один из лучших аспектов умелого программирования. Впрочем, иногда проблемы не решаются автоматизацией. Если вы готовы примириться с гриндом, то вполне можете сойти за волшебника-иллюзиониста.
Наглядный пример: однажды я стал членом команды, работавшей с системой, которая погрязла в багах. Там было около 2000 нерешённых баг-репортов. Никаких меток, категорий и приоритетов. Команда не могла сойтись на том, чем заниматься. В итоге люди убирали баги наугад, но никогда не могли понять, важную проблему они решили или нет. Новые баг-репорты нельзя было нормально рассортировать: поиск дубликатов был фактически невозможен. В итоге счётчик проблем лишь рос. Команда буксовала несколько месяцев. Мне поручили решить следующие вопросы: помочь команде выйти из пике, добиться уменьшения числа проблем и придумать как со временем свести их к нулю.
Я решил воспользоваться фокусом иллюзиониста, который, по сути, им не является: я начал работать. Я распечатал все проблемы - одна страница на одну проблему. Я читал каждую страницу. Я занял огромную комнату, на полу образовалась куча бумажных стопок. Я прописывал теги на стикерах и лепил на стопки. Я переносил листы из одной стопки в другую. Я выписывал колонкой номера багов на доске; представлял себя Беном Аффлеком из фильма «Расплата». Я провёл в той комнате почти три недели и вернулся со всеми изученными баг-репортами: у них были проставлены теги, категории и приоритеты.
Проблемы сразу же пошли на спад: несколько сотен багов моментально исключились, поскольку были дубликатами, а категоризация новых проблем занимала пару минут, а не пару дней. Кажется, на устранение всех проблем ушёл примерно год, но, в целом, процесс был довольно гладким и спокойным. Мне говорили, что я совершил невозможное, но это не так: я просто занялся делом настолько скучным, что им не хотел заниматься никто другой.
Порой, программирование кажется волшебством: ты произносишь какие-то непонятные заклинания, а свора роботов исполняет твои приказы. Но, порой, магия рутинна. Если вы готовы примириться с гриндом, то для вас не будет ничего невозможного.
(Джейкоб Каплан-Мосс)