Кадр из фильма «Идиократия»
Кадр из фильма «Идиократия»

Я не очень понимаю, почему об этом мало кто рассказывает.

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

Почему модные и молодёжные аджайл-команды релиз не делали? Потому что у них было готово всё кроме одной мелочи — например, разработанных и согласованных архитектурных документов на решение с инетрпрайз архитектором и безопасником. То есть процесс, который можно условно назвать «ГОСТ», приходил к ним в лице суровых грустных мужиков. И заставлял их проходить все этапы согласований, начиная с оценки возможного риска и заканчивая какими-то «совершенно ненужными» тестами, согласованиями требований с юристами и прочей хтонью, которая нормальному человеку покажется адом. Но именно по этому аду нужно было пройти, сделать с десятка два документов, согласовать каждый и только после этого выходить в продакшен. Где-то месяца через два.

Думаю, вы и сами представляете, как оно происходит в банках. Именно поэтому многие разработчики <sarcasm>так стремятся</sarcasm> в них работать.

Когда я прикоснулся в Газпромбанке к организации производства, то как раз застал несколько «ГОСТ-команд» с совершенно безнадёжным TTM и много аджайл-команд, бьющихся в истерике от требований.

Что хотелось поменять

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

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

Нам надо было построить свой, для начала хотя бы кривой и косой, но аджайл – для того, чтобы можно было заниматься нормальным производством кода. И помирить его с банковскими требованиями, то есть требованиями регуляторов и нормативами Центробанка, регламентирующего правила внутренних процессов и документы, которые при этом создаются. Если вы не в курсе, как устроена банковская разработка, рекомендую прочитать и содрогнуться. Как я уже говорил, уже было несколько аджайл-команд (делающих самые быстрые и при этом далёкие от ядра вещи вроде мобильного приложения), которые страдали, но пытались гибко разрабатывать.

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

Что начали менять

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

Выяснилось, что в процессе разработки есть около 30 разных ролей, причём из них около двадцати — это внешние подразделения, с которыми надо всё согласовать. Первое, что мы сделали, — это уменьшили количество этих ролей до 11. 

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

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

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

Параллельно не забываем про инструменты разработки и тестирования, планомерно приводим к единообразию. Команды не держат у себя под столом чего-то, что им захотелось. То же касается всяких практик, подходов, стандартов, разработки, тестирования — это всё централизованно. Также касательно документации. Это требование — обязательное для банковского производства, потому что не должно быть систем, которые не проверены (в том числе на предмет информационной безопасности) и не ложатся в нормативы. Единый инструментарий контролировать куда эффективнее, чем зоопарк отдельных решений для каждой команды. Команда не может для себя решить, что сегодня у них TeamCity, а завтра будет Jenkins, допустим. Нет. В банке есть стандарт. Есть TeamCity централизованный. Все на нём живут. Точно такая же история с процессами: они одинаковые, потому что они рождают в автоматическом режиме одинаковые документы, которые при проверке от ЦБ будут поднимать. Соответственно, при одинаковом наборе инструментов можно автоматизировать большую часть бюрократии. Точнее, автоматизировать-то можно при любом наборе инструментов, но при одинаковом для всего банка это можно более-менее нормально поддерживать.

У нас достаточно чётко зафиксирован в процессе набор документов, которые должны быть. Естественно, переходим в сторону автоматизации. Уходим от Word-овых и Exсel-евских артефактов, естественно, в Confluence. Что-то замещается задачами в Jira и в сопутствующих инструментах. Но тем не менее есть чётко определённый состав артефактов и набор опций для команд в этих артефактах, которые нужно делать. На каждом этапе есть определённый критерий перехода на следующий этап. Они контролируются.

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

Что получается

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

Многие вещи крайне очевидны, просты и прямо напрашиваются, поэтому их годами не делают. Те же банальные чек-листы по взаимодействию с подразделениями могут с ходу в разы снизить поток документов, с которыми к ним раньше ходили. Сидим и думаем: «А что мы раньше до этого не додумались? Ну, окей, хорошо хоть сейчас додумались». Есть какие-то простые вещи, которые вроде бы на поверхности. Или те же роли: по сути, ничего в самом процессе не меняется. Но людям воспринимать процесс с меньшим количеством сущностей проще. Начинают уже легче в нём ориентироваться, то есть меньше сюрпризов всплывает перед выкаткой на прод. 

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

Комментарии (13)


  1. RealSup
    20.10.2022 12:25

    Где вы начали писать про чек-листы, возник вопрос, как же они жили раньше без вас.

    И еще, если всё зарегламентировать, разделегировать, зафиксировать и автоматизировать, то какой же это agile получается?


    1. kirill_gilevich Автор
      20.10.2022 13:34
      +4

      Вот такой суровый банковский аджайл, с безопасниками и юристами.


    1. ggo
      21.10.2022 10:30
      +1

      Всегда с интересом читаю комментарии про некую свободу аджайла. Даже, наверно, некоторую анархию.

      Так-то аджайл (говорим аджайл, подразумеваем скрам, верно?) довольно строгий ко всем участникам процесс. DoR, DoD, спринт скоуп, демо, дейли и прочее - не дают загулять. Это в ватерфоле можно сидеть, и тебе за это ничего не будет. "Почему сидим? От аналитиков спеки ждем. Или тестировщикам релиз на тесты отдали, ждем фидбек." А в аджайле - вся команда в связке, все либо молодцы, либо лузеры. Если кто-то простаивает, значит планирование подвело, на ретро надо думать что с этим делать.

      И релизы катить раз в день, или раз в квартал. Это не про аджайл. А про процесс управления изменениями. Можно быть честным аджайл, и катиться раз в месяц. (коммерческие standalone продукты раз в день релизятся?) Можно ничего не знать про аджайл, и катиться в прод каждый час.


  1. Electrohedgehog
    20.10.2022 12:32
    +4

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

    Ага. Прямо драться готовы за место в банке!

    Это сарказм же был? Ну скажите что сарказм!


    1. kirill_gilevich Автор
      20.10.2022 13:43
      +2

      Простите, табличку сарказм забыли.


  1. elve
    20.10.2022 13:40
    +1

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


    1. kirill_gilevich Автор
      21.10.2022 10:45

      Я не говорю, что в чем-то виноват и agile. Речь о том, что есть определенные строгие рамки и контроли (как в части процесса, так и в части применяемых инженерных практик и инструментов), которые необходимо соблюсти и, в тоже время, дать возможность командам работать максимально автономно.


  1. alexhott
    20.10.2022 13:41
    +1

    Тут надо упомянуть что около 3-х лет назад центробанк занялся регулированием процесса разработки в банках. Да да вы не ослышались банки обязали при разработке своего внутреннего ПО соблюдать определенные правила. На тот момент я как раз был разработчиком в одном из банков. Работали мы как раз по одной из гибких методик типа скрама и доработки на бой отправляли через день.
    После внедрения новых правил внутренней разработки стали делать релиз раз в неделю. Не сразу все гладко пошло конечно, но за месяц организовались и порядка 20 команд дружно вливались, проходили релизный комитет, тесты, всякие согласования и в бой.
    Так что не так уж и страшно, а два три месяца - с этим надо что-то делать, где-то лишняя бюрократия.


    1. JuryPol
      20.10.2022 21:18

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

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


  1. AlexeyK77
    20.10.2022 13:55
    +2

    отличная живая статья, спасибо. Сам принадлежу к касте "суровых грустных мужиков", так что прямо в нерв. Грустные мы потому, что когда что-то случается в банке, то эджайлом перед следствием не прикроешься, а ответственность по закону может быть в лучшем случае административная, не считая моральных издержек на допросы и в некоторых случаях с перспективой ареста. Это жизнь.
    А подскажите, где можно почитать нормативку ЦБ РФ по разработке? (сам я не из РФ, так что интересен опыт).


    1. kirill_gilevich Автор
      21.10.2022 15:31

      Можно также почитать постановления ЦБ РФ 716п, 787П. Всё есть в открытом доступе, Госты никто не отменял.


  1. funca
    20.10.2022 17:16

    Такие принципы аджайла как «команда важнее инструментов», «продукт важнее документации» — лыжи. А мы играем в футбол. Поэтому в банке этого нет. Есть некоторая свобода внутри команд. Есть наши работы по упрощению процеса.

    Ага, понятно. Игра в футбол на короткие дистанции, мужчины, эстафета, по колено в снегу, коньковым ходом. Без лыж. ?!? Потому, что футбол.


  1. Apoheliy
    21.10.2022 20:17
    -1

    Живенько так всё в банках.

    Не понял как стыкуются adgile и согласования фич, следования регламентам и поставка готового решения. У вас там точно аджайл?

    Слегка похоже на V-образный жизненный цикл разработки.