Как работает команда бэкенда чат-ботов в «Тинькофф»
Денис Катаев разрабатывает бэкенд чат-ботов в екатеринбургском офисе «Тинькофф». За четыре года он стал лидом и собрал команду из 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 мая, в день основания офиса. На них тоже приглашаем московских коллег. Корпоративы за счет компании организует директор Центра Разработки в Екатеринбурге, собирает инициативную группу — ребята из моей команды тоже помогают. Часто выбираем места на природе: например, два года назад летний корпоратив был в Парке Победы.
Покупаем технику за Т-баллы и компенсируем обеды
Во всех Центрах Разработки, в том числе и в Екатеринбурге, нет бесплатной столовой, как в московском офисе на Водном стадионе. Но есть кэшбэк-компенсация: если оплачиваешь с карты банка еду или такси, то эти затраты компенсируют.
В компании действует программа T-баллов. Это внутренняя валюта, которую можно заработать за участие в разных активностях, например за доклады на конференциях. За 1,5—2 года выступлений я накопил на новый макбук — полностью оплатил его Т-баллами. Также есть программы для долгосрочной мотивации сотрудников.
Я стараюсь мотивировать людей не только активностями, встречами и деньгами, ведь мотивация складывается из нескольких уровней. Есть теория мотивации ERG. Первый уровень включает базовые потребности, второй — принадлежность к коллективу, к чему-то большему, а третий — это рост и развитие.
Руководитель управляет мотивацией сотрудника, чтобы ему хотелось хорошо выполнять свою работу. Для этого он выясняет, на каком уровне у человека сейчас мотивация. Когда человек заполняет эту ступень, он поднимается на следующую. Последняя ступень — это самовыражение, признание, профессиональный рост. Когда команда состоит из мотивированных людей, они начинают тянуться вверх и прокачивают друг друга. Поэтому мотивация очень важна, чтобы человек оставался в команде и развивался, а коллектив не скатывался в болото. Сильные ребята могут решать сложные задачи, а сложные задачи привлекают новых сильных ребят.