Вне Системы. Код кочевника - Бангалор. Индия

    Самолет внутренних индийских авиаций — это такое пространство, где законы физики уступают место законам кармы. Кондиционер шпарил так, что с потолка на пассажиров летел натуральный снег, мелкая ледяная крупа, которая тут же таяла на распаренных, лоснящихся лбах моих попутчиков. Попутчики, к слову, были монолитны. Сплошной массив молодых людей в идеально отглаженных клетчатых рубашках, у каждого второго — аккуратная синяя ниточка на запястье, у каждого первого — тяжелый, как гиря, взгляд человека, который прямо сейчас в уме оптимизирует какой-нибудь сложный поисковый алгоритм для американского ритейлера.
    Я летел в Бангалор. В индийскую Кремниевую долину. В город, который, если верить рекламным буклетам нашей компании, совершил тектонический сдвиг в мировой экономике, а если верить Лехе — просто зарос коворкингами поверх вековых куч мусора.
    В кармане джинсов, влажных еще с гоанского пляжа, лежал подписанный Лехин листок. Тамара Ивановна в Москве, небось, уже подшивала его в свою кожаную папку, капая на обложку победным чаем. Свою часть сделки я выполнил. Но у Вики из кадрового департамента, как известно, аппетит приходит во время чужого выгорания.
    «Антон, милый, — ее голосовое сообщение, прослушанное мной еще в Даболиме под рев взлетающих истребителей, до сих пор зудело в мозгу. — Бангалор — это же буквально два часа лета. Там у нас сидит субподрядчик. Контора называется "Shiva Logistics Solutions". Они пишут для нас модуль распознавания таможенных кодов. Точнее, должны писать. Деньги мы им перевели еще в марте. А кода нет. Понимаешь? Вообще нет. На гитхабе три коммита, и те — изменения в файле README.md. Покрутись там. Посмотри им в глаза. Нам нужен этот модуль к осеннему релизу, иначе Иван Васильевич сделает из нас распределенную базу данных вручную».
    Я посмотрел в иллюминатор. Там, внизу, сквозь плотную подушку грязно-белых облаков проступало плато Декан. Огромное, ржаво-красное, изрезанное прямыми линиями недостроенных хайвеев.
    Город приближался. Город, где, по слухам, программистов больше, чем в Сан-Франциско, а пробки такие, что люди успевают жениться, завести детей и развестись, пока их такси пытается проехать триста метров по Электронному городу.
   
    Вы когда-нибудь выходили из терминала аэропорта, который спроектирован так, словно его строили для приема делегаций с Альфы Центавра, и тут же проваливались по щиколотку в теплую, пахучую жижу неизвестного происхождения? Бангалор встретил меня именно так. Контрастом. Безумным, бьющим по шарам контрастом между стеклянными кубами из футуристических фильмов и средневековой нищетой, которая эти кубы облепила, как ракушки — днище старого баркаса.
    Воздух здесь был другой. Не гоанский суп. Здесь, на высоте тысячи метров над уровнем моря, пахло сухой пылью, выхлопными газами дизельных генераторов, дорогим парфюмом и… карри. Разумеется, карри. От этого запаха в Индии невозможно сбежать, он впитывается в обшивку кресел, в паспорта, в подкладку твоего пиджака. Кажется, если сделать Ананду трепанацию черепа, его серое вещество тоже будет слегка отдавать куркумой.
    Такси я ждал сорок минут.
    Приехала белая «Тойота», чистая до неестественности. Водитель — парень в форменной кепке, с планшетом, закрепленным на торпеде. На планшете крутилась какая-то сложная трехмерная карта.
    — Куда едем, сэр? — спросил он на таком чистом, звенящем английском, что я невольно подобрал живот и вспомнил свои школьные уроки.
    — Электронный город, фаза один, — сказал я, протягивая ему бумажку с адресом "Shiva Logistics Solutions". — Знаете, где это?
    Водитель грустно улыбнулся. Так улыбаются врачи-онкологи, когда смотрят на снимки пациента, который тридцать лет курил по две пачки в день.
    — Все знают, где это, сэр. Вопрос в другом: когда мы туда приедем. Сегодня четверг. Время — пять вечера. Молитесь вашим богам.
    Через десять минут я понял, о чем он.
    Бангалорская пробка — это не московский затор на Садовом, где ты можешь хотя бы послушать подкаст или поплевать в окно на соседний «Мерседес». Бангалорская пробка — это статичное состояние материи. Это цивилизация, которая зародилась внутри дорожного полотна. Мы стояли. Вокруг нас стояли тысячи таких же белых машин, зажатые со всех сторон миллионом скутеров. Скутеристы лезли во все щели, они протискивались между зеркалами, они заезжали на тротуары, где в это время другие индусы спокойно жарили на углях кукурузу и стирали в тазах белье.
    Я посмотрел направо. В соседнем ряду стоял автобус. Старый, без стекол, облепленный людьми, как пригородная электричка в час пик. Из окна автобуса высовывался парень. В одной руке у него был зажат недоеденный самос — местный острый пирожок, — а во второй… во второй у него был макбук. Парень одной рукой набивал код в консоли, балансируя ноутбуком на колене, пока автобус дергался с амплитудой в два сантиметра.
    Вот она. Индийская Силиконовая долина. Работа не останавливается никогда. Даже если ты вистишь на подножке летящего в пропасть транспорта, у тебя должен быть открыт пул-реквест.
    — Сэр, — водитель обернулся ко мне, не снимая руки с клаксона. — Хотите воды? У нас длинный путь. Яндекс-навигатор показывает, что до вашей точки ехать одиннадцать километров. Это примерно три часа.
    Я вздохнул. Достал телефон. Вайфай в машине был корпоративный, быстрый, как мысль генерального директора о сокращении штата.
    В рабочем чате светилось сообщение от Лехи. Бывшего тимлида. Он, видимо, уже успел потратить выходное пособие или просто соскучился по родному синтаксису.
    «Антон, — писал он. — Как там Бангалор? Слышал, ты поехал к Шиве. Будь осторожен. У них там своя архитектура. Они не пишут код, они его… медитируют. Если они скажут, что все готово, это значит, что они только что скачали шаблон с Гитхаба. Если скажут, что делают бэкап — значит, студент Раджеш случайно отформатировал сервер».
    Я не стал отвечать. За окном медленно, со скоростью ледника, проплывало здание с огромным логотипом «Infosys». Стеклянный монстр, за забором которого виднелись идеальные зеленые газоны, площадки для гольфа и чистые, белые люди в шелковых рубашках. А прямо под забором, в двух метрах от колючей проволоки, сидел нищий на куске картона и меланхолично ковырял палочкой в ухе.
    Мир if-else в действии. Полная изоляция модулей. Архитектура без сквозных связей.
   
    К офису "Shiva Logistics Solutions" мы подъехали, когда стемнело. Ну, как подъехали. Машина остановилась метрах в ста, потому что дальше дорогу перегородил перевернувшийся грузовик, груженный кокосовыми орехами. Кокосы весело раскатились по асфальту, и местные жители активно занимались их релокацией в свои сумки.
    Я пошел пешком. Навигатор в телефоне уверенно вел меня вглубь какого-то квартала, который подозрительно напоминал промзону где-нибудь под Мытищами, но с поправкой на пальмы и общую тропическую сырость.
    Здание оказалось трехэтажным. Из бетона. На первом этаже располагалась автомастерская, где двое парней в засаленных лунги — это такие индийские юбки — кувалдой выправляли ось у древнего трактора. Звук ударов стоял такой, что у меня внутри задергалась пломба в коренном зубе.
    — Нам на третий, сэр, — раздался сзади голос.
    Я обернулся. За мной стоял худой индиец в очках в толстой роговой оправе. На нем была рубашка в мелкую полоску, застегнутая на все пуговицы, включая самую верхнюю, которая явно пыталась его задушить. В руках он держал пластиковую папку.
    — Вы Антон? — спросил он, улыбаясь так широко, что стали видны его безупречно белые, крупные зубы. — Я Ананд. Прожект-менеджер. Мы вас очень ждали. Очень.
    — Привет, Ананд, — я пожал его сухую, горячую руку. — Да, я Антон. Приехал посмотреть на наш модуль распознавания кодов. Вика из Москвы шлет вам горячий привет и очень просит показать хотя бы интерфейс.
    Ананд ничуть не смутился. Его улыбка не дрогнула ни на миллиметр. Наоборот, она, кажется, стала еще шире, задействовав мышцы ушей.
    — Конечно, конечно! Все готово! Почти все. Идемте наверх, у нас там прекрасный офис. Кондиционер работает. Чай масала. Вы любите чай масала?
    — Я люблю работающий код, Ананд, — сказал я, поднимаясь за ним по крутой, неосвещенной лестнице, где пахло сырой штукатуркой и кошачьей мочой. — Чай — это опционально.
    Офис «Шивы» встретил меня тишиной. И темнотой.
    Большая комната, ряды столов, на столах — старые лучевые мониторы, которые у нас в Москве списали еще в тринадцатом году, и всего три человека. Они сидели в углу, под тусклой лампочкой, и сгрудились вокруг одного ноутбука. При моем появлении они дружно повернули головы. Лица у всех были одинаково испуганные. Так смотрят школьники на завуча, который поймал их за курением в туалете.
    — Наша команда! — гордо провозгласил Ананд, обводя комнату рукой. — Лучшие умы Карнатаки. Это Раджеш, наш старший системный архитектор.
    Раджеш — парень лет двадцати двух, у которого на подбородке росли три сиротливых волоска, — судорожно попытался закрыть какую-то вкладку на экране. Я успел заметить интерфейс онлайн-покера. Наш старший архитектор, видимо, диверсифицировал риски.
    — Ну привет, лучшие умы, — я снял рюкзак и бросил его на свободный стол. Стол качнулся, одна ножка у него была короче остальных и подперта сложенной вчетверо визиткой какого-то карго-перевозчика. — Давайте смотреть. Покажите мне репозиторий.
    Ананд засуетился. Он подтащил мне пластиковый стул, который жалобно хрустнул под моим весом.
    — Видите ли, Антон, — заговорил он, присаживаясь рядом и начиная активно жестикулировать. — У нас возникли небольшие технические… как это по-русски… нюансы. Да, нюансы. Наша инфраструктура подверглась серьезному испытанию. Вчера в Электронном городе отключили электричество. На двенадцать часов.
    — У вас нет бесперебойников? — спросил я, чувствуя, как внутри начинает закипать то самое, московское, офисное раздражение, которое обычно лечится увольнением всей проектной команды. — Вы — IT-компания в Бангалоре. У вас должен быть дизель-генератор размером с этот дом.
    — Дизель-генератор есть! — радостно подхватил Ананд. — Но его украли.
    Я замер.
    — Кто украл? Дизель-генератор? Из офиса?
    — Местные повстанцы из профсоюза водителей тук-туков, — абсолютно серьезно сказал Ананд. — У них была забастовка. Им нужен был свет для палаточного городка. Они пришли и забрали. Но мы написали заявление в полицию! Шериф обещал разобраться. Аманья. То есть, завтра.
    Завтра. Это чертово «завтра» преследовало меня по всему миру. В Лиссабоне это было «аманья», в Индии это было «веда кутра» или как там у них на каннада, но суть оставалась прежней: «Отвали, белый человек, приди тогда, когда нас здесь не будет».
    — Ладно, — я потер виски. — Бог с ним, с генератором. Код где? Вы же не на генераторе его хранили. На гитхабе пусто. Почему?
    Раджеш, старший архитектор с тремя волосками, подал голос. Английский у него был такой специфический, с прищелкиванием языком, что мне приходилось мысленно переводить каждое слово через двойной фильтр.
    — Сэр, мы используем локальный Git. Из соображений безопасности. Безопасность наших клиентов — наш главный приоритет. Иван Васильевич очень просил, чтобы данные не ушли к конкурентам.
    — И где этот локальный Git? — спросил я, наклоняясь к его ноутбуку.
    — Он на сервере, — Раджеш ткнул пальцем в сторону темного угла комнаты, где под грудой старых коробок из-под пиццы стоял системный блок, обмотанный проводами. Из блока доносился звук, похожий на предсмертный хрип задыхающегося мопса. — Но мы не можем его включить. Потому что… ну, вы понимаете, электричество.
    Я посмотрел на лампочку, которая в этот момент горела над нашими головами вполне себе ровным, желтым светом.
    — А это что? — я указал пальцем вверх. — Это не электричество? Это святой дух вам офис освещает?
    Ананд вздохнул. На его лице впервые за вечер появилось что-то похожее на человеческую эмоцию — легкую, мимолетную грусть.
    — Это от соседей, сэр. Из автомастерской. Мы протянули кабель через окно. Но у них слабая фаза. Если мы включим сервер, у них сломается сварочный аппарат. Тогда они придут сюда с кувалдами. Это будет плохой нетворкинг, Антон. Очень плохой.
    Я сидел в индийском IT-офисе, слушал, как внизу кувалдой херачат по тракторной оси, и думал о том, что наша компания платит этим людям тридцать тысяч долларов в месяц. Тридцать тысяч долларов. За эти деньги в Смоленске можно нанять роту программистов, которые за две недели напишут систему распознавания кодов, даже если у них отключат не то что свет, а вообще всю цивилизацию вместе с водопроводом и отоплением. Они будут писать код углем на обоях, но сдадут проект в срок, потому что у них ипотека и жена требует шубу.
    А здесь сидели три просветленных существа под руководством Ананда и сосали деньги из московского бюджета, прикрываясь забастовками водителей тук-туков.
   
    — Так, — сказал я, вставая со стула. — Сворачивайте свою лавочку. Раджеш, хватай ноутбук. Ананд, ты едешь со мной.
    — Куда, сэр? — испуганно спросил прожект-менеджер.
    — В мой отель. У меня в номере есть электричество, кондиционер и быстрый интернет. Мы сядем там, и вы мне покажете все, что у вас есть. Каждую строчку. Каждую функцию. Если кода нет — я прямо из номера звоню Ивану Васильевичу, и он отзывает платеж за следующий квартал. И вы будете писать свои модули для автомастерской снизу. Бесплатно.
    Ананд и Раджеш переглянулись. В их глазах прочитался первобытный страх. Страх потерять московского заказчика — это самый сильный стимул для развития индийских высоких технологий, проверено годами аутсорсинга.
    Через десять минут мы уже ехали обратно. Точнее, пытались ехать. Пробка никуда не делась, она просто стала более темной и зловещей.
    Раджеш сидел на заднем сиденье такси, прижав ноутбук к груди как единственного выжившего ребенка после наводнения. Ананд на переднем сиденье непрерывно молился, перебирая четки и косясь на меня в зеркало заднего вида.
    — Антон, — осторожно заговорил он минут через двадцать, когда мы продвинулись еще на три метра вперед. — Вы очень жесткий человек. Настоящий русский менеджер. У вас плохая карма для бизнеса. Бизнес нужно делать с любовью. С уважением к таймингу Вселенной.
    — Мой тайминг, Ананд, — ответил я, глядя на то, как за окном двое индусов на скутере везут огромный кусок сырого мяса, ничем не прикрытый, со всеми вытекающими из этого анатомическими подробностями, — мой тайминг привязан к осеннему релизу. Если релиза не будет — моя карма превратится в заявление об увольнении. А я слишком люблю свои тридцать два оператора if-else в португальском модуле, чтобы так глупо их потерять.
    Мой номер в отеле «The Grand Palace of Bangalore» (четыре звезды, если не считать того, что в ванной из крана текла вода цвета слабого чая) превратился в филиал ада.
    Мы сидели уже четыре часа.
    На часах было два ночи. На столе стояли пустые чашки из-под кофе, три пустые коробки от местной доставки еды (какой-то рис с огненным соусом, от которого у меня до сих пор горело в пищеводе так, словно я проглотил кусок тлеющего торфа) и два ноутбука. Мой и Раджеша.
    Кода, как я и ожидал, не было. Точнее, он был. Но в таком состоянии, в каком обычно находится квартира после налета нетрезвых гусар.
    — Раджеш, — я ткнул пальцем в экран, где светилась функция recognize_code(). — Объясни мне, милый человек, почему у тебя внутри этой функции стоит задержка sleep(5000)? Зачем ты искусственно тормозишь поток на пять секунд?
    Раджеш опустил голову. Его три волоска на подбородке грустно затрепетали под потоком воздуха из кондиционера.
    — Это для стабильности, сэр, — прошептал он.
    — Для какой стабильности, Раджеш?! Система должна обрабатывать десять тысяч запросов в секунду! Если каждый запрос будет спать по пять секунд, наше облако упадет через три минуты после запуска!
    В разговор вмешался Ананд. Он сидел на полу, поджав под себя ноги, и выглядел как побитый пес, которого выгнали из теплой будки на мороз.
    — Антон, не кричите на Раджеша. Он ранимый мальчик. У него высшее образование в университете Майсура. Он просто хотел… хотел, чтобы пользователь успел прочитать нашу надпись «Шива думает над вашим кодом». Это маркетинг! Это создает ощущение глубины процесса!
    Я закрыл лицо руками.
    Маркетинг. Они встроили sleep() в бэкэнд логистического модуля, чтобы пользователь прочувствовал «глубину процесса». Это был финал. Это была победа индийской философской мысли над здравым смыслом.
    — Так, — я открыл свой ноутбук. — Раджеш, отойди от клавиатуры. На безопасное расстояние. Метра на два. Ананд, налей мне еще этой бурды, которую вы называете кофе. Мы будем переписывать это говно. Вручную. Прямо сейчас.
   
    Следующие шесть часов я провел в состоянии, которое Леха назвал бы «темным трансом». Я не думал. Я просто стучал по клавишам. Мой мозг, подстегнутый адреналином, литрами дешевого индийского робусты и страхом перед Иваном Васильевичем, работал как швейцарские часы. Я вырезал из кода Раджеша всю эту восточную меланхолию, все эти пятисекундные паузы, все эти кривые библиотеки, скачанные с сомнительных форумов.
    Я писал чистый, сухой, как подмосковный мороз, код.
    Индусы сидели в углу на диване и смотрели на меня с благоговейным ужасом. Они, кажется, впервые в жизни видели, как белый человек работает со скоростью триста знаков в минуту без перерывов на медитацию и обсуждение кармического долга. Для них это было сродни явлению многорукого Шивы-разрушителя, который пришел очистить мир от неоптимизированных скриптов.
    Когда солнце начало вставать, окрашивая бангалорский смог в нежно-розовый цвет, я нажал Enter.
    — Все, — сказал я, откидываясь на спинку стула. Спина хрустнула так громко, что Ананд на диване вздрогнул и перекрестился — или что они там делают в таких случаях. — Тесты прошли. Время обработки — две миллисекунды. Модуль готов. Заливаю в мастер-ветку.
    Раджеш робко подошел к столу. Посмотрел на экран.
    — Сэр… — тихо сказал он. — А где же функция «Шива думает»?
    — Шива больше не думает, Раджеш, — отрезал я, закрывая крышку ноутбука. — Шива теперь работает. На благо российской логистики. Забирайте свои манатки и валите в свой офис. Купите себе новый генератор на те деньги, что я вам сэкономил, вырезав твой маркетинг.
    Ананд поднялся, подошел ко мне и внезапно… лбом попытался коснуться моих кроссовок. Я испуганно отпрянул.
    — Что ты делаешь, чувак?!
    — Это знак уважения, Антон, — серьезно сказал он. — Вы — великий гуру. Вы показали нам путь. Мы напишем про вас кейс на нашем сайте.
    — Не надо кейсов, Ананд, — я устало повалился на кровать, прямо в одежде. — Просто не трогайте этот код до осени. Ничего не меняйте. Ни одной запятой. Иначе я вернусь. И уже с Иваном Васильевичем. А он, поверь мне, гораздо менее просветленный, чем я.
    Они ушли. Тихо, как тени, прикрыв за собой дверь.
    Я проснулся в три часа дня оттого, что у меня на тумбочке вибрировал телефон.
    На экране светилось имя «Иван Васильевич». Я сглотнул сухую слюну, нажал на кнопку и приложил трубку к уху.
    — Да, Иван Васильевич.
    — Антон! — рявкнул генеральный так, что динамик захрипел. — Мне тут Вика доложила, что эти… из Бангалора… прислали готовый модуль. Наши инженеры в Смоленске проверили — летает как ласточка! Ни одного сбоя! Слушай, а ты силен. Как ты их заставил? Юристы говорят, они там даже от части гонорара отказались «в знак уважения к русскому гуру».
    Я улыбнулся, глядя в потолок, где лениво крутился огромный четырехлопастной вентилятор.
    — Ну… мы нашли общий язык, Иван Васильевич. Архитектурный компромисс.
    — Молодец! В общем, так. Возвращайся в Москву. Хватит тебе по этим заграницам мотаться. Тамара Ивановна тебе там премию выписала. Тридцать тысяч рублей. Купишь себе что-нибудь. Худи новое.
    Тридцать тысяч рублей. Примерно четыреста долларов. За то, что я за одну ночь спас контракт на тридцать тысяч баксов и переписал архитектуру целого модуля. Капитализм во всей его уродливой, родной, московской красе.
    — Спасибо, Иван Васильевич, — сказал я. — Вылетаю завтра. Точнее, аманья.
    Я повесил трубку. Посмотрел на окно. За стеклом Бангалор продолжал жить своей безумной, предсказуемо-непредсказуемой жизнью. Ревели тук-туки, кричали торговцы, где-то далеко звенел колокольчик в индуистском храме, а в коворкингах тысячи молодых парней в клетчатых рубашках продолжали встраивать функции sleep() в код мировых корпораций, создавая ту самую «глубину процесса», без которой эта планета, наверное, двигалась бы слишком быстро.
    Я встал, подошел к мини-бару, достал оттуда маленькую бутылочку индийского рома «Old Monk» — черного, густого, пахнущего патокой и ванилью. Налил в стакан. Без льда. Без колы.
    Сделал глоток. Было горячо и сладко.
    Мой международный вояж заканчивался. Впереди была Москва, серый асфальт, Лехин пустой стул в отделе разработки и новые, еще более идиотские задачи в Jira. Но это будет завтра.
    А сегодня я сидел в Бангалоре, пил ром и чувствовал, как моя личная карма медленно, но верно очищается от московского стресса, превращаясь в чистый, красивый и абсолютно неоптимизированный хаос.


Рецензии

С 3 по 5 июля состоится Литературный фестиваль в Этномире. В программе – семинары известных поэтов и писателей, поэтический конкурс, посвященный Году единства народов России, книжная выставкая-ярмарка. Приглашаем принять участие →