Привет! Мы в QIWI любим проводить хакатоны. Во-первых, это просто интересно и помогает разгрузить голову. Во-вторых, зачастую помогает решить какие-то внутренние проблемы компании, от организации тех или иных процессов, которые давно хотелось починить.
В общем, хакатоны стали постоянной частью нашей рабочей жизни. В этом посте мы расскажем, как все начиналось, что из себя хакатоны представляют сейчас, и подсветим пару проектов.
Хакатонам в QIWI более 10 лет. Самый первый хакатон помнят только олды, которые давно в компании. Конечно, времена были разные, когда-то хакатонов проводили больше, а когда-то — меньше, но если говорить о каких-то усредненных числах, то в год мы делаем примерно два хакатона.
На каждый заявляется примерно 10-15 команд. Иногда доходило и до 20. Но одно дело — заявиться, другое — пройти отборочный этап и дойти до непосредственного участия.
Сами хакатоны у нас бывают двух видов:
продуктовые, когда надо сделать какие-то полезные фичи для продуктов;
технические, во время которых можно придумать, как улучшить тот или иной процесс в компании.
Что интересного было сделано в рамках хакатонов
Ребята уделяют много внимания работе с ботами — так появились комьюнити-бот и конструктор, позволяющий самому быстро создавать ботов-квизов, удобную карту офиса, где можно быстро найти место нужного коллеги, а также веб-генератор проектов.
Олег @gat0r Бурмистров написал крутого LLM-бота, который осуществлял поиск в Confluence. Это была ночь дичайшего R&D, на протяжении которой Олег умудрился найти пару полезных опенсорсных штук, дообучить модели, арендовать мощности сильных видеокарт, перевести всё это добро на русский... В общем, было круто. Как результат — возможность искать в конфе нужную тебе информацию, используя нормальный человеческий язык запросов. Кто давно пользуется Confluence, тот знает, каково иногда найти что-то на ресурсах компании. Особенно, когда компания большая и ведет конфу не первое десятилетие.
Во времена, когда популярность стали набирать голосовые помощники, на одном из хакатонов ребята захотели прикрутить Алису к нашему Кошельку. Так стало можно голосом переводить деньги — просто говоришь «Алиса, а переведи Евгению сто рублей», и все работало. Первый блин (на демо) вышел немного комковатым, потому что презентация продукта проходила в опенспейсе. Было много народу, местами шумновато, и Алиса время от времени подтупливала, не понимая, кого ей слушать.
Но не голосовыми помощниками едиными. Как-то давно один коллега принес на хакатон прикрученный к Кошельку «Жадный будильник».
Суть проекта была такова, что если человек не просыпается вовремя и не выключает будильник так, как надо, то с Кошелька списываются деньги и переводятся другу, чьи реквизиты указываются заранее. В целом это довольно популярная механика, потом стало появляться много подобных «штрафующих» приложений — например, для тех, кто хочет заставить себя начать бегать, для тех, кто забивает на спортивный график, и прочее.
Многие проекты были заточены под улучшение командной работы. Коллеги написали интеграцию с нашей 1С и парой внутренних систем и сделали дашборд, на котором для конкретной команды выводили удобный и наглядный график отпусков всех участников, учитывая возможные пересечения и прочее. Это очень помогало при планировании спринтов — сразу видно, кто когда идет в отпуск, а также в какой время можно самому взять несколько дней, выбрав максимально удобное окно и для себя, и для своего проекта.
Во время перехода на удаленку из-за пандемии некоторые стали скучать, что отвалилась возможность побродить по офису и лично потусить с коллегами во время обеденного перерыва или просто за чашкой кофе. Обычно в такие моменты можно было наладить пару горизонтальных связей (гусары, не время), да и вообще понять, чего там и как у соседних команд, как дела, какие проекты.
Поэтому придумали бот, который проводил рандомные match-и людей из разных команд и назначал им небольшие созвоны в Zoom.
А ещё есть birthday-бот — прикрепив его к чату команды, коллеги могли получать уведомления, когда у кого-то из чата день рождения.
Что пошло в прод
Некоторые текущие функции Кошелька, которые кажутся чем-то привычным и обыденным, появились в приложении именно благодаря хакатонам. Например, перевод денег по никнейму. Это полезно, если вдруг вы не хотите светить для перевода свой реальный номер телефона — стримеры, принимающие донаты, иногда указывают настоящий номер, и в итоге частенько получают гору спама в панамку. А никнейм работает как алиас реального номера — человек может послать деньги, указав лишь никнейм, а мы внутри уже соединим это с аккаунтом по номеру телефона.
Сюда же можно отнести и перевод по QR-коду. Делали во время старого хакатона чисто по фану, но тогда идея особо никому не пригодилась — активно развивались и входили в жизнь Apple Pay, Google Pay и прочее, так что QR тут сильно проигрывал в удобстве. Работал, но был непопулярен. Как вы понимаете, теперь стал популярнее.
В рамках хакатона была написана и реферальная программа для QIWI Master (возможность выпуска множества карт через API) — фича выстрелила на ура и продолжает приносить компании хорошие деньги.
А ещё было время, когда у нас было две отдельных дизайн-системы под веб: desktop и mobile. Не спрашивайте, почему, так исторически сложилось. Так что разработчикам приходилось поддерживать обе, а в случае создания чего-то — подключать обе. В рамках очередного хакатона был создан прототип новой, который напомнил о проблеме на Web. Это послужило быстрому старту разработки новой дизайн-системы, которая бы удобна всем. И да — она включала в себя решения с хакатона.
Хакатоны как передышка
Проведение хакатонов стало в QIWI не только доброй традицией и фабрикой внезапных и полезных продуктов для компании, но и отличной возможностью переключиться с работы на что-то еще. Это может быть какая-то фановая идея, которую было лень докручивать одному, или какой-то pet-project, который с помощью хакатона и единомышленников получилось масштабировать до чего-то более интересного.
Как вы относитесь к хакатонам внутри вашей компании? Было ли такое, что решение, вынесенное на хакатон, стало полезным продуктом в жизни ваших коллег?