По вечерам я делаю калькулятор стоимости жизни — у меня давно была эта идея, но взялся за неё я только в середине этого января. Поначалу казалось, что проект элементарный, но даже в элементарном проекте можно сильно недооценить сложность и объём работы.
В конце января был готов первый юзабельный прототип, который я сразу же выложил на сайт. Он был страшненький, местами кривой и тормозной, но основную функцию выполнял. Можно было выбрать Москву, Лос-Анджелес и сравнить стоимость жизни. Готовность проекта была может быть 50%.
За следующую неделю-полторы я добавил конвертацию валют и сравнение цен, пошаговый мастер на первом экране, селектор слева (там прикольные эмоджи и подписи, покликайте сами) и сделал селектор городов с нормальной фильтрацией, виртуализированным рендерингом (там 1000 элементов), выделением уже выбранных и популярных городов. Готовность подскочила до 80%.
На чём я споткнулся
Мне удавалось фигачить по вечерам примерно по 3-5 часов каждый день, на пределе возможностей, и ощущения от этого фигачинга были как у Микеланджело, ваяющего Давида. Но сейчас, спустя ещё 2-3 недели, готовность проекта по-прежнему где-то на уровне 80%, а я вымотан, и список незаконченных задач только увеличился. Плюс куча дел на основной работе, не говоря уже про семью. Такая вот жизнь стартапера — либо проект делать, либо с ребёнком поиграть и уборку сделать.
1) Я, видимо, перфекционист 🤬 Понимая, что можно сделать лучше (например, я неделю переделывал сравнение городов в более удобочитаемую таблицу), я так и делаю. Поначалу мне удавалось отфутболивать хотелки и делать только абсолютно необходимое, но, вместе с накапливающейся усталостью, я скатываюсь в делание всего подряд.
2) Не надо одновременно продумывать фичу, делать дизайн и реализовывать её 🤹 С дизайном вообще сложно вышло: сначала я рассчитывал сделать всё на готовых компонентах (не вышло: компоненты кривые и слишком атомарные). Потом получить конфетку от дизайнера (тоже не вышло: темпы работы оказались слишком разные). Сейчас я полностью переделываю дизайн своими силами, и это провал и трата времени в контексте MVP. Но мне нравится.
3) Я придумал какие-то сложные и ненужные штуки 🎛 Лендинг с замороченной интеграцией с SPA, перевод интерфейса на русский (я планирую запускаться в том числе на "наших", но сколько кровушки выпил i18n!), шаринг ссылок (бэкенда нет, поэтому все настройки кодируются прямо в URL), сомнительные фичи типа geek mode для расчётов. Часть из этого можно выкинуть и запуститься так, но что-то нужно для метрик и воронок — можно понять, что пользователь вовлекается по переключение в geek mode; посмотреть, как часто ссылками делятся.
4) Очень много пришлось делать руками 🛠 У меня были надежды на Suggest из Blueprint, но он подвёл больше всего: я долго пытался прикрутить к нему сначала правильные стили, потом виртуализированный рендеринг, потом категории городов (выбранные, популярные, остальные) — но не вышло. Он с трудом кастомизируется, а код местами косой. Пришлось делать самому: вышло лучше, но, опять же, куча времени впустую. Ещё и неизбежные рефакторинги, чтобы всё заработало — и, слава богу, мне хватило ума взять TypeScript!
Как надо делать MVP
MVP даже простейшего продукта — сложная штука, которая будет вести себя не так, как я хочу (капризные они, эти программные системы). А я буду пытаться починить её и потрачу кучу сил на скорее всего ненужную разработку. У меня есть стратегия и план продвижения проекта + некоторая уверенность, что продукт "полетит", но пока что всё время я потратил исключительно на разработку.
Понятно, почему весь англоязычный предпринимательский твитер твердит, что делать свой SaaS в качестве первого продукта — это безумие, и начинать надо с курсов, книжек, платных подписок на курируемую рассылку. Можно сказать, я полностью прочувствовал это: калькулятор примерно на порядок проще даже простейшего SaaS, но вожусь я с ним уже второй месяц.
Было интересно? Поделитесь своими мыслями в комментариях, а этим постом — с друзьями. Удачи! 🤘