Читать книгу: «Тимлиды», страница 4
7. Женщины
Лиззи была в «Цветочках» уже третий час. Речь Вячеслава не произвела на нее впечатление, она ее читала. Они дружили давно и Лиз помогала лидеру Профсоюза, не афишируя свою роль. Однажды она, разочарованная гендерной диспропорцией их сообщества, порекомендовала принять девушку-тимлида, о чем, впрочем, не раз пожалела.
– Ты в Питере? – Лиззи хотела получить отрицательный ответ на сообщение в телеграме, положительный обязывал ее к общению.
– Да, на Некрасова, сидры пью.
– «Сидр и Нэнси»?
– Кажется, да.
– Сейчас буду, закажи мне кружку сладенького.
Лиззн посмотрела на сидящего рядом спутника, который не понимал смысла этого вечера и был разочарован тем, что его девушка общается с незнакомыми ему мужчинами. Стесняясь показать свою ревность, он старался не выдать себя, лишь пил больше обычного. В ответ на ее: «Милый, я выйду ненадолго», он лишь хмыкнул: «Окей». Лиззи прошла вдоль стойки, с трудом отыскав свою куртку, вышла на улицу. Ирина сидела в баре через дорогу, и уже через минуту девушки чокнулись бокалами сидра, приветствуя друг друга.
– Здорово, что нашла время приехать, – начала Лиззи вежливо.
– Да, мама согласилась посидеть с детьми, – нехотя ответила Ирина. – Четыре года не была в отпуске и подумала, что заслужила хотя бы эти выходные.
Девушки познакомились на одном из прошлых проектов, где команда Лиззи делала android- и iOS-приложения, а команда Ирины – java-бэкенд для них. Начав общаться по рабочим вопросам, тимлидши скоро из любопытства ненадолго подружились, но быстро охладели друг к другу, обоюдно обнаружив себя полными противоположностями. Прежде охлаждения Лиззи привела Ирину в Профсоюз, где последняя теперь была для нее постоянным напоминанием женского обычая принимать решения на эмоциях. Лиззи даже поднимала эту тему со своим психоаналитиком.
Ирина была тридцатидвухлетней java-разработчицей, которая стала руководителем разработки после ухода предыдущего тимлида в более хлебное место. Она не была карьеристкой, ее устраивала текущие работа и доход. Технологии и задачи ее не особенно интересовали. Самым важным в жизни Ирины были ее дети: Вика и Глеб, фотографии которых были на заставке ее телефона и даже в бумажнике. Муж от Ирины ушел, встретив в школе, где работал учителем русского языка и литературы, молодую преподавательницу биологии. Лиззи раздражало в Ирине полное отсутствие амбиций и характера, как она его понимала. Ирина в ответ недолюбливала Лиз, считая ее поверхностной карьеристкой, не созревшей к семье и материнству.
– Как дети? – спросила Лиз.
– Растут, старший скоро в школу. Сама не решилась? – Ирина знала реакцию и ответ Лиз, но каждый раз задавала этот вопрос, будто стараясь показать, что child-free позиция Лиз – это трусость.
– Всему свое время, – Лиззи понимала этот сценарий беседы и не стала обострять. – Что думаешь про план Вячеслава?
– Я не готова, – без раздумий ответила Ирина. Она жила размеренной успешной по меркам Твери жизнью, у нее были дети. План выглядел для нее как приглашение к партизанской войне или преступлению, чему-то чрезвычайно чуждому ее уютному быту. Будто оправдываясь, она продолжила. – Да и не знаю, как я могла бы помочь. А ты в деле?
– В деле, мы подрядчик этого банка в части фронтовых приложений. Там хаос, что и хотим использовать. – Лиззи была горда собой, участвуя в таком необычном предприятии, будучи не просто его частью, а одним из организаторов. Ей нравилось ощущение общности с этими рисковыми тимлидами и чувство интеллектуального и профессионального превосходства, которое было обычным в их коллективе.
– Не боишься? – спросила Ирина, а ее собеседница почувствовала испанский стыд. Этот вопрос с такой же интонацией ей задала мать, когда Лиззи в семнадцать лет сказала, что уезжает из Энгельса, маленького городка под Саратовом, который она ненавидела, в Петербург.
– Все будет хорошо, – спокойно произнесла Лиз. – Ладно, пойду, ещё надо успеть поговорить с другими тимлидами. Рада была видеть!
Лиза обняла коллегу, расплатилась за сидр и вышла.
8. Архитектурный комитет
Тяжелая дверь «Бара мертвых поэтов» напомнила Вячеславу вход в метро, в котором он уже давно не был. В противоположном от барной стойки углу расположилась знакомая ему компания тимлидов, ключевых участников начинаемого дела.
– Господа, спасибо, что ещё относительно трезвые, – шуткой приветствовал он коллег, подходя и снимая перчатки.
– Я надеюсь это исправить в ближайшее же время, – парировал Михаил, сидевший у окна и с любопытством разглядывавший собравшихся в зале.
– Миш, поддерживаю идею. Можно уже заказывать что угодно. Обсуждение дела займет от силы полчаса, за это время никто из присутствующих охмелеть не успеет, все будут в курсе происходящего. Вы уже заказали?
– Лиза, похоже, и здесь всех знает. Она нам эти столики организовала, а сейчас вон у стойки. Мы ей делегировали заказать выпивку для нас на ее вкус. Все равно мы в коктейлях мало что понимаем, – ответил Лев, зевая: ему редко удавалось высыпаться вне родного дома.
– Тогда, давайте дождемся ее и начнем. Я выслал каждому из вас документ для ознакомления про архитектурку информационных систем банка. Вот ещё и распечатка, чтобы было удобнее, – Вячеслав положил на стол три экземпляра документа в несколько страниц. – Там схемы разной степени актуальности.
– Мальчики, коктейли сейчас принесут, готовьтесь, там много. Кто слабенький – прячьтесь! – Лиззи была весела, как и всегда в барах. – Ой, ты ещё и документы сюда принес. Я отказываюсь их смотреть до тех пор, пока не принесут коктейли!
– Лиззи, я с тобой, ты – лучшая! – Михаил с симпатией смотрел на единственную девушку за столом.
– Влас, как у вас там в Нерезиновой? Похорошела Москва? – Лиззи нравилось выглядеть хулиганкой и отвлекать собравшихся от дела. Все это понимали и подыгрывали ей.
– Хорошеет с каждым днем благодаря плитке и большому брату. Вот только я, кажется, для нее недостаточно хорош. Приехал в Питер и совсем не хочу возвращаться обратно. И это не потому, что я пьяненький. Бары у вас прекрасны. Но здесь будто жизнь есть, а там я не знаю, у кого жизнь есть. В общем, никому лид аналитики не нужен?
– Они тебя не потянут, – Рустам, приехавший вместе с Власом на выходные из Москвы, отпил из принесенного стакана коктейль, – провинция, нищеброды.
– Тут ты не прав, дорогой. За этот год благодаря пандемии зарплаты во многом выровнялись в айтишечке, – ответил, поднимая один из бокалов со стола, Лев. – У всех же теперь удаленка, хвала вирусу! Так что в зарплатах сейчас отстает только тот, кто не требовал повышения с допандемийных времен.
– Да я знаю, – поправляя воротничок обтягивающей рубашки, лениво ответил Рустам. – Но наш Влас все равно дорогой, его мало кто потянет.
– Это ты ещё счет в этом баре за коктейли не видел, увидишь – поймешь, что такое дорого! – хлопнув Рустама по выпирающему животику, сказала с вызовом Лиззи.
– Господа, Лиззи, давайте выпьем за встречу и за успех! – Вячеслав поднял бокал. Чокнувшись со всеми и пригубив, он продолжил. – Позвольте рассказать план.
– Давай-давай, а то моему сознанию не долго со мной сегодня оставаться, – Михаил достал из под бокалов один из экземпляров документа и углубился в него. Сидящие по бокам от него Рустам и Лев тоже взглянули на схемы, что-то показывая друг другу.
– Короче, перед вами несколько компонентных схем, описывающих банковскую систему. Их несколько, они не согласованы между собой, были составлены в разное время. Я вкратце опишу их поделие, как мы его представляем по этим схемам. На первом листе вы видите верхнеуровневый взгляд на систему. Это отказоустойчивая распределенная система. Она располагается в десятке дата-центров, вон, сбоку вы видите лейбл tierIV, вероятно это означает класс надежности. Я буду слегка иронизировать сначала, пока схемы проговариваю, потом объясню почему. Не буду сейчас рассказывать про инфраструктурное программное обеспечение, виртуалки, контейнеры и прочее. Точная информация будет в понедельник, не раньше. На третьем листе, посмотрите, свежая схема компонентов системы: приложений, СУБД, очередей. Здесь не все, схема полугодовой давности, актуальна в общих чертах. Тут довольно стандартно. Сайтик на javascript+react, это часть Лиззи, мобилки на Swift и Kotlin, тоже она. С бэком сложнее, он вроде весь на джаве, но это не точно. В хранении зоопарк, используется баз десять, на схеме обозначены. Короче, все базы данных, которые придут на ум, есть в системе. Не спрашивайте зачем. Просто потому, что они могут. Ещё есть hadoop, там озеро данных, что туда льют, пока не ясно.
– Выглядит все надежно, что нам здесь ловить? – Рустам взялся за второй коктейль. – Десять хороших дата-центров по стране или даже зарубежом делают систему вполне устойчивой к атаке непрофи вроде нас. Для атаки надо знать общую для всех узлов уязвимость или несколько уязвимостей. Или я что-то не так понял?
– У них нет десяти дата-центров. – Михаил с довольным видом, широко улыбаясь, подключился к дискуссии. – Мы выяснили, что эта архитектура есть только на бумаге. Инвесторам ее показали, чтобы обосновать расходы, и забыли о ней. В реальности есть три дата-центра: Москва, Нижний и Новосиб. Все они принадлежат Налоговой инспекции или ее подрядчикам, порядка там никакого нет. Банк арендует самые дешевые мощности, которые смог найти. Возможно, даже и совсем не платит за железо, а как-то мутит там, это же все окологосуха.
– Интернет-банк на трех узлах в несертифицированных дата-центрах? Это законно вообще? – Рустам удивленно смотрел на Михаила. – То есть задача в том, чтобы повлиять на работу этих центров?
– У нас уже есть возможность вмешаться в работу московского и нижегородского, – ответил Лев. – За Москву отвечает Миша, за Нижний – я. Лиз, расскажи свою роль.
– Ну а что Лиз? Слава же вещает, а вы все перебиваете! – ответила девушка.
– Не-не, вы же знаете, я за демократию, – Вячеслав сидел, опершись рукой на спинку стула, и с удовольствием слушал коллег. Он уже давно понял, что настоящим профессионалам надо только дать задачу, а дальше лишь подогревать их энергию и вмешиваться лишь в случае настоящего тупика, да и то не сразу. Они и из тупиков находят выходы. – Лиззи, твое слово.
– Лентяй! Мастер делегирования, блин. Ну ладно. В общем, моя команда пишет им фронт. Там всё отлично, работало до недавнего времени всё без сбоев, но уже месяц как мы стали вводить в код баги3, которые проявляются не сразу, при определенных обстоятельствах, плавающие такие, ну вы поняли. На будущей неделе у них должно рвануть.
– И что баги? Откатятся на предыдущую версию ваших приложений, где багов нет. Возможно, какие-то фичи, которые в последних версиях ввели, будут недоступны. Но проблемы-то нет. – Рустам взял роль адвоката дьявола в этой дискуссии. – Замедление разработки – да, отказ системы – нет.
– Опять ты говоришь о том, как должно быть. У них система так устроена, что нельзя откатиться назад без кучи ручных телодвижений. Нет автоматического деплоя. Есть куча конфигов, которые правятся руками, – Лиззи, нахмурив брови, посмотрела на Рустама, который поднял руки, давая понять, что сдается.
– Короче говоря, мы хотим повлиять на несколько уровней системы одновременно, – продолжил Вячеслав. – Во-первых, на доступность железа и инфраструктуры в широком смысле, во-вторых, на работу приложений конечных пользователей, в-третьих, на бэкенд. Четвертое направление, которое на поверхности, это ddos. Но для этого нужны большие мощности или, при небольших мощностях, надо четко знать, куда бить. Наверно, есть пятое направление, но пока мы его не видим, поэтому и прошу подключиться к этому делу.
– Я посмотрю со своими, что можно сделать, – многозначительно подытожил Рустам.
– Слушайте, а у меня вопрос. Можно? План А – это поспособствовать прекращению работы банка на этой же неделе, верно? – Влас обвел взглядом коллег. Вячеслав, Михаил и Лиззи кивнули в ответ. – А что если план не сработает? Не обижайтесь, друзья, но мы не профи в этом деле, мы не хакеры, не взламываем банки, или даже не знаю как это назвать. Проектировать и делать системы – это не то же самое, что пускать эти системы под откос.
– План Б – продолжение дела на ближайшие недели. – Вячеслав произнес это с неохотой, запасной план не был проработан. – Остановить эту авантюру мы можем в любой момент, если она станет нам в тягость. Сейчас основной план – блицкриг за неделю, второстепенный – пролонгирование ещё на пару недель.
– Уверен, ты найдешь более интересные вещи для пролонгирования, – рассмеялся Михаил. Влас перехватил инициативу.
– Я к чему спрашиваю: ещё в формате плана А надо получить их данные. В данных банка может быть много интересной информации. Особенно интересной она станет, если дело провалится в план Б.
Тимлиды ещё обсуждали некоторое время идеи, потом их отвлекли коктейли и присоединившиеся товарищи из других баров. Большая компания продолжила кутить, время от времени теряя тех, кому утром надо было руководить своими командами.
Понедельник, 25 января 2021 года. Вячеслав
1. Рабочее утро
Легкая вибрация на запястье разбудила и заставила открыть глаза. На часах было семь, утро понедельника, который обещал быть напряженным. Взгляд сквозь панорамные окна спальни пентхауса постарался остановиться на скованной льдом величественной Неве и не скользнуть вглубь стройки новых спальных кварталов на правом берегу реки. В детстве отец говорил Вячеславу: «Ученье – свет, а неученье – чуть свет и на работу». Эта присказка, как и другие советские истины, оказалась лживой: пробуждение до рассвета было привычкой, отделявшей успех от прозябания. Подъем, зарядка, душ, взвешивание на электронных весах, беглый просмотр аналитики сна и биоимпедансометрии, завтрак. В восемь утра Вячеслав включил в кабинете iMac. Небольшое смещение графика из-за вчерашней встречи Профсоюза уменьшило время сна и ощущалось в теле, 39 лет давали о себе знать.
Садиться за рабочий стол не хотелось – это могло затянуть на весь день, Вячеслав взял планшет и вышел из кабинета на просторный теплый балкон своей квартиры. Вид на предрассветный Петербург – проспекты почти без машин под светом уличных фонарей по оба берега реки, мосты через реку – заряжал энергией. Эта часть города была родной и знакомой. Проспект Обуховской обороны связал несколько поколений семьи Вячеслава, которая была свидетелями его появления и метаморфоз от проспектов Шлиссельбургского тракта до нынешнего вида. В нескольких кварталах жили его родители, неподалеку когда-то жили его дед и прадед. Получив на планшет почту и посмотрев расписание, Вячеслав представил свой график на этот день: из трех слоев параллельных встреч с девяти утра до восьми вечера надо было составить одну стройную последовательность важного, посетив все заслуживающее внимания, при этом успев поработать. Про себя он не называл эти многочисленные встречи в zoom, skype, teams4 и прочих сервисах работой. Работой для него была деятельность в своих командах, программирование, решение технических задач. Он любил работу и недолюбливал праздную болтовню совещаний, в первой находя силы для сопротивления второй. Ответив в почте и мессенджерах на все необходимое, Вячеслав вернулся в кабинет, сел за стол и бегло просмотрел сделанное командами с вечера пятницы в репозиториях и таск-менеджерах проектов, за которые отвечал.
Основным проектом была крупная федеральная система документооборота, где Вячеслав был техническим директором, cto. Система позволяла обмениваться юридически значимыми документами и была основой электронного документооборота четверти компаний страны, в том числе крупнейших банков, энергетических компаний, телекома. Все значимые технические решения и решения по организации команд разработки принимались при его непосредственном участии. Впрочем, ему этого было недостаточно: он был знаком с ситуацией в каждой команде разработки и старался регулярно смотреть код основных сервисов системы. Это позволяло быть погруженным в проект, не терять связь с технарями и следить за новым в разработке: языками, фреймворками, библиотеками, паттернами. Любя работу программиста всем сердцем, он держал в уме возможность опять ей заняться как основной.
Вторым проектом был небольшой международный блокчейн-стартап, который Вячеслав с партнерами организовал четыре года назад. Компания искала технологические и организационно-правовые возможности выйти на слаборегулируемые рынки с нестабильными валютами. Продуктом была платежная система, благодаря которой можно было бы, поднеся дешевый android-смартфон продавца к аналогичном устройству покупателя, совершить законную сделку купли-продажи, не нарушив местное право. Проект на стыке математики, программирования и юриспруденции обеспечивал сложными задачами и интересными знакомствами, а где-то в туманном будущем сулил неплохую прибыль.
Третьим проектом, социальным проектом pro bono был Профсоюз, который Вячеслав возглавлял, будучи первым среди равных тимлидов в этом сообществе. Вначале это было тяжело, но с течением времени и приобретением опыта, он впервые почувствовал, что оказался среди близких ему людей. Близких не как небольшая семья, где разные роли, возраста, пол, а как стая примерно одинаковых животных, где нивелированы различия и участники проживают примерно одну и ту же жизнь. Почти все участники Профсоюза были белыми мужчинами 30–40 лет, женатыми или в паре, с высшим техническим образованием, с русским как основным языком и английским как вторым, с привычкой к чтению и аналитическому мышлению, родившиеся и выросшие в СССР или России, православные или атеисты. Удивительным было находить в других свой прожитый опыт. Именно с этим проектом Вячеслав связывал свое будущее.
Требовалось делить время между тремя направлениями так, чтобы они не пересекались, чтобы смена контекста не провоцировал излишний стресс и все заинтересованные стороны оставались довольны, желательно, не думая о наличии конкурентов за время. Вячеслав был гуру тайм-менеджмента. Но сегодня успеть всё было невозможно, приходилось отказываться даже от важного. Нужно было выкроить время для подготовки в связи с принятым накануне планом.
Этому плану и было посвящен первый за день стендап – необычный zoom-стендап с участниками Профсоюза, взявшими на себя ключевые роли авантюры. Подключившись, Вячеслав в привычной манере начал:
– Приветствую всех, давайте начнем, кратенько по статусу. Михаил, ты первый. Выспался?
– Доброе утро, постараюсь кратко, но не уверен. Засиделись мы допоздна вчера. Короче, у нас есть физический доступ в два из трех дата-центров, на которых крутятся сервисы банка. В одном из них сегодня будет плановая замена серверов, и они будут заменены на заранее подготовленное нами железо. Во втором сегодня-завтра произойдет небольшая авария по причине халатности местных системных администраторов. По третьему пока все плохо, работаем, ищем варианты.
– Про первые два новости хорошие, по третьему какие идеи?
– Пока никаких, знаю, что это моя зона ответственности, но если кто-то готов помочь, буду рад.
– Принял, давайте дальше, Лиззи.
– Привет, зайчики. Ну и дали вы вчера: пили как в последний раз, будто больше и работать не надо и план наш сам себя реализует. Брали бы пример с меня – в полночь я уже крепко спала в своей кроватке. К делу, сегодня мы выкатим релиз5 мобильных приложений и веб-морду банка на препрод6, команда эксплуатации банка за день его спустя рукава потеснит и к вечеру примет, так всегда бывает. В релизе есть баги, которые не будут видны на препроде, и выстрелят они только на продуктиве. Там запутанная система конфигурационных файлов, и изменился api на бекенде. Проблемы были и в предыдущих релизах – они торопят разработку и не следят за качеством. Откатиться не смогут, система там и правда дурная, мы по sla7 спешить не сильно обязаны, так что во вторник, максимум к утру среды доступ пользователей к интернет-банку будет сильно ограничен.
– Отлично, Лиз, звучит как план! Лев, твое слово.
– Доброе утро, господа и Елизавета! И правда, оно было бы добрее, не будь коктейли в этих барах, куда ты нас, Вячеслав, заманил, такими вкусными. Если без шуток, мы отсмотрели код основных сервисов бэкенда банка. Видно, что пишут второпях, покрыто тестами процентов пять, много дублирований, статические анализаторы8 в гневе, но эти ребятки, похоже, линтеры не уважают. Мы нашли несколько зависимостей на внешние сервисы, которые реализованы таким образом, что при отсутствии или задержке ответа от внешнего сервиса банк тоже падает. Эти ошибки банк не обрабатывает: или уходит в вечный ступор, или говорит пользователю что-то невнятное. Можем повлиять на доступность этих сервисов или на их видимость из контура банка. Работаем над этим, к вечеру будет конкретика.
– Лев, мерси! Держи меня в курсе. Кто с тобой работает над анализом кода?
– Из моей команды пятеро, им я, разумеется, полную картину не сообщил. Из наших – Иван, Рустам, Илья, Саша, Ирина, Марго. Пока справляемся, помощь не нужна.
– Отлично, давайте дальше. Алексей, твой черед.
– Привет, алкоголики! Пока вы все вчера пили, я работал. К сожалению, у меня и моей команды знаний не хватит на анализ кода: джава и котлин у нас не в ходу. Мы успели следующее. Недавно несколько эксплуатационщиков9 банка уволились и приземлились в моей команде. Так что у нас на борту есть инсайдеры из команды эксплуатации банка и есть связь с текущей командой эксплуатации банка. Там разброд и шатание, люди крайне недовольны новым руководством, переработками и хаосом.
– Леш, правильно поняла, что код, который я задеплою10 на препрод-стенд через пару часов, с твоей помощью будет принят сразу же и поедет на продуктив? – вмешалась в перекличку Лиззи, почувствовав, что подвезли супероружие.
– Давайте пока этот козырь держать при себе. Парни на нашей стороне, но подставлять их не хочется.
– Есть ещё что-то важное, Алексей? – вернул дискуссию к формату Вячеслав.
– Главное я сказал. У нас есть все скрипты11 для развертывания систем банка на продуктиве, есть вся документация команды эксплуатации. Я разослал девопсам из наших, анализируют. Работаем в общем.
– Спасибо, Леш! Неожиданная помощь откуда не ждали. Останься, пожалуйста, после стендапа.
– Ок.
– Хочет ли кто-то ещё что-то добавить? – стандартно завершал стендап Вячеслав. Подождав желающих несколько секунд, он подытожил. – Тогда следующий созвон завтра утром в это же время, держите меня в курсе. Всем спасибо и продуктивного дня!
Вячеслав по привычке посмотрел на часы. Стендап занял меньше пяти минут, это было нормально. Долгие совещание были проклятьем отрасли. Там, где продолжительность совещания зависела от него, он был лаконичен. Все уже отключились, лишь Алексей ждал продолжения диалога и был на связи.
– Леш, насколько мы можем доверять господам из эксплуатации банка, про которых ты говорил?
– Полностью, двое уже в моей команде и они профи. Судя по их рассказам, там сменился менеджмент, отвечающий за эксплуатацию, железо, релизы. Ну и процессы меняются, перетасовываются полномочия между командами разработки и командой, отвечающей за продуктив.
– Да, Лиз говорила об этом. Новый менеджер эксплуатации хочет завязать на себя побольше полномочий, забрав их у команд.
– Именно. Но вменяемых людей у него нет, сам он технически слабый, технари разбегаются. На прошлой неделе с ним созвонились сеньоры из эксплуатации, хотели рассказать про свои боли, получить решение. Он включил видео и сидел перед ними за столом, на котором стояли кальян и выпивка, и это в рабочее время. Прям Человек со шрамом! – с горьким смехом сказал Алексей. – После созвона сеньоры написали заявления об увольнении.
– Звучит ужасно. А впрочем, нам это все на руку. Кажется, мы выбрали отличное время для дела.
– Согласен, будут новости – напишу.
– Спасибо тебе, Леш, до скорого.
Конференция была завершена, участники разошлись. Вячеслав был доволен началом: предварительная подготовка заняла два месяца, и сейчас были последние дни перед началом активной фазы дела. Настрой команды был выше ожиданий: первое общее дело вне обычных рабочих будней, приключение, в котором было понятно, что перед тобой зло, и как с ним справиться. Воодушевление тимлидов подпитывало и их лидера.
Покупайте книги и получайте бонусы в Литрес, Читай-городе и Буквоеде.
Участвовать в бонусной программе