Хочу немного пооффтопить о том, как можно подходить к разработке продукта. Как стартапер или как бизнесмен.

TL;DR Стартапы сосут, бизнес рулит.

Если заинтересованы, добро пожаловать под кат.

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

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

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

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

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

В обоих случаях мы работали на чужие деньги. В обоих случаях ничего не взлетело.

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

Опишу в двух словах, что же мне не нравилось в "стартап"-подходе, и чем бизнес-подход отличается от стартаперского.

Во-первых, очень долгая разработка продуктов. Если вы разрабатываете продукт больше года — то с вашими подходами явно что-то не так. В моем понимании веб-проект должен делаться не больше трех месяцев (идеально — один-два). Бизнес не живет в таких долгих временных промежутках. Бизнес должен быть быстрым, он должен мгновенно отвечать требованиям текущего момента. В идеале, скорость должна быть такой — простая фича занимает день, сложная три дня, серьезная одна-две недели.

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

И опять вы должны делать всё очень быстро. Вы должны быть способны переписать продукт, пока он еще не стал слишком сложным, за недели.

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

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

Подитог: Вы должны быть очень быстрыми.

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

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

Подитог: Чтобы быть быстрым, ваши подходы должны удовлетворять требованиям текущего момента, а не предположениям о будущем проекта.

В-третьих, вы должны как можно раньше начать процесс выхода на рынок. Как сказал DHH, они в Basecamp не делали систему биллинга до тех пор, пока у них не появились первые клиенты.

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

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

Компания с говнокодом и с ужасным продуктом, у которой 99,9% рынка, просто растопчет компанию с идеальным продуктом, но без серьезной доли на рынке. Они просто не смогут конкурировать. Поэтому еще один подитог:

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

И конечно же, хэппи энд.

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