Как работает команда бэкенда чат-ботов в «Тинькофф»

Денис Катаев разрабатывает бэкенд чат-ботов в екатеринбургском офисе «Тинькофф». За четыре года он стал лидом и собрал команду из 15 человек.

Денис рассказал, как устроены рабочие процессы и профессиональное развитие в «Тинькофф», насколько команда свободна в принятии решений, и обязательно ли переезжать в Москву, чтобы работать IT-специалистом.

Работаем распределенно из разных городов

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

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

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

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

Разрабатываем чат-ботов и входим в AI-центр

Какие задачи решает команда. Мы создаем на Python бота, который помогает «Тинькофф» поддерживать сервис на высоком уровне. Количество клиентов постоянно растет, но нанимать пропорциональное количество операторов, которые будут их обслуживать, — это дорого и неэффективно. А бот хорошо масштабируется, его развитие только улучшается со временем. Это важное направление для бизнеса, поскольку экономит ресурсы: бот отвечает на простые вопросы клиентов, а операторы подключаются уже для решения более сложных и нестандартных ситуаций.

Почему мы на пике инноваций. Наша команда состоит в AI-центре «Тинькофф», где сконцентрированы все проекты по искусственному интеллекту. Мы много взаимодействуем с командой обработки естественного языка и Machine learning, несмотря на то, что отвечаем за бэкенд.

Наша екатеринбургская команда за решением задач

Ставим цели всей команде, а не отдельным людям

Цели. Рабочие цели мы ставим только команде, а не каждому отдельному сотруднику — у нас важен общий результат. Ставим их по методике OKR, Objectives and Key Results — цели и ключевые результаты, которая отлично работает в командах, построенных на прозрачности и доверии. Обычно в этой системе целеполагания выделяют Objectives, трудно измеримые амбициозные цели, и Key Results — ключевые результаты, по которым измеряют цели и понимают, насколько их достигли.

У меня не совсем классическое понимание методики. Я разделил OKR на две части: список задач, то есть роадмап на квартал, и Key Results. Так удобнее, потому что у нас есть два вида рабочих задач.

Первые исходят от потребностей бизнеса, и всем понятно, как их решать. Мы делаем их в рамках роадмапа на квартал. Их результат — «сделана задача или не сделана».

А вторые, Key Results, — это то, что бизнес не знает, как решить. Это цели не на рост бизнес-показателей, а, например, на улучшение какой-то функции. Для таких задач выбирается метрика, и мы сами ищем любое новое решение.

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

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

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

Время. Каждый в команде работает по своему локальному времени, даже если оно не совпадает с московским. Главное — выполнять свои задачи. Продуктовая часть команды знает, что у нас +2 часа, а мы — что у Вовы из Томска еще +2. Коллеги из Москвы учитывают это, когда планируют встречи, и накладок не бывает.

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

Если у коллеги что-то идет не так с задачей, то мы решаем проблемы сообща

Развиваем осознанную компетентность

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

Для меня важно, чтобы человек перешел от стадии неосознанной некомпетентности в стадию осознанной некомпетентности как минимум. А как максимум — в стадию осознанной компетентности. Если я вижу, он плавает в какой-то теме, то сам объясняю что-то, подсказываю, где можно посмотреть и что почитать об этом.

Задачи на рост и развитие часто перекрывает текущая работа. Если в начале квартала поставить разработчику задачу на развитие вроде «начать разбираться в Kafka», то в конце может оказаться, что ему не выпали задачи, где он мог бы изучить Kafka. Поэтому я в целом описываю направление, куда человеку нужно самостоятельно двигаться, и стараюсь давать ему задачи, которые разовьют эту сферу.

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

Обычно я вижу, что коллеге интересно работать с людьми, например вести стажеров. Тогда предлагаю ему их менторить, и если у него получается, то он может попробовать себя в роли тимлида. Я рассказываю, какие новые обязанности у него появятся, как проводить one-to-one встречи. Дальше уже идет ежедневная работа, передача опыта.

Встречаемся вне офиса и ездим на митапы

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

Конференции и митапы. Также сотрудники из разных городов встречаются на конференциях. Например, в сентябре мы ездили на PyCon: от «Тинькофф» было шесть докладчиков, из них четыре — члены моей команды. Из-за пандемии конференций долгое время не было, но сейчас они возобновились. По Python ежегодно проходит два крупных события, на которых мы выступаем.

Еще участвуем в митапах — в нашем офисе и других городах. Осенью мы ездили в Челябинск на событие по QA, а в декабре в Екатеринбурге прошел митап по AI. Еще наш Центр Разработки организует такие события онлайн. Например, в прошлом месяце была трансляция по Scala на Казань и Екатеринбург.

Корпоративы. Дважды в год проводим корпоративы: зимний на Новый год и летний — 25 мая, в день основания офиса. На них тоже приглашаем московских коллег. Корпоративы за счет компании организует директор Центра Разработки в Екатеринбурге, собирает инициативную группу — ребята из моей команды тоже помогают. Часто выбираем места на природе: например, два года назад летний корпоратив был в Парке Победы.

Команда «Тинькофф» на конференции PyCon Russia 2021
Один из наших летних корпоративов
Наши совместные вылазки на природу — фото из личного архива

Покупаем технику за Т-баллы и компенсируем обеды

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

В компании действует программа T-баллов. Это внутренняя валюта, которую можно заработать за участие в разных активностях, например за доклады на конференциях. За 1,5—2 года выступлений я накопил на новый макбук — полностью оплатил его Т-баллами. Также есть программы для долгосрочной мотивации сотрудников.

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

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

0
37 комментариев
Написать комментарий...
Иван Забулдыгин

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

Ответить
Развернуть ветку
Oblachnii boy

воспринимай бота как поиск, это сильно упростит жизнь
просто представь, что к поисковой строке прикрутили подобие ии и спустили строку ввода вниз экрана

сам по началу плевался, но на примере обычных юзеров понимаю, что это скорей нужная штука, просто не всем. а кому не подходит - учим мантру «переведи на оператора», таковы новые реалии

Ответить
Развернуть ветку
Иван Забулдыгин

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

Ответить
Развернуть ветку
Oblachnii boy

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

Ответить
Развернуть ветку
Антон Смирнов

Вот когда компания принципиально не хочет заниматься сервисом для своих клиентов - вот тогда и начинаются всякие "роботы". Удивляет, что для впаривания этого идиотского решения пишутся подобные хвалебные статьи, а классненькие "погромисты" в рубашечках рисуют крутые графики - сколько их поделка обработала входящих сообщений, и сколько человекоденег сэкономлено. А ведь можно ещё и рассказы выдачу кредита роботом допилить.. уууухх как круто будет и сколько денег заработаем.
Ваши роботы - серьезный вред имиджу, а также значительный ущерб качеству сервиса компании. Почему? Потому, что вы ставите на первую линию неквалифицированное "существо". Потому что его приходится "скипать", и тратить на это время. Время не вашего специалиста, а своё, личное. Время - деньги. Сервис потому и страдает, что решение простых вопросов превращается в какую-то пытку, где надо потратить 5-10-20 минут времени, чтобы попасть на оператора, который частенько и сам-то не в состоянии думать дальше чем по написанной бумажке.
Ну и психологический момент. Ты обращаясь в поддержку, ожидаешь решения своей проблемы, а не диалога с тупой железкой.
Обращение клиента - это не только просто "факт обращения". Это может быть конфликтная ситуация, где надо человека успокоить. Это может быть ситуация, где иногда надо принять решение, связавшись с несколькими отделами. А вы ставите бота. Как будто в поддержку только обращаются олени, которые не в состоянии узнать баланс своего телефона, или сколько денег у них на карте. Но вот при этом на тех, кому реально нужна помощь в тех сервисах, которые вы же и создаете - вам наплевать.
Искренне желаю, тем "эффективным" менеджерам, которые вводят подобное в своих компаниях, до конца своей жизни общаться с роботами. Чтобы, попав в ДТП, вы, умирая, просили 15 минут робота на питоне вызвать вам скорую, а к вам в итоге приехала пожарка.

Ответить
Развернуть ветку
Stavr Ognev

Забавный момент, что все эти тупейшие скриптовые чатботы в ML вписывают (а в заголовки и вовсе громкие ИИ/AI вписывают), а прикрутить банальный счётчик "попаданий" ответов бота на клиента, чтобы после пары-тройки негативных опытов подряд клиента вернули в позитивное "живой чатбот онли" русло, устранив этап "морозить на идиотизме того, кому это не пригодилось ни разу" - это слишком сложно.
Либо лояльность клиента имеет нулевую цену для банка, либо сценарий не укладывается в ложе восприятия тимлида/менеджера проекта. А если второе, тогда вопрос, про какое ML они все рассказывают, если в обычное L уровня собаки Павлова сами не способны?..

Ответить
Развернуть ветку
Антон Смирнов

Да нет никакой сложности добавить в ivr - "Позвать помощника - нажмите 1", "соединить с оператором, нажмите 2". Вот уже не первый год их везде пихают, но я ни разу не смог ими воспользоваться, просто потому что понимаю, что никакой бот не поможет тебе в ситуации, когда твою карту сожрал банкомат и не отдает (открытие). Бот не поможет в ситуации, которую, ты не можешь решить самостоятельно в личном кабинете, или ошибок в нем (корп. мегафон). Боту бесполезно сообщать об укуренном водителе озона, который летит тебе на 100км/ч в бочину и никак не реагирует. Это даже, как выяснилось, человеку проблематично решить, и подобное просто спускается с рук. Бот, не может ответить на вопрос, почему вдруг БИК организации не соответствует названию банка в выставленном счете (озон, кстати живые человеки это тоже не смогли решить).
Но каждый раз, сталкиваясь казалось бы с не очень сложными ситуациями, которые нормальный сотрудник, с головой на плечах быстро решит, ты вынужден по 5-10 раз долдонить скрипту "позови оператора!", "соедини с оператором", "соедини с оператором б***ь!", "оператора позови!!!". Вот просто зачем??? С таким же успехом можно поставить проигрывание wav с имитацией робота в линию, чтобы люди просто рассказывали о своих проблемах в микрофон. А после 5 мин подобного треша ("я не понял вашей команды, вы хотели узнать о наших кредитных предложениях? Просто скажите "хочу взять кредит"), просто кидать уже на оператора тех пациентов, под которыми ещё стул не расплавился, или говорить "перезвоните позже" и вешать трубку. Если поциент упорен, то соединять его на 3й звонок. А чтобы не догадался, то записать 2-3 скрипта с разным контентом.
Они тут про рашн питон машын лёрнинг рассказывают.. Зачем? Когда за 15 минут, пока пьешь бутылку пива, можно сделать отличного голосового чат бота с эффективностью, не хуже их.

Ответить
Развернуть ветку
Тинькофф
Автор

У нас есть механизм, который умеет сам отключать робота клиентам.

Ответить
Развернуть ветку
Иван Забулдыгин

Единственное что - "погромисты" в рубашечках никогда не рисуют крутые графики и не принимают решения о внедрении такого мусора (ну почти никогда). Программисты это по большей части исполнители и вот они (мы) зачастую с пеной у рта вынуждены бороться с очередной идеей руководства внедрить какую нибудь гениальную идею типо проверки геолокации каждые 10 минут, ради подсказки которая пользователю будет не нужна, но сожрет батарею и заставит девайс лагать. Всегда виноваты руководители, project ownerы, менеджеры)

Ответить
Развернуть ветку
Антон Смирнов

Ну конечно да, в любом проекте, есть конечное ответственное лицо, которое ставит на нем свою визу. Но, если тебе дадут ствол и скажут - иди застрели человека, должен ли ты это делать? Бороться надо и необходимо, и с пеной у рта :)

Ответить
Развернуть ветку
Иван Забулдыгин

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

Ответить
Развернуть ветку
Dimitry

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

Важно понимать, что отказ от ботов приведет к старой ситуации, когда ждешь оператора по часу. Я выберу пару минут с ботом и решение моей, возможно, тривиальной проблемы, чем час ожидания оператора. 🤷‍♂️

Ответить
Развернуть ветку
Иван Забулдыгин

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

Ответить
Развернуть ветку
Игорь Петрашевский

И "на кухне" вместо денег - фантики.
Кстати, чатботы у вас дрянь. Будто делало не 15 специалистов, а 4 чела после курсов иныоцыган. Сделайте уже сразу кнопку "позвать кожаный мешок"

Ответить
Развернуть ветку
Тинькофф
Автор

Вы можете сказать "позвать оператора" и тогда вас бот переключит на специалиста.

Ответить
Развернуть ветку
Игорь Петрашевский

кнопки в тональном режиме больше не в моде?

Ответить
Развернуть ветку
Тинькофф
Автор

Мы обязательно оставим обратную связь насчет этого. Скажите, почему у вас сложилось такое мнение про бота? Расскажите подробности.

Ответить
Развернуть ветку
Игорь Петрашевский

40 минут головомойки. Думаю, вам и так все известно, если смотрите статистику и читаете логи хоть иногда

Ответить
Развернуть ветку
Тинькофф
Автор

Напишите ваши ФИО и дату рождения в ЛС со ссылкой на этот коммент, а также подробности по дате и времени, а мы все комплексно посмотрим.

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Игорь Петрашевский

иначе KPI не посчитать. И история нужна чтобы натаскивать нейронку. Автору ответили то, что надо было ответить по скриптам.

Ответить
Развернуть ветку
Shakh Solt

Автор делится, как команда перформит, работая из трех городов и немного раскрывает, как у них что устроено.
Комментаторы докапываются до "происхождения" автора. Кам он!

Ответить
Развернуть ветку
Spam Smith

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

Ответить
Развернуть ветку
Тинькофф
Автор

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

Ответить
Развернуть ветку
Harry Callahan

На фото "Команда Тинькофф на конференции PyCon Russia 2021" парень в центре зигу кидает?

Ответить
Развернуть ветку
GS

Ага, и соседство подходящее

Ответить
Развернуть ветку
Сан Саныч

Извините за длительное ожидание. Я переключу чат-бота на другого чат-бота, чтобы вы и с ним вопрос не решили, а были переключены на следующего чат-бота.

Ответить
Развернуть ветку
UNISON

Что я тут делаю боже мой...

Ответить
Развернуть ветку
UNISON

Вчера я скинул данные клиентов левой конторе а она все еще не перевила мне деньги...

Ответить
Развернуть ветку
UNISON

А что если меня обманули и руководство меня уже спалило и не даст премию в этом месяце

Ответить
Развернуть ветку
GS

Напомнил персонажа из Silicon Valley, простите

Ответить
Развернуть ветку
Сергей Веселый
В компании действует программа T-баллов. Это внутренняя валюта, которую можно заработать за участие в разных активностях, например за доклады на конференциях. За 1,5—2 года выступлений я накопил на новый макбук — полностью оплатил его Т-баллами. Также есть программы для долгосрочной мотивации сотрудников.

Акции TCS не дают бонусом к зарплате? Ну, чтобы не копить два года на новый макбук.

Ответить
Развернуть ветку
злая няшка

Через жопу. Это если кратко и культурно.

Ответить
Развернуть ветку
Тинькофф
Автор

Почему у вас сложилось такое мнение? Поделитесь, пожалуйста, информацией нам в личные сообщения.

Ответить
Развернуть ветку
Victor Axonoff

Встречи-встречи-встречи, когда это закончится!

Ответить
Развернуть ветку
kot bogema

Команда мечты, я понял)

Ответить
Развернуть ветку
UNISON

Rleodo

Ответить
Развернуть ветку
Юлия Носова

Ответьте на вопрос сколько по времени примерно занимает разработка чат-бота и количество человек в команде?

Ответить
Развернуть ветку
34 комментария
Раскрывать всегда