Перейти к содержимому

Терапия через код: как я написал два стартапа для 0 пользователей

Константин Потапов
10 мин

Честная история про самообман разработчика: 32,600 строк кода, 196 тестов, 11 завершённых этапов MVP, CI/CD, мониторинг — и ноль реальных пользователей. Оказывается, я писал не для бизнеса, а для самоутверждения.

Идея: сервис бронирования для экспертов

Всё началось с простой мысли — сделать платформу для записи к экспертам. Что-то вроде Calendly, но "адаптированное под российский рынок" (спойлер: я не знал, что это значит). Юристы, психологи, консультанты, коучи. Люди выставляют слоты, клиенты бронируют — казалось очевидным.

Назвал проект expert-booking.ru. Выбрал TypeScript full-stack — знакомый стек, где я мог двигаться быстро. Насколько быстро — станет ясно позже, когда я обнаружу, что пролетел мимо цели на скорости звука.

Стек expert-booking.ru: Node.js + Express, React 18 + Vite, PostgreSQL + Knex.js, TypeScript, Docker, YooKassa (заглушка), Feature-Sliced Design на фронте.

Первая версия: идеальный код для несуществующих пользователей

Погрузился в разработку с энтузиазмом хирурга, готовящегося к сложнейшей операции. Код рос. Функционал расширялся. Архитектура совершенствовалась. В итоге получилась полноценная платформа для людей, которых я ещё не встретил:

Backend (~1,600 строк кода):

  • 14 миграций базы данных (users, experts, bookings, payments, reviews, support tickets)
  • 12 модулей API (auth, bookings, payments, admin, analytics, UTM tracking)
  • Заглушка для интеграции с YooKassa
  • JWT-авторизация с ролями (client/expert/admin)

Frontend (~31,000 строк кода):

  • Полнофункциональная админка с аналитикой
  • Дашборд для экспертов с календарём и статистикой
  • Система бронирований с подтверждением оплаты
  • Feature-Sliced Design с ESLint-валидацией архитектуры
  • Адаптивный интерфейс на Tailwind CSS

Инфраструктура:

  • Docker Compose для локальной разработки
  • Nginx + SSL для production
  • Скрипты автоматического деплоя
  • Redis для кеширования сессий

Технически всё работало безупречно. Можно было запускать. Я даже написал 21-страничную маркетинговую стратегию с планом выхода на ₽1M месячной прибыли за 18 месяцев — документ, который никто никогда не прочитает, кроме меня самого в приступе тихой грусти.

Проблема: когда платформа была готова, я завис. Как космонавт, идеально подготовленный к полёту, но забывший построить ракету.

Завис не на коде — на маркетинге и бизнес-составляющей.

Стратегия выглядела красиво на бумаге (в PowerPoint — ещё красивее):

  • Этап 1: Привлечь 20 экспертов, сделать 100 консультаций
  • Этап 2: Масштабироваться до 100 экспертов, 1000 консультаций в месяц
  • Этап 3: Запустить реферальную программу, B2B-направление
  • Этап 4: Географическая экспансия, AI-рекомендации (потому что в 2024 без AI нельзя)

Но когда дело дошло до первого шага — найти этих 20 экспертов — я понял, что составил идеальный план покорения Эвереста, ни разу не выходя из дома.

Кому это продавать? Как находить экспертов? Как убедить их бросить работающий Calendly или телеграм-бот? Какую вообще боль я решаю? Оказалось, что единственная реальная боль — моя собственная, от осознания масштабов самообмана.

Главная ошибка: Я написал 32,600 строк кода и 21-страничную маркетинговую стратегию под воображаемых пользователей. Не поговорил ни с одним экспертом перед стартом разработки.

Попытка номер два: или как я наступил на те же грабли, но в Python

Через несколько месяцев решил попробовать снова. На этот раз всё будет по-другому:

Что изменилось (в теории):

  • Платформа: FastAPI вместо Node.js — потому что знакомый молоток делает все проблемы похожими на гвозди
  • Название: slot-me.ru — короче, запоминается проще (всё ещё никто не запоминал)
  • Стратегия: сначала найти хотя бы 3-5 реальных пользователей, потом писать код

Перешёл на FastAPI, потому что Python — это моя зона максимального комфорта. Вместо борьбы с ESLint, валидацией FSD-архитектуры и конфигурацией монорепозитория я мог сосредоточиться на... правильно угадали, снова на архитектуре.

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

Главный урок: код — это 5% проекта (но я написал все 100%)

Разработка slot-me заняла... намного больше времени, чем я планировал сказать в этой статье.

Если честно, я снова ушёл в код. Не на неделю, а на месяцы. Не на MVP, а на production-grade платформу. Но на этот раз хотя бы с другой мотивацией — теперь я знал, что обманываю себя, но продолжал это делать осознанно.

Что сделано в slot-me:

  • FastAPI backend (196 тестов, 56% покрытие)
  • React frontend с Feature-Sliced Design
  • 27 миграций базы данных
  • OAuth через Google и Яндекс
  • Интеграция с Google Calendar и Яндекс.Календарь
  • Email-уведомления (SMTP/SendGrid)
  • Система напоминаний с APScheduler
  • CI/CD pipeline с автодеплоем
  • Production-конфигурация с Nginx и мониторингом Sentry

11 этапов разработки, все завершены. MVP готов на 100%. Пользователей готово на 0%.

И вот честное признание, которое больно признавать: дело было даже не в деньгах. Речь шла о том, чтобы довести до выкладки в интернет что-то своё — для самоутверждения. Чтобы показать себе (и, чего уж там, портфолио), что я могу.

Я не искал клиентов. Я играл в РПГ под названием "Архитектура проекта". Как в Factorio, только с реальным кодом: попробовать FastAPI вместо Node.js, настроить OAuth через два провайдера, написать 196 тестов с 56% покрытием. Вместо гипотезы "людям это нужно" — челлендж "я умею это сделать без legacy".

И знаете что? Это было неплохое развлечение. Как компьютерная игра, где ты прокачиваешь навыки, пробуешь новые технологии, строишь идеальную архитектуру без давления продакшна и legacy-кода. 11 технических документов, автоматические бэкапы, health checks — всё это было не мучительной прокрастинацией, а осознанной игрой в "создание идеального продукта".

Проблема только одна: я назвал эту игру "стартапом".

Но на этот раз я понял главное: код — это не более 5% успеха проекта.

Остальные 95% — это:

  • Поиск реальных пользователей (не воображаемых)
  • Валидация идеи — действительно ли проблема существует?
  • Маркетинг — как люди узнают о сервисе?
  • Продажи — как убедить попробовать?
  • Поддержка — как удержать тех, кто уже начал пользоваться?

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

Ловушка разработчика: Легко уйти в написание идеального кода, потому что это зона контроля. Маркетинг, продажи, общение с незнакомыми людьми — некомфортно. Но без этого продукт мёртв.

Архитектурная прокрастинация как искусство

Посмотрите на цифры из первого проекта:

  • Backend: 1,600 строк — разумно для MVP
  • Frontend: 31,000 строк — это уже не MVP, это симфония самообмана

Почему так много? Потому что я превратил архитектурную прокрастинацию в высокое искусство:

  • Настроил Feature-Sliced Design с жёсткой валидацией слоёв (для несуществующей команды)
  • Написал ESLint-правила для запрета deep imports (для себя одного)
  • Создал полную админку с дашбордами и аналитикой (графики с нулевыми показателями выглядят особенно грустно)
  • Реализовал UTM-трекинг и систему маркетинговых кампаний (чтобы отслеживать трафик, которого нет)
  • Добавил реферальную программу (пользователи смогут приводить других пользователей, которых тоже нет!)

Всё это до первого пользователя. Как построить аэропорт в пустыне и ждать, когда самолёты сами прилетят.

Но если честно, это было весело. Feature-Sliced Design с валидацией слоёв — интересная архитектурная задачка. UTM-трекинг и маркетинговые кампании — попробовать технологию, которую раньше не использовал. Реферальная программа — почему бы и нет, если уже пишешь всё остальное?

Это не классическая прокрастинация разработчика. Это осознанная игра в архитектуру. Sandbox-режим разработки, где можно экспериментировать с технологиями без давления дедлайнов, легаси и реальных пользователей. Factorio для программистов.

Что дальше: кладбище надежд и production-сервер

Сейчас slot-me развёрнут в production. Работает бесперебойно. Тесты зелёные (196 из 196). CI/CD настроен. Мониторинг Sentry бдительно следит за... тишиной.

Количество реальных пользователей: 0.

Потому что я до сих пор не начал искать их. Платформа готова принять тысячи пользователей. Инфраструктура выдержит нагрузку. Но вместо пользователей — только я, периодически логинящийся, чтобы убедиться, что всё ещё работает.

Вот в чём главный парадокс моего театра одного актёра:

Я написал систему напоминаний, которая педантично отправляет email за 24 часа, 1 час и 15 минут до встречи. Но встреч нет. Система напоминает пустоте о пустоте.

Я настроил OAuth через Яндекс и Google, чтобы пользователи могли войти одним кликом. Но некому кликать. Красивая дверь в пустой дом.

Я написал 11 технических документов, описывающих архитектуру, deployment, мониторинг. Единственный читатель — я сам, когда забываю, как это всё работает.

Я делаю это для себя — чтобы доказать, что могу. Это терапия через код. Но это не бизнес.

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

Настоящая работа начинается сейчас: найти первого человека, который готов попробовать. Не "персону из Customer Journey Map", не "ключевую аудиторию 28-45 лет с доходом ₽80,000-300,000/мес", а живого человека — с именем, телефоном, реальной проблемой и готовностью дать мне пять минут своего времени.

Выводы

Что я понял за два проекта:

  1. Код — это 5%, остальное — бизнес и люди. Можно написать 32,600 строк безупречного кода, но если никто им не пользуется — это просто хобби-проект.

  2. Не ищи где светло, ищи где потерял. Разработчики часто избегают некомфортных задач (маркетинг, продажи) и уходят в код. Это тупик.

  3. Работай с реальными, а не воображаемыми людьми. Пять разговоров с потенциальными пользователями дадут больше инсайтов, чем месяц проектирования в вакууме.

  4. Выбирай знакомый стек для MVP. TypeScript full-stack с FSD-архитектурой — отличный выбор для продакшена, но для первой версии важнее скорость итераций. 31,000 строк фронтенда в первом проекте против нескольких сотен в минималистичном интерфейсе второго.

  5. MVP — это не про неделю разработки. Это про неделю, чтобы дать что-то в руки реальным людям и получить обратную связь. А дальше начинается настоящая работа.

  6. Маркетинговая стратегия на бумаге ≠ реальность. Можно расписать план на 21 страницу с метриками, этапами и целями в ₽1M. Но если не можешь найти первых 20 пользователей — вся стратегия бесполезна.

  7. "Sandbox разработки" — это не бизнес. Иногда разработчики пишут код не для пользователей, а чтобы поиграть с технологиями в чистой среде без legacy. Это нормально и даже полезно для прокачки навыков. Но надо называть вещи своими именами: это не стартап, это playground для экспериментов с архитектурой.


Моё личное кладбище проектов:

  • expert-booking.ru — покоится в мире. 32,600 строк кода, 21-страничная стратегия, 0 пользователей. Эпитафия: "Идеальная архитектура для несуществующего продукта".
  • slot-me — всё ещё технически жив. Развёрнут в production, 11 этапов, 196 зелёных тестов, CI/CD, мониторинг. 0 пользователей. Эпитафия пока не требуется, но заготовка есть.

Что дальше:

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

Я получил то, за чем шёл: прокачал навыки, попробовал современные технологии без legacy, поиграл в архитектуру как в Factorio. Это было полезно и интересно.

Проблема была в другом: я называл это "стартапом" и убеждал себя, что это про деньги и пользователей. А на самом деле это был sandbox для экспериментов.

Теперь нужно решить: либо превратить slot-me в настоящий продукт (найти первых пользователей, протестировать реальные гипотезы), либо честно добавить его в portfolio с тегом "technical playground" и перестать путать игру с бизнесом.

Если вы эксперт и вам реально нужен сервис для записи клиентов — напишите мне. Возможно, вы станете тем самым первым реальным пользователем, ради которого стоило всё это писать.

Похожие материалы

·22 мин

Валидация бизнес-идеи: от разведки боем до первых пользователей

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

·15 мин

Уикенд-эксперимент: продажа несуществующего продукта как метод проверки гипотез

Вы продаёте обещание продукта, которого нет. Это работает, но несёт юридические, этические и методологические риски. Разбор метода для тех, кто всё равно решится.

·12 мин

Wagtail CMS: Прекрасный продукт из 2012 года, которому больше нет места

Освоил Wagtail CMS — отличная архитектура, удобная админка, Django под капотом. Проблема в другом: корпоративные сайты умерли. Нижний сегмент ушёл на Тильду, верхний — на специализированные инструменты. А разработчику остались вопросы: что теперь предлагать клиентам?