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

Денис Катаев разрабатывает бэкенд чат-ботов в екатеринбургском офисе «Тинькофф». За четыре года он стал лидом и собрал команду из 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
Команда «Тинькофф» на конференции PyCon Russia 2021
Один из наших летних корпоративов
Один из наших летних корпоративов
Наши совместные вылазки на природу — фото из личного архива
Наши совместные вылазки на природу — фото из личного архива

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

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

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

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

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

3030
37 комментариев

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

36

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

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

4

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

8

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

3

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

2

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

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

1

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

6