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

Опыт автора 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 за две недели и проверить свою бизнес-гипотезу сравнительно дёшево?

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

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

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

Написать
{ "author_name": "Nikita Kolmogorov", "author_type": "self", "tags": ["\u0437\u0430\u043f\u0443\u0441\u043a\u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430","mvp"], "comments": 508, "likes": 153, "favorites": 759, "is_advertisement": false, "subsite_label": "life", "id": 95844, "is_wide": false, "is_ugc": true, "date": "Wed, 04 Dec 2019 18:22:14 +0300", "is_special": false }
0
{ "id": 95844, "author_id": 60968, "diff_limit": 1000, "urls": {"diff":"\/comments\/95844\/get","add":"\/comments\/95844\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/95844"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199123, "last_count_and_date": null }
508 комментариев
Популярные
По порядку
Написать комментарий...
–1

Сильно, в один момент мне показалось что здесь есть элементы красиво встроенной рекламы

Ответить
0

Спасибо за комментарий!

Ответить
0

Ну теперь и не знаю. Видимо ваши адепты мне его заминусовали )))

Ответить
0

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

Ответить
1

достаточно персонажей не имеющих отношения ни к предпринимательству, ни к стартапам в частности

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }