Как запустить ИТ-продукт за две недели без головной боли

Опыт автора Telegram-канала «Золото Бородача» Никиты Колмогорова, который запустил семь продуктов за 2019 год и довёл два до самоокупаемости. Без прикрас, смузи и планшетиков — только суровая правда.

Привет всем! Меня зовут Никита, и я серийный запускатор этих ваших продуктов в этих ваших интернетах. Я точно так же, как и вы, сидел бессонными ночами над одним из своих продуктов более двух лет (2015–2017 годы) и запустил его лишь для того, чтобы обнаружить, что спроса на продукт нет и никогда не было.

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

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

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

Если вы выберете неправильный технологический стек, ваш технологический долг настолько затормозит разработку, что очередной 20-летний вонаби обгонит вас по количеству полезных функций.

У большинства стартаперов-запускаторов есть ряд простых проблем, которые можно решить и тем самым уменьшить процесс запуска MVP (минимального жизнеспособного решения) с двух лет до двух недель.

Я не опечатался: да, вы можете запускать продукты за две недели, так я сделал в августе 2019 года, и уже вывел свой продукт на самоокупаемость. Так сделал я со вторым продуктом, которым сейчас пользуется более 2 млн человек.

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

Им я снова и снова объясняю одно и то же, вот, решил немного упорядочить знания и тем самым немного помочь сообществу. Помогаешь сообществу — помогаешь себе.

На самом деле этот подход мало отличается от традиционного. В нём есть лишь небольшой ряд вещей, которые я делаю иначе, вот и всё.

Заранее оговорюсь: пункты из этой статьи очень субъективны и являются исключительно мнением автора, основанном на личном опыте.

Например, я знаю уйму людей, запустивших свои сервисы за две недели на этом технологичном стеке, и знаю уйму людей, которые пишут свои проекты уже третий-четвёртый год на том же PHP.

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

Перейдём непосредственно к основным ошибкам стартаперов, которые пытаются запустить свой ИТ-продукт.

Отсутствие технического опыта у основателей

Несомненно, есть люди, которые запустили свои успешные ИТ-продукты, не имея опыта программирования. Но не забывайте про ошибку выжившего: на одного такого человека приходится 10 тысяч людей, которые делали то же самое, но провалились.

Каков ваш шанс быть среди этих единиц? Правильно, 0, 01%. Готовы сделать свою ставку или предпочтёте играть с шансом победы в 85%? Тогда слушайте и делайте заметки очень внимательно.

Вам необходим минимум один фаундер со «шкурой в игре», который сможет (и хочет) всё своё свободное время тратить на этот проект.

Другой вариант — наёмный программист; но если вы выберете этот вариант, вы должны буквально следовать каждому из советов ниже.

И я имею в виду, следовать каждому совету ниже, чтобы увеличить свои шансы на успех. Если у вас нет фаундера с достаточной экспертизой именно в технологическом стеке, который вы выбрали, можете писать пропало, за две недели вы не запуститесь, как и за 4, 10, 20 и 40 недель. Через пару лет запуститесь криво-косо, никому не будете нужны.

Отсутствие чётких требований к продукту

«Мне нужно вот это, это, это, это, это, а ещё вот это, как же я мог про это забыть?»

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

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

Зачем нужно выставлять подобное строгое ограничение? Да потому, что все дополнительные функции вы сможете реализовать после запуска, когда уже проверите изначальный спрос на ваше предложение.

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

И добейте уже эту более быструю лошадь из примера с Ford (смотрите ссылку на ошибку выжившего выше).

Открою секрет: ваш продукт никогда не будет состоять из ровно одной фичи. Всегда будут дополнительные функции вроде мелких настроек и входа с регистрацией пользователей.

Все эти дополнительные функции нужно минимизировать. Поверьте, вам не нужен вход с паролем, логином и восстановлением пароля — вам нужны кнопки «Войти через Google» и «Войти через Facebook».

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

Отсутствие внятного и короткого технологического стека

Так, если вы хотите разрабатывать свой продукт годами и запуститься, когда никому ваш сервис уже не будет нужен, тогда я милости прошу вас в комментарии с фразами вроде «автор ничего не знает, я люблю PHP и всегда буду на нём писать, смотрите, Facebook на PHP (на самом деле нет) и "ВКонтакте" на PHP (на самом деле нет), и вообще это первый язык программирования, который я изучил, я не мог ошибаться тогда, когда у меня не было никакого опыта, я точно выбрал самый лучший язык программирования с первого раза, вперёд, PHP».

А если вы и вправду хотите запуститься за две недели и сразу проверить спрос на свою бизнес идею — да и делать так постоянно (это можно запустить 26 продуктов за год и проверить 26 бизнес-гипотез), тогда слушайте внимательно, записывайте и наматывайте на ус без возражений.

  • Вы всегда должны стремиться к минимизации количества написанного кода для достижения необходимой функциональности. Значит, вы выберите Koa вместо Express, Gin вместо Django, TypeScript вместо Go и так далее.
  • Вы не должны думать об оптимизации ресурсов до получения 100 тысяч пользователей. Значит, вам не нужны load balancers, Redis, а вместо AWS вы можете запустить простой и понятный дроплет на Digital Ocean.
  • Вам нужна типизация, чем строже, тем лучше. Если в языке программирования из вашего стека нет типов — о, бой! Вас будут ненавидеть все будущие программисты, которые будут тратить дополнительные часы на попытки расшифровать, что же там написали вы раньше. Типизация — дополнительная документация, необходимая любому продукту с более чем одним разработчиком. Стоит заметить, что вы сегодня и вы через полгода — это уже два разных разработчика.
  • Вам не нужна скорость и отзывчивость нативного пользовательского интерфейса. Возьмите кросс-платформенное решение, лучше React Native, для мобильных приложений. Вам нужно запуститься за две недели, а не разрабатывать продукт два года.
  • Господи-боже, не используйте PHP. Не слушайте людей, которые только PHP и знают, у них развито туннельное зрение. Я не буду доказывать этот пункт, просто поверьте. Либо посмотрите на этих бедняг, что запускают свои продукты на PHP уже несколько лет. Вам это не нужно, вам нужна скорость разработки.

Лучший технологический стек, который я вывел, постоянно запуская сервисы не только за две недели, но и за один вечер, описываю ниже.

На их основе я сделал стартер для бекенда, стартер для фронтенда и стартер для Telegram-ботов. Все сервисы я спокойно запускаю на Digital Ocean, деплой занимает от силы 15 минут. Статью о том, как я это делаю, я тоже написал. Итак, что же за волшебный стек?

  • Фронтенд: TypeScript + Vue + Vuex + Vuetify.
  • Бекенд: Node + TypeScript + Koa + koa-router-ts + MongoDB + Typegoose.
  • Мобайл: React Native + TypeScript + MobX.

Почему TypeScript? Потому что это JavaScript на стероидах. С более-менее строгими типами да с самыми новыми фичами ES (например, optional chaining).

Почему Vue? Потому что Angular и React заставляют вас писать больше кода как ни крути.

Почему MongoDB? Потому что до 1 млн пользователей вам неважно, есть ли join tables, а Mongo даёт незаметную автоматическую миграцию, простой синтаксис и строгие типы с Typegoose, простые решения индексации без необходимости что-либо конфигурировать вообще.

Почему Koa? Потому что Express, Gin, RoR либо заставляют писать больше кода, чем нужно, либо отстают в количестве крутых языковых фич вроде удобных декораторов.

Почему React Native? Потому что вам нужно запуститься за две недели, а не разрабатывать два нативных приложения (под iOS и под Android) в течение следующих двух лет.

Засуньте свое эго и мнение подальше: вашим пользователям нужна польза от приложения, быстро работающие кнопки и красивый пользовательский интерфейс не служат конкурентными преимуществами. Вам нужен не уродливый пользовательский интерфейс и разумно быстро работающие кнопки, это есть в React Native.

Почему MobX? Потому что Redux заставляет вас писать примерно в 100 раз больше кода, чем MobX. Вспомните эту фразу, когда в очередной раз будете писать никому не нужный редьюсер.

Отсутствие понимания спроса

Во-первых, давайте сразу обозначим: никто и никогда не украдёт вашу идею. Если вашу идею украдут, поздравляю, вы первый человек, с которым так поступили.

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

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

Если вы просто будете рассказывать о своей идее кому-то, вас просто погладят по голове и скажут «какой молодец». Вам не нужно «какой молодец», вам нужно сухое и суровое возражение от потенциального пользователя.

Пока вы не попросите реальные $20 за пользование сервисом, весь фидбек тоже будет виртуальным. Спрашивайте с людей деньги сразу, они вам прямо в лицо будут говорить, почему не хотят платить. В худшем случае вы получаете обратную связь, в лучшем — предзаказ.

Вы обязаны проверить спрос до начала разработки. Ну или, как я, просто разработайте за две недели MVP и сразу просите деньги за уже существующий сервис.

Делают так, как говорят победители, а не как делают победители

Есть две группы людей — победители и проигравшие. Победители делают так, как делают победители. Проигравшие делают так, как говорят победители. Вот и основное отличие лузера от успешного человека.

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

Смотрите на то, что они делали в реальности, слушайте реальные истории, читайте реальные биографии. Научитесь отделять булщит от правды и действуйте так, как действовали до вас победители.

Заключение

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

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

Итак, что же нужно сделать, чтобы запустить MVP за две недели и проверить свою бизнес-гипотезу сравнительно дёшево?

  • Убедиться, что есть технический человек, который готов потратить всё своё свободное время на проект.
  • Выбрать ровно одну функцию, которую хотите разработать.
  • Выбрать правильный технологический стек, который минимизирует количество кода.
  • Убедиться, что на идею есть спрос.
  • Делать так, как делают победители, а не так, как они говорят.

Вот и всё, друзья! Надеюсь, хоть что-то полезное вы успели вынести из этой статьи. Запускайтесь за две недели, это весело, поверьте!

0
502 комментария
Написать комментарий...
Andrei Samuilik

Зашел в репозитории на GitHub а там пустышка. По 7 коммитов в каждом репозитории. Ну и фраза:
——-8<———
Господи-боже, не используйте PHP. Не слушайте людей, которые только PHP и знают, у них развито туннельное зрение.
——-8<———-

лишь подтверждает, что перед нами очередной адепт секты "Свидетели Иеговы". Печалит, что такие вот, поездив по ушам директора, влазят в проекты на управленческие должности. 

Ответить
Развернуть ветку
borodutch
Автор

О, я ждал, когда же вы появитесь, свидетели PHP! Как же я рад, что у вас больше не получается запустить ни одного популярного проекта :) всему интернету стало лучше.

Про "пустышки" — это очень громкое заявление :) у меня на ГитХабе больше 1000 звёзд у чуть более чем 100 репозитриев разных проектов.

Ответить
Развернуть ветку
Alexander Mikhaylov

О, а мы все ждали свидетеля гона на PHP. Гнать на язык программирования - последнее дело. Для разработчика это всего лишь инструмент и топы могут реализовать бекенд хоть на C++, завтра на Node.js и параллельно пилить ещё один проект на Java.

Для каждого проекта свои задачи и инструменты. Больше говорит о вашей квалификации.

И да, Facebook изначально был написан на PHP и уверен, что и до сих пор большинство кода на нем. 

Ответить
Развернуть ветку
borodutch
Автор

Думайте так. А пока вы верите в PHP, мы запускаем продукты с минимальным техническим долгом.

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

Каждой задаче свой инструмент. Задача этой статьи — рассказать, как запускать продукты за 2 недели. Если стоит задача прожигать деньги на пюразработку — PHP подойдёт в самый раз.

Ответить
Развернуть ветку
Oleg D

Зачем вообще использовать языки программирования? Почему нельзя сделать сайт на Tilda за пол дня и пойти пить чай? Быстро, дешево, надежно.

Ответить
Развернуть ветку
borodutch
Автор

Недостаточно гибко.

Ответить
Развернуть ветку
Oleg D

Да ну бросьте, вы явно из секты свидетелей тайпскрипта!

Ответить
Развернуть ветку
borodutch
Автор

Недостаточно тонко.

Ответить
Развернуть ветку
Alexander Mikhaylov

Ха-ха, качество кода на языках с нестрогой типизацией - показатель квалификации разработчика.

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

Ответить
Развернуть ветку
borodutch
Автор

Только вы его не сделали 🥰

Ответить
Развернуть ветку
Alexander Mikhaylov

А почему не сделал? Можете продолжить мысль? Или все на этом? 

Ответить
Развернуть ветку
borodutch
Автор

Человек, который не сделал продукт, говорит, что "сделал бы продукт за 3 дня", и критикует другого человека, который этот продукт сделал — простите, но тут не о чем говорить 🥰 поставьте всех на место — сделайте такой продукт за 3 дня... Только вы не сможете.

И пойдут отмазки, что вам это не надо. Не надо было бы — не писали бы комментарий.

Ответить
Развернуть ветку
Alexander Mikhaylov

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

"пойдут отмазки" - именно отмазки? Точно? 

Ответить
Развернуть ветку
borodutch
Автор

И кактусом можно наесться, но стоит ли оно того? Вы же не будете на ассемблере писать рест сервер? Вот и я не буду на устаревших технологиях, которые заставляют писать *больше* кода, писать сервисы. И никому не советую писать больше кода, чем необходимо (как раз то, что заставляет делать PHP).

Но я полностью соглашусь с вами — ведь вам именно это нужно? Верьте, что PHP все ещё цветет и пахнет, ваше полное право.

А мы будем запускать продукты и улучшать жизнь людей вокруг нас. Всегда есть те, кто только и умеет, что токсичить в комментариях — и те, кто правда делают добро людям 🥰

Ответить
Развернуть ветку
Alexander Mikhaylov

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

Если проект на PHP, то это не обязательно Symphony, сложные шаблонизаторы и логика UI на сервере. И даже API может быть при этом на ноде на сокетах. Сами используем часто mongodb, но то как вы её преподносите - ужас. Забыли про overhead от имён полей? Или думаете что нет таких проектов где это мешает? 

Говорите что "продукты" некоммерческие и при этом пишете - "что же нужно сделать, чтобы запустить MVP за две недели и проверить свою бизнес-гипотезу". Тогда уберите слова "бизнес", "стартаперы" из статьи и все встанет на свои места. Стартап - сложный цикличный процесс, с расчётом unit экономики, тестированием нескольких разных гипотез, улучшением юзабилити, конверсионности и прочее, а не тяп-ляп и готово. 

Ответить
Развернуть ветку
Eugene Popov

Оверхед от имен полей? Это типа gzip/brotli на nginx включить не получилось?

Ответить
Развернуть ветку
Alexander Mikhaylov

Это типа поля не только в HTTP есть 

Ответить
Развернуть ветку
borodutch
Автор

Вы правы, я не прав.

Довольны? 🥰

Ответить
Развернуть ветку
Alexander Mikhaylov

Суть общения - обмен информацией, а не в доказывании чей-либо правоты. 

Ответить
Развернуть ветку
borodutch
Автор

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

Ответить
Развернуть ветку
Зубная паста

цензура

Ответить
Развернуть ветку
borodutch
Автор

Ее нет на виси!

Ответить
Развернуть ветку
Chyvakoff

О да, разработчики звонят по вакансии, а им в ответ "у нас PHP", а они так "Тогда до свидания".

Ответить
Развернуть ветку
borodutch
Автор

Не поверите, но именно это сейчас происходит в развитых IT странах.

Ответить
Развернуть ветку
Камаз Узбеков
Гнать на язык программирования - последнее дело. 

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

топы могут реализовать бекенд хоть на C++

Только это займёт в 10 раз дольше, и стоить эти специалисты будут в разы дороже. И будет всё время ломаться, и надо будет всё время платить им деньги

Ответить
Развернуть ветку
Andrei Samuilik

Любой может зайти к Вам в профайл на GitHub и увидеть, что репозиториев менее чем 100. То  есть уже как минимум видно, что Вы, уважаемы, пустобрех. Из них половину - это проекты чат-ботов сделанных на коленке за пару часов.

Ответить
Развернуть ветку
borodutch
Автор

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

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

Ну да ладно, атакуйте, это полное ваше право. Просто знайте, что выглядит это по-детски и все, читающие эту ветку, тоже видят ваше немного юношеское отношение к другим людям.

Но да, имеете полное право быть таким, какой вы есть 🥰

Ответить
Развернуть ветку
Vlad Vlad

Т.е. сначала вы приглашаете критиковать в комменты, а потом минусуете, переходите на личности, и у вас от этого полыхает?
Крайне мерзкое зрелище.

Ответить
Развернуть ветку
borodutch
Автор

Я вообще мерзкий тип, тут вы правильно подметили! Ох, в зеркало гляжу, ох как ненавижу себя! Ух, поделам бы мне! Негодяй.

Ответить
Развернуть ветку
Andrei Samuilik

Странно было бы завидовать человеку делающим на коленке проекты чат-ботов  и выдающий это за какое-то достижение.

Ну да, чат-бот на коленке за две недели - вот суть статьи.

Ответить
Развернуть ветку
borodutch
Автор

Именно! А ещё я запустил за две недели https://mamkin.trade, https://todorant.com, https://feedr.chat — но да, вы все правильно поняли, я — бездарность, которую не стоит слушать. Стоит и вправду пройти мимо :)

Раз уж мы тут на личности решили переходить, вместо обсуждения материала статьи, чем вы там можете похвастать? Ой, ничем?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
borodutch
Автор

Так и статья про MVP, а не продукты с тучей свисто-перделок.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
borodutch
Автор

Конечно, я максимально переусложняю. Согласен с вами полностью: MVP — это ненужное переусложнение, весь венчурный рынок неправ!

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Konstantin Shishkin

Показательно

Ответить
Развернуть ветку
borodutch
Автор

Ой, ужас! Вы победили, как я мог такое допустить? :)

Ответить
Развернуть ветку
Сергей Сергеевич

Ну точно бизнес молодость, вы случайно разбором металоконструкций в Тьмутаракане не занимались?

Ответить
Развернуть ветку
borodutch
Автор

Простите, а в чем сходство с бизнес-молодостью?

Ответить
Развернуть ветку
Kiku Reise

Следуя вашей логике, что вес слов зависит от количества репозиториев на гитхабе, то у вас с этим совсем худо https://github.com/AgentCoop

Есть над чем подумать.

Ответить
Развернуть ветку
Andrei Samuilik

Я где то говорил про  то что вес слов зависит от количества репозиториев ? Ах да, я написал что человек привирает говоря что у него больше 100. Все остальное твоя фантазия. И да, молодец, умеешь пользоваться поиском.

Ответить
Развернуть ветку
borodutch
Автор

Гхм, у вас шизофрения — чуть выше именно вы и говорили про репозитории.

Советую провериться.

Ответить
Развернуть ветку
Andrei Samuilik

Судя по тому как Вы активно минусуете мои комментарии Вам нужно проверится у проктолога. У Вас полыхает.

Ответить
Развернуть ветку
borodutch
Автор

Спасибо за заботу! Проверюсь на днях.

Ответить
Развернуть ветку
Пользователь Удален

Делать надо на том, что умеешь лучше всего. Вы говорите о скорости разработки, но впаривая свой JS стек, только противоречите самому себе

Ответить
Развернуть ветку
borodutch
Автор

Да, вы правы, нет такого понятия, как технический долг!

Ответить
Развернуть ветку
499 комментариев
Раскрывать всегда