Перед тем как выпускать минимальный продукт, нужно проверить его востребованность на рынке. Как правило, наши представления о рынке не соответствуют реальности, отчего очень легко попасть в ситуацию, когда бюджет реализован, какой-то минимальный продукт готов, а трафик отсутствует. Для таких случаев и существует CustDev.
CustDev (далее — кастдев) — сокр. от англ. Customer Development — проверка на востребованность.
Итак, как же появилась идея реализовать телеграм бота для проведения простых опросов и как был реализован MVP (который, кстати, перед разработкой не проверялся).
Идея
Небольшая предыстория, меня зовут Михаил и я год учился на социологии. Год изучал методологии опросов, практиковался в “полях” и писал курсовую на основе социологических иследованний.
Во время моей учебы я периодически сталкивался с опросами студентов старших курсов, которые проводили полноценные социологические исследования методом анкетирования. Конкретно, онлайн-опрос. Каждое их сообщение выглядело примерно следующим образом:
Добрый день, меня зовут <имя> я студент/ка <курс, кафедра> пройдите опрос посвященный <тема опроса> :
<ссылка на опрос в гугл формах или другом конструкторе опросов>
Во всех этих опросах я участвовал, но почти всегда психовал от того, как их долго и муторно проходить. Чуть позже я решил что так быть не должно и решил сесть за этот проект.
Бот
И тут в какой-то момент мне в голову пришла идея. А что если сделать опросы быстрой и удобной операцией, которую можно проходить больше чем один раз. То есть некий Тиндер от мира социологии.
Так и появился он, Survey Compact (предварительное название, которое в целом отражает суть проекта).
Первая-версия
Разработку я начал с того, что попросил своих знакомых с кафедры социологии разработать анкету, чтобы потом перенести ее в бота. Я думал это было просто, поэтому как только анкета была у меня на руках я приступил к работе.
Для начала я нашел какой-то стандартный шаблон структуры для телеграм бота и перенес его в свой проект (спойлер: я от него отказался)
Вообще этот шаблон был почти полностью скопирован, в т.ч. с файлами и скриптами, но немного переделан.
«Внезапный» инсайт
Просто копировать проект и скрипты оттуда, а потом изменять под себя на начальном этапе развития кодера — плохой экспириенс. В какой-то момент я, конечно, понимал как работает код, но спутся какое-то время запутался в своем и чужом функционале
│ .gitignore
│ bot.py
│ requierments.txt
│
├───app
│ │ config_reader.py
│ │ dbworker.py
│ │ __init__.py
│ │
│ ├───handlers
│ │ │ common.py
│ │ │ p-ker-new.py
│ │ │ partyshaker.py
│ │ │ __init__.py
│ │ │
│ │ └───__pycache__
│ │ common.cpython-310.pyc
│ │ partyshaker.cpython-310.pyc
│ │ __init__.cpython-310.pyc
│ │
│ └───__pycache__
│ config_reader.cpython-310.pyc
│ dbworker.cpython-310.pyc
│ __init__.cpython-310.pyc
│
└───config
bot.ini
структура проекта в первой версии
Озарение
В какой-то момент, когда у меня совсем не ладилось с первой версией, я решил пересмотреть и структуру опроса и способ программирования. Если первая версия была с обычными кнопками, в базу данных она передавала длинные ответы вроде “Затрудняюсь ответить” то вторую я решил делать по-другому.
Вторая-версия
Вторая версия получилась более компактной, лаконичной и логичной, что самое главное. Вот несколько нововведений, которые я добавил:
Я сократил количество вопросов с ~10 до 5
Сделал вместо клавиатурных кнопок инлайн.
Сделал изменение фрейма с вопросом, чтобы интерфейс телеграма не скакал туда сюда удаляя и отправляя вопрос.
Настроил коллбэк от кнопок согласно ответу. Ответы, кстати, стали стандартизированными, то есть они описывались листом “точно да”, “скорее да”, “скорее нет”, “точно нет”, что позволило сделать нумерацию от 1 до 4 где 0 — затрудняюсь ответить, а 1 — точно да.
Таким образом опрос стал очень простым, быстрым.
Что дальше
Дальше дистрибьюция. Я разослал этот опрос друзьям, знакомым, родственникам, они разослали точно также. В итоге у меня получилось собрать 70 обезличенных ответов, которые помогли решить задачу для нашего небольшого проекта (собственно для чего этот бот и разрабатывался).
Код бота доступен по ссылке: mkhivchk/polling_bot: The bot is designed to conduct quick surveys and custdev research. (github.com)
Комментарии (5)
slavanikolsky
31.05.2023 12:30Переслал статью сыну. Он закончил магистратуру по социологии.
Его комментарий:
Кого опросили в итоге — непонятно.
-
С такими данными социологи не работают, оправляют в выбраковку.
А вот сама идея использовать бот для опросов интересная.
Jveninks
31.05.2023 12:30В коде нет проверок кнопок. Если пользователь быстро нажмёт 2 раза на кнопку, то отправится 2 callback_query из-за чего можно перескочить через вопрос
himch
Каким образом в вы добились обезличенности?
Вы же получаете telegram_id и имя отвечающего.
DDDDImoN
Да просто никому их не говорит.
Хотя записи в БД ведёт, судя по коду :)
PixelSun
Думаю, обезличенность не в том, что нельзя посмотреть данные аккаунта в телеге, а в том, что сложно "прикрутить" эти данные к реальным людям. Так как и id, и имя заполняются пользователем.