Хабрахабр

«Зачем мы все это делаем?» — создатель Prisma и бывший лид проектов VK о своем новом секретном проекте

В 2016 казалось, что через него была пропущена каждая вторая фотка в мире. Помните приложение Prisma? Историю взлета и спада его популярности обсуждали тоже везде (в том числе и на Хабре).

Почти сразу они стали известны и так. Но в июне этого года создатель «Призмы» Алексей Моисеенков вместе с сооснователем покинул компанию, не комментируя причины ухода. Алексей запустил новый стартап и уже поднял на него $1 млн инвестиций.

Известно, что это некий «аналог социальной сети, в котором большую роль будет играть камера и технологии искусственного интеллекта». Компания называется Capture Technologies inc., но что она выпустит, пока не говорят.

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

Про Алексея Моисеенкова

Работал в Яндексе, Mail.ru, собеседовался в Google. Алексей программировал с 11 лет, в школе был профессиональным игроком в World of Warcraft (в Hearthstone играет до сих пор), как-то умудрялся зарабатывать преподаванием катания на роликах, затем учился в Санкт-Петербургском Политехе на факультете технической кибернетики. Преподавал в МФТИ, но рассказывал, что студенты не доверяли — «у меня ведь не было своего стартапа».

Миллионы пользователей, постоянное внимание сми, поездки в Кремниевую долину. Позже Prisma запустилась и несколько месяцев была в топе AppStore почти по всему миру. Звучит красиво, но Алексей, кажется, смотрит на это критичнее:

Никому не интересна правда, любое СМИ подстраивается под читателя и насыщает историю вымыслом. «Любое интервью — это искажение. Программа их, может, и будет популярной, но про её создание медиа всегда додумают что-то». История о том, что, например, два чувака сидели и делали стартап за компьютерами и всё, что им было надо — это компьютеры, никогда не будет популярной.

Нам только компьютеры и нужны. Но мы же не такие!

Ты сейчас заглядываешь в код?

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

Но это помогает работе с командой?

Ты технически понимаешь, что делается, можешь вникать. Я могу читать код, понимаю проекционные паттерны. Всегда понимал, что происходит вокруг. Но все равно это скорее про общий язык с командой.
Вообще я всегда выполнял полу-техническую роль везде, где работал — в «Яндексе» и в Mail.ru.

А кем ты там работал?

В Mail.ru я работал на стыке продуктовой аналитики для нескольких проектов. В «Яндексе» я работал на последних курсах университета, был менеджером в «Картах». А уже после этого была Prisma и произошел перелом. После я переключился и начал заниматься больше продуктами — вижн, стратегия и тд.

«Призму» ты не совмещал с работой?

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

Фил: Ты же начинал «Призму», когда вообще не было никаких нейросетей вокруг, верно?

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

Про Олега Илларионова

Он работал там с 2010 года и видел, наверное, все самые важные этапы жизни компании. Весной 2018 года из VK ушел лид проектов Олег Илларионов.

«Павел сидит через один кабинет от меня, как раз по дороге к столику с едой, около которого мы все часто обсуждаем решения различных технических проблем» — рассказывал он еще шесть лет назад.
Помимо основных фич соцсети Олег занимался запуском сервисов Vinci (клон Prisma), Snapster и Stickerface.

И только недавно объявил, что стал техническим директором Capture Technologies. Как и Алексей, он не комментировал свой уход в первое время.

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

Было просто желание заниматься приложениями полноценно. О: На самом деле нет, я до сих пор пишу код. То есть, бросать программирование не хотелось — хотелось взять на себя еще больше обязанностей.

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

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

Ты уже тогда работал в VK и многое про это рассказывал. Я читал твое древнее интервью, года 2011. Расскажешь про это? Получается, ты застал все самые важные вехи в компании.

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

Понимали, что она не останется маленьким стартапом, но и не знали, что из нее вырастет. VK плавно менялся с годами, были всякие переходные периоды, когда никто не понимал, какой станет компания через несколько лет. Я бы отметил три этапа.

Он длился до 2012–13 годов. Этап бурного развития был, когда я туда пришел — в 2010 году. Очень, очень много всего делали. Тогда мы просто экспериментировали, сидели в офисе с утра до вечера, делали всякие фичи.

Мы сосредотачивались на ключевых вещах, смотрели за метриками и старались не распыляться. Затем был этап отказа от фич. Это, наверное, с 2013 по 2014.

VK превращается в большую компанию, с большим количеством людей, со сложной корпоративной культурой. И был этап большого роста — с 2014 года и до текущего момента.

Получается, рост начался, когда ушел Дуров?

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

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

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

Боюсь представить, сколько времени на такие вещи тратит лид проектов. Ф: Я работал в одном из гигантов индустрии обычным разработчиком и тратил львиную долю времени на перебор почты и всякие коммуникации.

Когда VK был в формате стартапа, у нас применялся очень интересный подход для решения задач — раз в неделю, по пятницам, где-то на час вся команда собиралась в комнате (кстати, в небольшой, и там помещались все). О: С ростом количества людей в VK на это тратилось все больше времени. Варианта не выйти и не рассказать практически не было. У нас был проектор и экран, каждый выходил и просто рассказывал-показывал, что он сделал. Нужно было объяснить, на что ушла неделя, поэтому все работали очень продуктивно.

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

Про выгорание и успех

Есть такие вещи, про которые вы думаете — стань мой стартап огромной компанией, такой фигни там никогда не будет.

Там был внутренний график, и можно было посмотреть в реальном времени, как люди растут. А: Я пришел в Яндекс в 2013-м году, и при мне наняли примерно полторы тысячи человек. Даже в нашем кабинете добавлялись люди.

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

Не то, что подойти и отчитаться, что сегодня закрыл три таски — а чтобы была открытость. Другой вопрос — может ли менеджмент построить культуру (то как доносятся ценности сверху вниз) таким образом, чтобы у людей было желание и возможность выполнять задачи, когда не стыдно рассказать о своих проблемах и сложностях рядом сидящим людям. Чтобы сразу с порога говорили: «мы практикуем прозрачность».

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

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

Ты, кстати, рассказывал, что до «Призмы» очень жестко выгорел на работе.

У меня не было конкретного списка обязанностей, поэтому я делал все подряд. А: В «Яндексе» я занимался универсальным менеджментом. И примерно через год возникло такое личное ощущение, что я от этого подсгорел.

Какие мысли тогда больше всего мучили?

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

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

А когда случилась Prisma, и стало понятно, что начинается что-то крутое — это излечилось?

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

Ну и что с этим делать? Это тот переходный момент, когда ты сидишь и такой — блин, неужели опять никому не надо?

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

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

Глаза горели не от того, что мы в долине, и узнаем людей, а от того, что творится что-то немыслимое. А: У меня было немного по-другому. Я не мог себе и представить такую ситуацию. У меня было три миллиона закачек в день. Понимаете, какой отрыв? В России мы имели 350 тысяч закачек в день, а топ AppStore на тот момент составлял 13 тысяч. Мы просто органически сидели наверху ничего не прилагая, никаких маркетинговых усилий. И так на протяжении нескольких месяцев.

Поймать такую волну — это, конечно, бесценно.

Как были устроены Vinci и Prisma

Честно, кто у кого подсматривал? Мне кажется, вы постоянно делали что-то похожее — Prisma и Vinci, Sticky AI и Stickerface.

Vinci начался уже после выхода Prisma. О: Если честно, мы никогда не скрывали, что подсмотрели. А насчёт Stickerface — это вообще разные вещи, и тут никто ни у кого не подсматривал. Мы увидели и решили — надо скопировать. Если бы удалось за это взяться со всеми руками и головой, тогда бы, может быть, что-то и получилось. Более того, идея Stickerface пришла в голову очень-очень давно, когда никто ничего подобного не делал. А сейчас уже очень много игроков.

Как получилось, что вы сошлись в одну компанию?

На моё удивление, Алексей очень позитивно на это отреагировал. О: Мы начали общаться в тот момент, когда запустили Vinci. На этом и зародилось общение. Я думал, он будет беситься, а он как-то так с улыбкой воспринял то, что мы скопировали приложение.

Я считаю, это нормальное явление. А: Я ещё в университете понял, что не боюсь копирования. Поэтому у меня и не было никакого хейта и ненависти.

Как думаете, у кого технически получилось лучше эту штуку сделать?

Я вообще не люблю копировать, и люблю делать оригинальные вещи, которые никто раньше не делал. О: Я считаю, что круто делать что-то первому, а копировать — не круто.

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

Приходилось изобретать и придумывать. Много чего из VK приходилось делать, когда информации об этом не было вообще. Мы выпустили относительно уникальную вещь на тот момент. В Snapster, несмотря на то, что сама идея вторичная, была полноценная взрослая цветокоррекция с глубоким погружением, которую до нас в мобильном приложении не делал вообще никто. Другой вопрос, что технической реализации было недостаточно, чтобы сорвать рынок.

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

Доклад Олега про технологии, использованные в Vinci до запуска офлайновой обработки на CPU.

Первая версия была сделана за 24 часа, релизная — за 2 недели.

Lua/Turbo для общения между фронтендом и бэкендом — и с ними тоже не все гладко. Стек: Torch для работы с нейросетями, но с ним много проблем. Бэкенд сначала был на NodeJS из-за нехватки времени, потом переписан на Go.

Выбирали между четырьмя вариантами от Nvidia — Tesla M40, Tesla K80, GTX 1080 и Titan X. Железо: сперва рассматривали вариант виртуальных серверов с видеокартами, но решили купить свое оборудование. Выбрали две последние, поскольку основное преимущество промышленных вариантов (Tesla) в отказоустойчивости, а эта проблема уже была решена архитектурой.

Распределение стилей по видеокартам динамическое и регулируется специальной функцией. Архитектура: Каждый стиль обрабатывается на своей видеокарточке.

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

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

Соотношение скоростей слоев: входной — 42%, промежуточные — 10%, и выходной 28%.

А как была устроена Prisma под капотом?

Это старенькая такая вещь, сейчас уже не очень популярная, потому что есть PyTorch и TensorFlow. А: Модели были на «Торче». Она прогоняла Inference, и оттуда «Питоном» вытаскивали все наверх. Саму модель запаковали в процессинг на видеокарте. Никакого сложного стека не было. То есть, бэкенд, обертка на Питоне, очереди и серверная часть — тоже на Питоне. На устройстве просто тонкий клиент, интерфейс плюс работа с api.

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

Мы подумали, а возможно ли сделать офлайн или на какой-то дешёвой процессорной обработке. Так начался второй этап. Тогда не было ни Core ML, никакого процессинга на телефоне. У нас получилось это сделать в августе 2016 года, и к концу сентября мы начали деплоить. Потому что это и сохраняет privacy — не гонит никуда фотографии юзера, и это грандиозно сокращало косты на обработку. Мы были пионерами Metal, сооружали все из костылей и палок, но понимали, что за этим будущее.

И мы начали понимать, что вся отрасль процессинга, AI, Machine learning — все будет на девайсе, с теми данными, которые на этом девайсе есть. Переход был для нас ключевым, мы смогли реализовать семейство алгоритмов для процессинга моделей на устройстве.

Ф: То есть, к началу работы над «Призмой» идея делать вычисления на клиенте даже не рассматривалась?

Мы смотрели в ту сторону, но думали вроде «Ой, да ну! А: Не совсем так. В начале даже эти модели с трудом уместили в память GPU, а там 8 или 12 Гб. Это нереально». Мысль о том, что это возможно на устройстве, казалась футуристичной.

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

Я не думал, что там будет такой поток изображений.

А на какую нагрузку вы рассчитывали?

Максимум! А: Перед запуском мы думали, будет максимум три изображения в секунду. Представляешь, сколько пользователей должно быть и думаешь, три изображения в секунду — это нормально. Отсюда прикидываешь — 60 х 60, 3 х 600, еще на 12, и уже кажется — много, куда вообще столько!

Думали, что это отлично. Мы прогоняли процессинг, и весь цикл уходил в 400 миллисекунд. Когда полились миллионы пользователей, все мысли начали совсем в другую сторону уходить. Как потом стало понятно, это совсем не отлично.

Бегали, тушили? И что вы делали?

Все, что могли найти. А: Когда горело, мы использовали все возможные ресурсы на рынке. Я звонил чуть ли не каждому, кого знал. Я помню, мы даже звонили знакомым, спрашивали, есть ли у них сервера на видеокартах. Брали у кого-то 5-6 машин, и они были даже не на игровых видеокартах, у них процессоры были медленнее. Разработчикам из «Яндекса», ещё откуда-то, говорил «блин, ребята, помогите у кого есть пару тачек поднять».

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

Ф: А было такое, что код написан некачественно, и приходилось исправлять и переписывать после релиза?

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

Что будет с AI, ML и нейронками

Ф: Когда я разобрался, как работают нейросети, пропало ощущение, что это магия и прорыв. А у вас?

Для меня весь deep learning никакая не магия. А: На самом деле, да. С точки зрения того, какие алгоритмы стоят внутри и как работают, есть некий black box, построенный на эвристике экспериментирований. Дифференциальная геометрия — это магия, а deep learning достаточно прозрачный и понятный технически. Нужно было верить в то, что это будет работать быстро на устройствах, и когда мы этого добились, я только закрепил свои убеждения. Но в целом, сама по себе вещь на тот момент точно не была чем-то сверхъестественным.

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

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

Даже комбинации технологий мало где представлены. А: Общего AI для всего пока не существует. Он и слушает, что ты говоришь, и пытается вывести контекст, и пытается этот контекст как-то анализировать, плюс ещё генерирует речь. Хороший пример нескольких технологий в связке — это Google Duplex. То есть выполняет задачи с понятными сценариями и наборами точных, хорошо описанных задач. Это целый комплекс, но даже он остается очень узкой историей — звонит и бронирует столики.

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

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

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

Как думаешь, это так? Ф: Я часто слышал, что реализацию обработки изображений мы украли у зрения, у биологического механизма.

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

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

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

А каким способом это получится, как у человека или не как у человека, уже неважно. У deep learning есть определённые задачи — повысить качество и улучшить результат. Это такая свободно развивающаяся сфера, где как получится, так и получится.

Вы с ними пробовали что-то делать? А сейчас все обсуждают капсульные нейросети.

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

Правда, что там выигрывают другие алгоритмы? Вы ведь работали еще и с фейстрекингом.

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

Что под капотом у секретного приложения


Сейчас вы на какие технологии опираетесь?

У нас бэк будет больше, чем у Призмы или у Vinci. О: Сейчас мы решили отойти от стандартных подходов к построению бэкэнда и строим все на FondationDB, которая недавно появилась в опенсорсе. Мы делаем риалтайм приложение, и это потребует работы над сложными оптимизациями.

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

Дальше у нас все на Go сейчас. Это что касается хранения данных. Лёша говорил, что в Призме изначально был Питон, но потом они его тоже на Go переписали. Vinci тоже был на Go написан. Я вижу положительные реакции от сообщества. Кажется, это хороший язык, чтобы сейчас делать бэкенд. Гораздо проще людей нанимать, и вообще кажется, что это правильное решение.

Думаю, в этом плане экономить смысла нет и что-то другое искать. С точки зрения инфраструктуры, мы пока попробуем на Амазоне все построить. Но в целом на Амазоне не такие уж высокие цены. Надо сначала запуститься, понять, нужно ли экономить. Они их периодически индексируют.

В VK очень многие хитрости исходили из-за полноценной жизни на сервере. Соответственно из-за того, что мы запускаемся на виртуальном хостинге, архитектура будет отличаться от таких проектов и приложений, как VK. Там на одном сервере могли выполняться очень разные роли — могли и картинки хранить, и базу данных содержать, и ещё что-нибудь делать.

Я перед собой поставил цель сделать не падающий бэкенд. Мы все разбиваем на инстансы, все очень атомарно. Хочется чтобы при любом падении железа, вплоть до датацентра в амазоне, юзеры ничего не замечали.

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

Просто хотим выдержать некую интригу. Мы не боимся, что кто-то скопирует ее.

Кроме того, что удобнее нанимать разрабов? Ф: Не мог бы ты подробнее рассказать про мотивацию для использования Go?

Мы не те, кто будет делать только на таком языке и больше ни на каком. О: В целом, язык не такая важная вещь. Но прямо сейчас, кажется что Go — это лучший вариант на рынке, самая прикольная вещь. Если бы кому-то хотелось сделать на PHP, мы бы сделали на PHP.

Вот ты решил писать на «Ноде», но у тебя 5 миллионов человек и все — твоя Нода не выдерживает, а переписывать теперь очень дорого. Ф: Как вообще стартапу правильнее выбирать технологии? Как это предугадывать?

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

Ф: Там пространство для оптимизаций меньше.

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

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

Ф: То есть, ты думаешь, что статическая и строгая типизация — это определяющий фактор?

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

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

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

Каких людей вы сейчас набираете?

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

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

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

Разработчик, который делает интерфейс должен сам замечать и исправлять многие мелочи. С мобильными разработчиками важно внимание к мелочам. Иначе придётся его все время тыкать, и это съест много времени и нервов.

Я это представляю как: надо видюху Tesla за 5000$ — да хоть десять. В VK вы не были ограниченными в ресурсах. Можете ли вы сейчас себе позволить такие эксперименты? Надо сервера за 700 долларов в месяц — возьмем.

Насчёт VK — это правда. О: Не похоже, чтобы у нас были проблемы с ресурсами. Арендовали чуть ли не частный самолёт, чтобы как можно быстрее эти видяшки доставить. Когда мы поняли, что нам нужны сервера с видяшками, нам сказали — не вопрос. В этом плане всегда руки были развязаны, и железа никто не жалел.

Но с другой стороны, мы сейчас хотим использовать Amazon не потому, что нет ресурсов.

Но и частным самолётом вы сервера уже не повезёте.

Но с другой стороны и нет нужды. Ну да.

Какой смысл в стартапах

По этому поводу вспомнил одну историю. Вы хотите сохранить интригу вокруг проекта, и я обещал не лезть с расспросами. Поэтому он написал обзор своего ужина. Я читал на reddit, как парень попал на закрытую презентацию одного VR хэдсета, и не мог говорить о нем из-за эмбарго. Может расскажете про свой вчерашний ужин? Но с подвохом, вроде «тарелка с едой была чуть тяжелее, чем HTC Vive, но в руке лежала довольно удобно».

Ну мы же не железо делаем, мы делаем софт, с ужином не сравнишь.

Но то, что это будет соцсеть — вы уже говорили. Блин, попытка провалилась.

Скорее это продукт на базе некоего социального взаимодействия. А: Наверное, это неправильно называть соцсетью.

Трудно было убеждать людей в этой идее?

А: Инвесторам важно рассказать не просто идею, важно сказать, кто у тебя в команде.

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

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

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

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

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

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

А дальше идет проверка гипотез — верно ли твое предположение. Есть комбинация подачи и исполнения. Возьмём Dropbox: гипотеза в том, что людям нужно хранить файлы в облаке, места на компьютере нет, и нужно, чтобы везде был доступ. Любой продукт основан на некоем предположении. Оказалось это кому-то нужно, люди начали хранить файлы в облаке. Они её сделали и проверили. Гипотеза подтвердилась.

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

Вспомнить только недавнюю историю, как Цукерберг отчитывается перед сенатом. Каждая успешная социальная вещь — это ещё и большая ответственность, даже влияние на мир. Вы готовы к такой ответственности, если все выстрелит?

Должно сначала выстрелить. А: Сложно сказать. Цукерберг, очевидно, отвечал перед сенатом не в первый год своей работы, и даже не в третий, и не в пятый. Гипотеза должна подтвердиться и пережить стадию роста. Хотелось бы, чтобы представилась. Наверное, к тому моменту мы научимся, если такая возможность представится.

Если поменять его структуру, можно добиться кое-какого комичного эффекта. Олег, я все возвращаюсь к твоему докладу про Vinci. И на фоточке просто появляются узоры. Вот ты полчаса рассказываешь о передовых технологиях, инженерных решениях, архитектурах, дорогом железе — а потом в конце такой: «вот для чего мы все это делали».

Отсюда вопрос — вам не кажется, что лучшие умы современности занимаются пустяками?

Оказалось, что у Олега пропала связь, поэтому вступил Алексей) (Дальше были очень очень долгие семь секунд тишины.

IT-индустрия не так давно появилась. А: Мне кажется, это не совсем так. Появился интернет, как некий инфраструктурный проект, выросший из военных технологий. Она сформировалась полностью только к концу восьмидесятых. Это рождает большое количество возможностей, но возрастает порог входа. На основе этого зародилась новая область, и в текущий момент мы видим, что она проникает во все сферы жизни.

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

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

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

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

(Здесь Олег появился и согласился с Алексеем).

Для чего вы делаете стартапы?

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

Каждый должен заниматься тем, что ему нравится. А почему мы все не занимаемся запуском космических ракет, а делаем какие-то социальные приложения? Если кому-то нравится запускать ракеты, то в меру возможности нужно заниматься этим. Мне и Алексею нравятся социальные приложения, и мы должны заниматься ими.

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

Прозвучит как клише, но я хочу сделать жизнь немного лучше, хочу помочь сделать какие-то рутинные вещи быстрее, лучше, чтобы у людей появились новые возможности. А: Я согласен с Олегом, важно делать, что нравится. Вы сами видите как влияет Instagram на нашу с вами жизнь. Например Instagram дает вам возможность фоточку запостить, а раньше этого не было. Раньше это казалось незамысловатой вещью, и вот какой она теперь стала.

Хорошим примером будет Facebook. О: Instagram, наверное, не лучший пример. Хочется думать, что мы делаем довольно полезное приложение, которые точно несет больше социальной пользы, чем Instagram. Не в том плане, что мы сейчас делаем ещё один Facebook.

Если постоянно делать мир все лучше и лучше, не приведет ли это в итоге к обратному эффекту?

Знал бы я, что это приведет к плохому — может и не делал бы. Никто не знает. Никто не знает будущего. А может и делал.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть