Начну с сильного замечания, этот MVP - провал! Так что это не история успеха. Я хочу написать о том, как быстро создать MVP, как сократить количество функций до минимума, но при этом охватить основную цель продукта.

Продукт

Эта идея была у меня в голове с давних пор.

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

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

Я решил попробовать, работает ли текстовая версия.

Процесс MVP

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

С отправной точки

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

Будучи разработчиком на Python в течение долгого времени, я только что проверил, какой язык программирования самый быстрый, с помощью которого я могу построить этот проект. Для фронтального приложения, поскольку нет другого варианта, кроме Javascript, я решил использовать то же самое даже для бэкэнда, поскольку у Javascript есть хорошие библиотеки для работы с сокетами. Еще одна причина, по которой я выбрал Javascript, заключается в том, что я работал над ним долгое время, поэтому мне не нужно тратить время на его изучение.

Сначала я подумал, стоит ли для начала создать репозиторий git. Я решил не делать этого, потому что сейчас в этом нет необходимости. Нет другого человека, который бы над этим работал, и я не решил, где я буду размещать его, как развернуть и т. Д. Так что запуск репозитория только увеличил бы трение.

Я просто создал локальный проект и начал над ним работать. Сначала я начал внедрять бэкэнд. Итак, я какое-то время играл с сокетами, использовал надстройку firefox для взаимодействия с веб-сокетами, которые реализованы в бэкэнде. Я решил не использовать навороченные инструменты типа socket.io. Причина снова та же

сейчас это просто не нужно

Если я использую socket.io, мне придется потратить время на понимание их функций, решить, как их использовать, и я почти уверен, что это будет не так просто, как использование собственных сокетов на Javascript. Через пару часов мой бэкэнд был готов принимать подключения к сокетам и отправлять сообщения!

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

  1. Люди, которые организуют дискуссионную комнату
  2. Отправить запрос на присоединение к другой комнате
  3. Начать обсуждение
  4. Закройте комнату через 30 минут

Я думал, что это основные функции, необходимые для воплощения идеи, которую я имею в виду. Так что я перестал добавлять что-то еще.

Следующее, что нужно реализовать, - это страница внешнего интерфейса, с которой люди могут выполнять все указанные выше действия. Я был сбит с толку, использовать ли простой javascript, старый школьный jquery или необычный React / Angular / Vue. Я понял, что простой javascript или jquery теряют реактивный характер. Это означает, что я буду писать много кода, чтобы синхронизировать представление и логику, чего я не хотел делать и тратить время без надобности. Angular мне совсем не подходит, так как у меня очень мало опыта с ним. Остался React и Vue.

У меня есть приличный опыт работы с обеими этими технологиями, но я недавно работал над Vue, и он мне всегда нравился по сравнению с React из-за его простоты. Кроме того, в последнее время я не в курсе React, поэтому оставил вариант с Vue. Меньше стресса, когда впереди только один путь!

Я быстро добавил

  1. Несколько карточек, обозначающих комнаты
  2. Кнопка «Запрос» в комнате, чтобы люди могли отправить запрос на присоединение.
  3. Кнопка «Организатор» в верхней части страницы, с помощью которой люди могут ввести тему и начать обсуждение.

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

  1. Название обсуждения
  2. Имя хоста
  3. Участники и запросы с кнопкой одобрения
  4. Фактическая лента обсуждения, которая выглядит как экран чата в WhatsApp
  5. Текстовое поле, в котором люди могут вводить и отправлять сообщения.

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

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

Я жестко запрограммировал несколько имен пользователей и назначил несколько случайных паролей в бэкэнде.

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

Решил вообще их не хранить! Просто храни их в памяти

Обратной стороной является то, что вся информация будет потеряна, если я перезапущу сервер, а у процесса очень ограниченная память для хранения. Оба ограничения меня устраивали с самого начала. Таким образом удалось сэкономить много времени на разработке схем данных, хранилища и всех связанных с этим вопросов.

Наконец, я создал личный репозиторий git и разместил код, чтобы разместить его на машине, на которой я размещаю свой личный блог. Для тестирования было нормально. Я устроил, получил URL-адрес, которым хочу поделиться.

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

Резюме

В этом посте уже столько времени, чтобы обсуждать фазу 2 MVP 😀 Я напишу еще один пост, в котором я расскажу, какие недостающие функции, почему мне пришлось создать приложение для Android, как я это сделал быстро, как это не удалось и что сделали Я в конечном итоге узнаю

А пока прилагаю несколько скриншотов, чтобы вы могли понять, что я на самом деле построил. Я назвал его "Discuss Party"

Недавно я начал активно работать в твиттере, где делюсь своим опытом работы с технологиями и строительными материалами. Вы можете подписаться на меня здесь https://twitter.com/pramodk73