«Нужно бороться за свои идеалы на любом уровне»

Ведущий эксперт по технологиям в Сбере о факапах, Сберджайле, нетривиальном пути в IT и принципах эффективной работы.

Максим Лазарев работал химиком в НИИ. Пережив крушение научных идеалов, он с головой ушёл в IT: создавал игру про зомбаков, кодил без сна и выходных (не надо так!), а теперь — ведущий эксперт по технологиям и тимлид в Сбербанке. 

Мы поговорили с Максом о правилах работы, Сберджайле, отношении к факапам, профилактике выгорания и задали вопросы «из зала». Делимся с вами самым интересным.

Ведущий эксперт по технологиям в Сбере о факапах, Сберджайле, нетривиальном пути в IT и принципах эффективной работы.

В шкуре Лапенко: будни в НИИ и крушение идеалов

Я переехал в Москву из Перми и поступил в Институт тонких химических технологий. На 3 курсе стало понятно, что образование, которое нам дают, не особо применимо к жизни. Уже тогда я начал поглядывать в сторону программирования. 

После бакалавриата я стал заниматься тонким синтезом в НИИ. Сейчас я смотрю ролики, где инженер Лапенко в лаборатории своей сидит, и понимаю, что у меня всё было абсолютно идентично: колбочки, мусор, грязь, тараканы. Даже отношения в коллективе такие же. Мне нравилась химия и я хотел заниматься естественными науками, но мои идеалы начали рушиться и тяга вкусно есть победила. В итоге, я убежал учиться в магистратуру физфака МГУ. 

Параллельно с учёбой в МГУ, я уже нормально программировал на NumPy, Python, на спец. языках, а с середины 5 курса стал работать младшим программистом на проекте М.Видео. В это время и случилось крушение идеалов №2. Я спросил своего научного руководителя: «вот закончу я универ, какие у меня перспективы?». Оказалось, это работа моделлером за 30-40 тысяч в месяц, защита кандидатской через пару лет и призрачная возможность расцвести, если я отдамся науке с головой.  В общем, я второй раз обжегся о действительность и сдался, сменил специальность.

Интервью подготовила команда проекта Veer – это беруши с регулировкой громкости для тех, кто решает сложные задачи головой. Veer помогают концентрироваться и работать продуктивно, даже если вокруг шумно.

Про боль и страдания хардварного производства читайте в нашем Телеграм-канале 

Игры и «первая любовь» к IT

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

График был комфортный, много свободного времени, и я на пару с приятелем успевал заниматься маленькими мобильными и компьютерными играми. Я приезжал к нему после работы и до часу ночи мы фигачили наш собственный проект. Это была игра под iOS и Android, в которой надо было мочить зомбаков. Мы выпустили beta для друзей, но чтобы допилить и зарелизить игру нам не хватило организационных способностей. Я тогда слёг с пневмонией в больницу, а друг потом начал жениться, готовиться к переезду в штаты и наши дорожки немного разошлись. Впрочем, мы до сих пор тешим надежды дописать игру…

За три года в М.Видео из джуна я стал экспертом, тимлидом: вёл проект по бэк-энду корзины, погружал новеньких в процесс, проводил собеседования. Мне захотелось посмотреть, как устроены другие места, компании. Последний проект, в котором я участвовал для М.Видео — мобильное приложение «М.Видео». 

Эра ВТБ

B ВТБ меня захантили, предложив позицию ведущего разработчика. Там меня поджидали несколько вызовов:

Дела организаторские

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

Цифровизация, трансформация, боль

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

Бесконечный аврал

Перейдя на удалёнку, мы работали как черти. Вся команда горела, сидели до 2-3 утра. Был релиз и нужно было всё доделывать уже «вчера». У меня был месяц, когда я работал без выходных. Сроки были очень странные, нереальные, плюс гнетущая атмосфера и давящая обратная связь. С точки зрения бизнеса, я понимаю заказчиков, но, ребят, мы кучу раз проговаривали: не может девять женщин родить одного ребенка за 1 месяц! В итоге, я ушел, но не считаю, что сдался.

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

«Суперзвезда» ищет работу

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

Как-то раз я проснулся ночью от уведомлений из «телеги», увидел, что у меня ещё куча пропущенных вызовов, смс. Ненадолго ощущаешь себя суперзвездой, весело!

Кстати, уходя из ВТБ, я поступил умнее, чем в прошлое увольнение: вызвонил приятеля и мы вместе стали искать варианты работы. Гораздо легче погружаться в новые проекты, когда приходишь куда-то уже с командой. Да и работать веселее. В наш шорт лист вошли Райффайзен,  НСПК и Сбербанк. Мы выбрали Сбер. Это был осознанный,  аналитический выбор: мы сели и основательно расписали все плюсы и минусы. До этого я ни разу в жизни такого не делал, а зря.

Моя должность в Сбере — «ведущий эксперт по технологиям»

Сбер

Моя должность в Сбере — «ведущий эксперт по технологиям», я работаю в блоке с банкоматами. Отчасти это тимлид/ Senior-позиция, потому что я не только пишу код, но и беру на себя организационные вопросы. У нас достаточно горизонтальная команда, так что я скорее как старший товарищ, к которому ребята прислушиваются по технической части.

У нас исключительно хардкорная бэк-энд команда, набранная с нуля — java/kotlin разработчики, тестировщики, аналитики. Сейчас идет процесс устаканивания: мы постоянно совещаемся и налаживаем различные процессы. 

Когда ты дорос до определенного уровня, ты можешь либо по технической части расти, либо — как менеджер. Я хочу пойти в сторону техчасти, стать архитектором и принимать решения на уровне банка и всех систем. Это круто!

Переговорка в офисе Сбера с группой Кино
Переговорка в офисе Сбера с группой Кино

Сберджайл: спринты vs. холивары

Работа моей команды строится по модели Сберджайл — это адаптация Scrum для Сбера. Модель работает по классическим принципам Agile, но подкручена под банковские бизнес-процессы. 

У нас двухнедельные спринты с традиционными для Agile ролями и ритуалами. Формируем бэк-лог, расставляем приоритеты, по утрам собираемся в зуме на дейли и каждый участник за 1,5-2 минуты рассказывает над чем работал вчера, с какими трудностями столкнулся, какой у него план на день. Финал спринта — демо, когда ты показываешь слепок функционала твоего рабочего продукта заказчику. На ретро выясняем, что было не так, что понравилось, что можно улучшить. Все процессы натягиваются на классическую IT-структуру, в нашем случае на систему Конфлюенс.

Мне кажется, вся эта история у нас работает хорошо. Плохо бывает, когда люди неправильно Agile интерпретируют, евангелисты начинают соблюдать все ритуалы с полной отдачей, и всем навязываться. Всех звать на грумминги, встречи. Когда разработчик понимает, что 50% времени на работе он тратит на встречи — это угнетает, я такие примеры знаю. Я и сам был в этой шкуре. 

Вообще, мы, разработчики, периодически бываем токсичными ребятами. Посидеть и похоливарить «какие библиотеки использовать? как правильно писать понятный и эффективный код?» излюбленная история. Agile же стимулирует работать, а не устраивать стычки на пустом месте. Спринт расписан, сроки сжатые — холиварить времени нет.

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

  1. В ошибках становишься крепче

Ни разу на встречал такого, чтобы за ошибки кого-то крупно штрафовали или увольняли. Увольняют, как правило, лентяев или самозванцев, тех, кто не хочет быть командным игроком. Такие ребята могут проработать месяц-другой и совершить за это время всего 3-4 коммита.

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

  1. Здоровые отношения — залог успеха

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

  1. Нужно бороться за свои идеалы на любом уровне

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

Про факапы и ответственность

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

Чтобы исправлять ошибки разного рода я использую принцип минимальных трудозатрат. Сначала пытаемся понять: почему всё так было спроектировано и в каких процессах участвует проблема? После того, как картина будет ясна, надо найти правильное решение проблемы, которое потребует минимальных трудозатрат во всех системах. Это тяжело, но если нормально постараться — ответ не заставит себя ждать. Такие ситуации хорошо закаляют команду.

Осторожно, чек-лист! Как успевать сделать всё, что напланировал

Делать каждую задачу осознанно

Самое важное для поддержания концентрации — понимание того, что и для чего ты делаешь. Не должно быть левых, не нужных тебе задач. Никаких специальных капель для концентрации или энергетиков с утра до вечера, как некоторые делают, я не использую. Просто нужно понимать задачу и правильно распределять сахар в крови, вот и весь секрет.

Перерывы — каждые 45 минут

Я пишу код по 7-8 часов в день и выработал для себя правило: каждые 45 минут делать перерыв.  Надо отрываться от компьютера и заниматься чем-то активным: сделать разминку, подняться с этажа на этаж, попить кофе. Есть мнение, что можно кодить не более 5 часов в день. Я думаю, что вполне возможно работать и дольше.

Решать сложные задачи в тишине или двумя головами

Есть два вида задач. Первые — привычные, монотонные, понятные. Их я иногда делаю под музыку, чтобы не заскучать. Вторые — сложные, новые, творческие даже. Тут нужно быть включенным и думать, и отвлекаться на музыку или разговоры коллег — не вариант. Чтобы не отвлекаться на посторонние звуки, лучше уединиться. В переговорке, пустой комнате или даже на улице, посидеть на лавочке и поработать. 

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

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

Семь раз оценить, и один раз согласовать сроки

В Сбере всё относительно спокойно после ВТБ, не надо сидеть ночами. На текущем проекте мы попадаем во все дедлайны и у нас есть конкретная цель на 4 квартал этого года. Секрет попадания в дедлайны в том, чтобы на старте заморочиться и оценить задачи и сроки максимально адекватно, и убедиться, что заказчик полностью с тобой согласен. К эффективной работе стимулирует расписанный спринт и график релизов. Ты всегда знаешь, что надо делать, и тебе некогда болтать языком и пить кофе. 

Переключаться 

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

Я отвлекаюсь на спорт, книги и музыку. Достаточно пару раз в неделю выйти побегать, на турнике повисеть, порастягиваться. Из книг люблю романистов начала 20 века: Булгаков, Хэмингуэй, Ремарк. Сейчас хочу разобраться в экономике, поэтому читаю Сергея Гуриева. Во время ковида начал больше писать: различные статьи, заметки. Пока для себя, не для публикации. Этакий полудневник. До ковида много ходил по музеям Москвы и различным мероприятиям. 

Ещё — у моей жены есть классная блинная в центре Москвы, я помогаю ей с этим делом. Мы вместе думаем, принимаем решения, например, открывать новую точку или нет. Вчера вот настраивал ей контекстную рекламу в Адвордсе. Дивидендов тут я особо не имею, но мне просто интересно, for fun. 

Вместо заключения

Сейчас мой главный челендж — написать систему, которая будет держать пиковую нагрузку в  10 тысяч транзакций в секунду, подобрать инфраструктуру и зарелизить весь проект, успев всё сделать к дедлайну. Желательно сохранить при этом человеческий облик!

БЛИЦ — вопросы «из зала»

С вопросами нам помогли участники профильных чатов в телеграме, например pro.jvm — сообщества разработчиков Java Scala Kotlin Groovy Clojure.

  1.  Как вы защищаете данные от утечки? 

Не хочу за Сбербанк отвечать, но во всех крупных энтерпрайз компаниях настроена защита данных и разные способы борьбы с злоумышленниками. Защитой от проникновений во внутреннюю сеть занимается определенная группа людей — Департамент ИТ Безопасности. Есть взломы, когда можно проникнуть в сеть, но это тоже тяжелая история. А как бороться с утечкой данных? Необходимо полностью отладить процесс. Протестировать его на всех уровнях. Все контесты должны быть пройдены. На некоторые системы, когда релизится продукт, делают «баунти-хант». Компания, которая релизит, заявляет: «ребят, кто взломает наш продукт, заработает 100 000 долларов, до 1 декабря 2020 года». И самые лучшие хакеры пытаются ее взломать. Это всё касается внешней угрозы. 

Я занимаюсь только прикладным уровнем приложений и о безопасности сейчас говорю лишь то, что знаю. Если брать тему персональных и карточных данных, то ко всем компаниям, которые занимаются обработкой персональных данных и их хранением, приходит аудит. Приходит и проводит инспекцию всех систем  работы с данными. В ходе аудита выявляются места, где что-либо неправильно организовано. Компания должна исправить эти недочеты и заново пройти аудит. В итоге организации выдаётся сертификат, который нельзя получить за взятку. В ряде компаний проверки проводятся максимально честно, потому что утечка информации никому не нужна. Никто не захочет выстрелить себе в ногу, имея такую возможность. Лучше основательно всё проверить и не бояться потом спать.

  1. Как код защищён от хищения сотрудниками и как защитить сотрудника от тех, кто хочет выпытать код?

Лично у меня нет доступа к тому, чтобы смотреть данные клиентов. Чтобы получить доступ, мне нужно нарушить трудовой договор, а значит, я понесу ответственность за содеянное. Существует регулирование этого вопроса, например,  сотрудники не могут отправлять данные по почте, так как все проверяется и сканируется. Постоянно проводятся проверки от службы безопасности. Бывает, приходит тебе от Сбера какая-то тестовая ссылка, а там пишут: «введи данные свои». Часть людей попадается на это. Так сотрудников тренируют, чтобы они соблюдали правила безопасности.

  1. Пишешь ли ты по вечерам, когда все спят, на perl/php ?

На этих языках нет, только на Unity3D, то есть C#. Последние пару лет делаю это реже и реже. Также интересуюсь python в разрезе data science. На мой взгляд, интересное и перспективное направление.

  1. Что значит для вас критически важный код? Как добиваетесь того, чтобы он не упал в самый неподходящий момент? Что делаете, если рухнул?

Какая система является критической определяет бизнес и его процессы. Для Apple, например, это iCloud, а для Сбера — процессинг транзакций банка. Отказ критической системы крайне дорого стоит бизнесу.

Если ты изначально знаешь, что работаешь с критичным функционалом, то используй лучшие практики разработки приложений: более дотошное проектирование API, домена и бизнес-процесса, code review, static code analyzer, checkmarx, devops практики, внедрение K8s, автоматизированное масштабирование приложения, метрики для постоянного мониторинга системы — prometheus etc, удобный разбор инцидентов — EFK/ELK  стек, репликации баз данных/брокеров, (гео-)шардирование сервисов/баз данных, и т д. 

Также требуется нанять службу поддержки критичного продукта, которые будут работать 24/7 и быстро решать инциденты.

  1. Критически важный код это гостайна? 

Не думаю. Это как сравнивать мягкое с теплым 😀

  1. Предлагают ли сливать базы и сколько за это предлагают денег?

Никто не предлагает. Даже если сотрудник решит нажиться на данных клиента и слить их в darknet’e, то он получит реальный срок за нарушение закона. Это преследуется и контролируется в компании вдоль и поперек. 

  1. Как обеспечиваете безопасность на проекте? Как версионируете код? Какое хранилище для кода используете?

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

1) Проверка кода статическими анализаторами кода (SonarQube

2) CheckMarx (проверка кода на уязвимости) 

3) Проверка исходного кода службой безопасности ИТ

На каждом из этих шагов может возникнуть необходимость исправить баги, решить какие-либо вопросы. 

  1. Дают ли лицензионный ключ для Intellij IDEA?

Ну конечно, а как иначе?:D

  1. Как разгребаете процессы, если брокер падает, а процесс отработал и не отчитался?

Идемпотентность при обработке данных вам в помощь. Написать consumer’a таким образом, чтобы сервис и бизнес процесс не выпадал из строя при дублировании запросов от брокеров с одним и тем же requestId. 

  1. Какая минимальная версия JDK в банке?

Не могу сказать за всех коллег, к сожалению, не знаю. В банке целевая версия — это java 11. У нас на проекте java 11, kafka, spring boot 2.2, gradle. Сейчас я пытаюсь протащить в команду и наш департамент язык программирования kotlin. Оказалось, это сложнее, чем я думал. Тем не менее, результат уже есть. Думаю, всё получится.

  1. Java 17, Micronaut, serverless — что-то из этого будет в будущем?

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

  1. Почему в буткэмпе ППРБ стенд с майками всё время падает?

Потому что продукт еще сырой. Его обкатывают на сотрудниках. Хорошо, что далеко не весь Сбер такой. Это радует:D

  1. Есть знаменитый мем —  «где открывали, туда и идите». Почему всё так сделано? Это же, в принципе, должна быть вполне IT-шная проблема — управление данными клиентов для разных офисов. 

Да, IT — почти в любой ситуации может решить любую поставленную задачу, кроме, пожалуй исцеления людей. Фишка в том, что IT в реалиях крупных компаний крайне редко берет инициативу в свои руки и решает за бизнес. Зачастую, бизнес диктует свои требования и условия. IT является красивой реализацией бизнес нужд. Некоторые продукты выстреливают за счет адекватных и квалифицированных коллег, но, в основном, задачи решаются в соответствии с требованиями. Это не запрещает проявлять инициативу, просто требует дополнительных усилий, как и любой интеллектуальный труд, и только.

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

Беруши Veer для продуктивной работы дома, в офисе, коворкинге и кафе
Беруши Veer для продуктивной работы дома, в офисе, коворкинге и кафе.