Кейс Сбербанк Онлайн: как за сутки багатона мы исправили в 7 раз больше багов, чем обычно

Привет, меня зовут Игорь Дюканов, я работаю в Сбербанке в команде, которая занимается развитием Сбербанк Онлайн.

В закладки

В конце августа мы провели большой внутренний марафон по исправлению багов в нашем мобильном приложении — багатон.

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

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

Результаты оказались достойными: участники за сутки закрыли 286 багов, из которых были исправлены 182 бага, а остальные переведены в реджект по разным причинам (где-то уже изменился дизайн, где-то — функционал).

Предыстория

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

Организация

Мы хотели сделать именно общебанковский багатон, поэтому активно привлекали разработчиков не только из нашего подразделения, но и из других. А еще по максимуму собрали ребят из регионов – такие есть во многих командах.

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

На мероприятие выделили сутки: с 10.00 утра пятницы по 10.00 утра субботы. Решили так сделать из технических соображений. Нам важно было не просто пофиксить баги, а сделать это качественно. Мы долго прорабатывали, как будет выстроен процесс. Решили, что от нашей рабочей ветки отведем копию и на ней будем проводить багатон. А чтобы не тормозить day-by-day процессы, в субботу и до вечера понедельника тестировщики проведут сокращенное регрессионное тестирование (тестирование работоспособности приложения по основным пользовательским сценариям). По его итогам сможем оценить качество ветки и риски слияния обратно с основной рабочей веткой, которая за это время претерпит минимальные изменения.

Как мы сортировали баги

Отобранные нами мелкие баги можно разбить на более или менее значимые. К багатону мы отсортировали их по датам и по типам, разбили на три волны согласно внутренним приоритетам. Оценивать команды мы решили не багами, а баллами. Чем важнее исправление ошибки для работы приложения, тем больше за него начисляется баллов. Чтобы было интереснее решать задачи, внутри первой волны мы также сделали «искусственную» приоритизацию. Потому что если они все находятся на двух уровнях и за них начисляется мало очков, то какая тогда мотивация? Ребята просто бы хаотично брали те баги, которые более понятны. Нам же нужно было в первую очередь исправить определенные ошибки (регресса и обращений).

Всего получилось 490 багов. Мы в случайном порядке распределили их на пакеты по количеству потенциальных команд, в каждом из которых было по 20 дефектов. И присвоили им кодовые лейблы, чтобы с ходу не было понятно, где и что. Так мы получили пакеты с приоритетными для нас багами, выровненные по стоимости баллов и по платформам. В пакете можно было заработать одинаковое количество баллов как ребятам из платформы iOS, так и из Android.

Breaking Bugs

Одной из основных задач было совместить пользу и развлечение. Мы понимали, что нужна интересная визуальная концепция и стилистика в привязке к багфиксу. Зачастую с этого начинается восприятие любого мероприятия. Что делать? Bug - он же жук (англ.). А кто в обычной жизни приходит на помощь в борьбе с жуками? Тут сразу же возник образ дезинсектора… типа чувак в желтом комбинезоне и в респираторе травит баги. Где мы такое видели? В одном популярном криминальном сериале об учителе химии. ;) Решили замиксовать код, баги и сериал.

Как раз в начале подготовки багатона к нам присоединился дизайнер Савва. Ему удалось создать визуальный стиль с образами из сериала. Криминальные мотивы мы сразу же исключили. Среди элементов, которые нам нужно было сделать: логотип мероприятия, постер, мотивационный плакат, наклейки, фотозону, оформление для email-рассылки, футболки и браслеты.

Чтобы создать запоминающиеся образы, на наклейках, футболках и других материалах мы разместили специально отрисованных Саввой героев сериала и отвлеченных персонажей по нашей теме. Самым ярким получился образ по типу главного героя сериала. Изображение с ним также сопровождалось надписью «I am the one who knocks the bugs out». Еще мы нарисовали дэшборд для отслеживания прогресса команд и создали канал в мессенджере. Для канала были придуманы прикольные стикерпаки с символикой багатона.

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

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

Викторины придумали, чтобы участники могли размять мозги. Выбрали сервис, который позволяет, открыв страницу браузера прямо со смартфона, в режиме реального времени отвечать на вопросы. Сначала была пробная викторина – чтобы показать, как это работает, и заодно проверить, что все поняли только что рассказанные правила багатона. Вечером была большая викторина. Ее мы решили сделать из трех блоков: вопросы по Android, по iOS и по сериалу. Она длилась 20 минут. Однозначно помогал коллективный разум: далеко не все знали ответы на вопросы по «не своей» платформе и не все смотрели сериал.

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

Финал

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

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

Разумеется, мы не могли не отметить самых отличившихся сотрудников. Например, мы ввели номинацию «Самый результативный игрок», в которой победил участник, принесший больше всего баллов.

Ещё одна номинация – «Строгий учитель химии» по мотивам того же сериала. В ней мы отметили лучших ревьюеров. Ревьюить код необходимо, чтобы проверить его на предмет ошибок. Поэтому хотелось отметить тех, кто провел больше всех ревью запросов на изменение кода на своей платформе.

Последняя и, на мой взгляд, самая важная номинация была для тестировщиков. Они не участвовали в соревновательной части. Но от них многое зависело — они именно функционеры, ключевой механизм багатона. Их труд мы тоже отметили в нашем стиле: если разработчики образно у нас дезинсекторы, которые уничтожают баги, то тестировщики, которые в багах разбираются и проверяют на наличие, – образно энтомологи. И выбрали «Лучшего энтомолога».

Выводы

Итого почти половина из двухсот мобильных разработчиков приняла участие в багатоне. Когда у вас большая разработка, то не исключено, что не все знают друг друга в глаза. А еще есть коллеги, которые работают в других городах. Мы активно работали над тем, чтобы на багатон приехали ребята из региональных подразделений. Помимо вклада в чистоту кода Сбербанк Онлайн, разработчикам удалось классно провести время, пообщаться, обменяться полезным опытом как между командами, так и между платформами iOS и Android. Этот багатон помог нам сблизить ребят и даже познакомить между собой тех, кто работал над схожими задачами, но не знал о существовании друг друга.

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

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

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Игорь Дюканов", "author_type": "self", "tags": [], "comments": 9, "likes": 21, "favorites": 15, "is_advertisement": false, "subsite_label": "life", "id": 46586, "is_wide": false, "is_ugc": true, "date": "Fri, 28 Sep 2018 16:11:19 +0300" }
{ "id": 46586, "author_id": 205820, "diff_limit": 1000, "urls": {"diff":"\/comments\/46586\/get","add":"\/comments\/46586\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/46586"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199123, "possessions": [] }

9 комментариев 9 комм.

Популярные

По порядку

Написать комментарий...
3

Кейс Сбербанк Онлайн: как мы заставили разработчиков выйти на работу в ночь и в выходной

Ответить
0

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

Ответить
0

Я и говорю - молодцы. Подали переработки как "соревновательный дух" и "фановая атмосфера", и вот уже все вроде как добровольно :)

Ответить
1

Теперь осталось потратить пару-тройку дополнительных дней, чтобы подсчитать сколько за это время запилили новых.

Ответить
4

Через два дня после багатона закончился регресс, который выявил 8 багов на iOS и 7 багов на Android :)

Ответить
1

Уже пошутили про то что наконец-то убрали настоящий номер бывшего дизайнера с экрана про перевод денег?

Ответить
0

Самая ваша большая проблема в том, что 20 человек делает то, что может и должен делать один разраб. Вот и баги плодятся как таракашки у алкашей.

Ответить
0

В Сбербанке лечат баги.

Ответить
0

На android больше года спрашивает пароль на вход два раза за один логин на разных телефонах и версиях.

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Команда калифорнийского проекта
оказалась нейронной сетью
Подписаться на push-уведомления
{ "page_type": "default" }