PHP митап в Воронеже, Сергей Предводителев читает доклад про конфиги в Yii 3

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

Приложение для музыкантов

Один из парней говорит: — я придумал такое приложение. Суть в том что музыканты заливают музыку, пользователи слушают эту музыку по платной подписке. Как Spotify, только для независимых музыкантов из России, которые пишут свою музыку.

— О, круто!

— Ну так вот, я пока не начал делать приложение, потому что не могу придумать как мне спроектировать чтобы держало нагрузку. Где всё это хранить? Там же будут тонны треков. Это всё много весит, нужно кучу места на диске. Плюс трафик на прослушивание. Это будет слишком дорого? В общем я застрял.

Я ответил так:

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

Приложение для посткроссеров

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

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

Дальше описывает проект а в конце я слышу сомнения насчёт монетизации:

Во-первых, как всегда, меня ставит в ступор вопрос монетизации…

И привычная мантра про нагрузки:

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

Мой ответ:

— Прежде чем думать о монетизации и нагрузке стоит сначала сделать и увидеть будут ли этим пользоваться.

Возможно, что это мало кому нужно, а может быть и нужно но в другом формате.

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

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

Сначала пользователи

Говорят, что только 1 из 10 созданных приложений оказываются востребованными. Из моего опыта, я бы сказал что это соотношение составляет 1 к 30 или 1 к 40.

Я делал десятки проектов и лишь единицы оказались настолько удачными, что превзошли мои ожидания. Все остальные проекты тихо умерли едва родившись — пользователи их не оценили.

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

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

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

Это не масштабируется

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

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

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

Если эти “проблемы с нагрузкой” возникнут, я их решу. Они меня не пугают. Оптимизация — это лишь рабочая рутина. На это не требуется много времени, особенно если сам проект небольшой.

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

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

Сначала — пользователи.

Бонус

Статья Пола Грэма про то, почему обязательно нужно делать то, что не масштабируется:

На русском https://gopractice.ru/stories/do_things_that_dont_scale/

В оригинале http://paulgraham.com/ds.html