{"id":14262,"url":"\/distributions\/14262\/click?bit=1&hash=8ff33b918bfe3f5206b0198c93dd25bdafcdc76b2eaa61d9664863bd76247e56","title":"\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u0435 \u041c\u043e\u0441\u043a\u0432\u0435 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u043e 1,5 \u043c\u043b\u043d \u0440\u0443\u0431\u043b\u0435\u0439","buttonText":"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435","imageUuid":"726c984a-5b07-5c75-81f7-6664571134e6"}

Готовимся к техническому собеседованию при помощи чат-бота: проект студентов SkillFactory

Если вы загуглите «как пройти техническое собеседование», найдёте статьи, инструкции, кейсы, а также анекдоты и мемы. И вряд ли отыщете «волшебную таблетку», которая поможет вам и даст все ответы. Мы тоже не нашли — и сделали чат-бота для подготовки к техническому собеседованию. Рассказываем, кто и как его создавал и что получилось в итоге.

Как появилась идея чат-бота

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

Кристина Савченко:
Создать такой чат-бот предложила старшая методистка направления Coding в SkillFactory

«Пройти техническое собеседование — большая боль всех джунов. Летом 2020 года мы обсуждали с нашим Карьерным центром, какие сложности возникают у студентов и выпускников. Пришли к тому, что нужен инструмент, который поможет им понять уровень своей подготовки и натренирует проходить собеседования. Коллегам идея понравилась, и мы сделали удачный проект. В нём я выступила заказчиком, а наши студенты — исполнителями»

Команда проекта — студенты разных курсов SkillFactory и ProductLive. Это тим- и техлид Никита Чуриков, продакт-менеджер Алексей Деменюк, разработчики Роман Заболотин и Виктория Шепард, а также организатор-заказчик проекта — сама Кристина Савченко.

Как мы это делали — студенты о проекте

Почему вы взялись за проект?

Роман Заболотин:

«Мы все хотели получить новый опыт. Никита никогда не был тимлидом, Вика мечтала о бэкенд-проекте для портфолио, Лёша тоже был заинтересован получить опыта по специальности. Я же ещё ни разу не работал с GitHub и впервые узнал на этом проекте, что такое pull request и как его сделать. Было очень интересно»

На что вы ориентировались на старте?

Алексей Деменюк:

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

С чего начинали работу и как определили сроки?

Алексей Деменюк:

«Когда Никита подобрал команду, я сделал первоначальный план в Miro. Сначала прописал user story чат-бота, затем создал документ, который мы называем one-pager, потому что он умещается на одной страничке и содержит в себе цели проекта. В нём мы накидали проблемы, требующие решения, рабочий план и предполагаемый результат. Сначала мы планировали получить MVP за 1–2 месяца, но в итоге уложились к концу мая. Весь процесс занял 8 месяцев»

Как была организована система разработки?

Роман Заболотин:

«Для управления зависимостями мы использовали Poetry. Он формирует очень компактный файл и, в отличие от Pip, вносит только зависимости первого порядка, а остальные — рассчитывает при установке. Ещё суперштукой было то, что Никита сразу настроил нам проект сflake8, isort, flake8 и mypy. Это позволило писать код по единым правилам. Добавили precommit, который автоматически запускал проверки и исправления формата перед коммитом. Такие же проверки мы настроили на сервере в GitHub actions»

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

Никита Чуриков:

«CJM, созданная Лёшей на Miro оказалась очень крутой! Первую неделю я разбивал эту карту и one-pager на конкретные задачи, выстраивал их в таск-менеджере ClickUp и назначал ответственных. То есть из общего описания мне нужно было создать ТЗ для разработчиков, например, собрать базу данных или задать определенный функционал»

Экран с просьбой описать, что не так с вопросом — почему пользователь нажал кнопку «Не понял вопрос»
Задача, которая блокировала предыдущую. Тут есть ссылка на lucidchart, где была схема базы данных, за актуальностью которой я следил.
Так выглядел граф цели «сделать экран с обратной связью»
Это доска с задачами

Вы не были знакомы до проекта — было комфортно работать в удаленном режиме?

Виктория Шепард:

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

Что получилось на выходе

Получился интерактивный тренажер для Android-разработчиков. Ищите его в Телеграме — @sftrainbot.

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

Вариант с голосовыми сообщениями хорош тем, что можно потренироваться говорить вслух и формулировать — чётко и ёмко, как это делаем на реальном собеседовании.

Кристина Савченко:

«Чтобы наполнить базу вопросов, мы подключили команду из семи человек: методиста, авторов и экспертов курса «Android-разработчик». Они на основе опыта выделили сложные темы, а затем сформулировали вопросы с реальных технических собеседований крупных компаний.

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

Сейчас это MVP. Технологический стек: Python, aiogram, PostgreSQL. Файлы сохраняли в БД ссылками из Telegram, Digital ocean. После каждой итерации бота тестировали пользователи. Нужно было внести корректировки в интерфейс, контент и логику бота и устранить баги.

Код проекта открыт и опубликован на GitHub. Схему БД рисовали на диаграмме — получилось 9 таблиц.

В боте используется система FSM (finite state machine) от aiogram. Она сохраняет текущее состояние в диалоге. Это позволяет строить сложные коммуникации с пользователем в зависимости от того, на какой стадии он находится. Например, вводит ответ на вопрос или изучает эталонный ответ.

Чтобы это состояние не пропадало при перезапуске сервера, мы подключили Redis как базу данных состояний. Обёртка приложений сделана в Docker, чтобы удобнее было разворачивать проект на сервере.

Будем ли развивать бот дальше

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

Студенты собираются пойти ещё дальше — разработать tone of voice и оформить «личность» чат-бота, а также создать что-то вроде нейросети, которая будет определять качество ответа пользователя. Для этого нужно будет привлечь к проекту дополнительных специалистов (копирайтера, дизайнера, data science-разработчика).

Что в итоге

Сегодня разработчику чат-ботов мало уметь писать код или пользоваться конструктором. Профессионал в этой сфере должен:

  • понимать задачи бизнеса клиента и учитывать его потребности,

  • определять целевую аудиторию продукта,
  • формулировать задачи,

  • разрабатывать и тестировать MVP на жизнеспособность,
  • создать в итоге рабочий чат-бот.

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

0
Комментарии
-3 комментариев
Раскрывать всегда