Помните приложение Prisma? В 2016 казалось, что через него была пропущена каждая вторая фотка в мире. Историю взлета и спада его популярности обсуждали тоже везде (в том числе и на Хабре).
Но в июне этого года создатель «Призмы» Алексей Моисеенков вместе с сооснователем покинул компанию, не комментируя причины ухода. Почти сразу они стали известны и так. Алексей запустил новый стартап и уже поднял на него $1 млн инвестиций.
Компания называется Capture Technologies inc., но что она выпустит, пока не говорят. Известно, что это некий «аналог социальной сети, в котором большую роль будет играть камера и технологии искусственного интеллекта».
Мы с fillpackart напросились на беседу и попытались разузнать, хотя бы что у этого проекта под капотом, но снова свалились в обсуждение «быть или не быть».
Про Алексея Моисеенкова
Алексей программировал с 11 лет, в школе был профессиональным игроком в World of Warcraft (в Hearthstone играет до сих пор), как-то умудрялся зарабатывать преподаванием катания на роликах, затем учился в Санкт-Петербургском Политехе на факультете технической кибернетики. Работал в Яндексе, Mail.ru, собеседовался в Google. Преподавал в МФТИ, но рассказывал, что студенты не доверяли — «у меня ведь не было своего стартапа».
Позже Prisma запустилась и несколько месяцев была в топе AppStore почти по всему миру. Миллионы пользователей, постоянное внимание сми, поездки в Кремниевую долину. Звучит красиво, но Алексей, кажется, смотрит на это критичнее:
«Любое интервью — это искажение. Никому не интересна правда, любое СМИ подстраивается под читателя и насыщает историю вымыслом. История о том, что, например, два чувака сидели и делали стартап за компьютерами и всё, что им было надо — это компьютеры, никогда не будет популярной. Программа их, может, и будет популярной, но про её создание медиа всегда додумают что-то».
Но мы же не такие! Нам только компьютеры и нужны.
Ты сейчас заглядываешь в код?
Алексей: Не сказал бы. Только для себя какие-то вещи по Deep Learning смотрю, как сеть обучать. Математику я хорошо понимаю, потому что математика мне нравится, но ничего не пишу в продакшн.
Но это помогает работе с командой?
Я могу читать код, понимаю проекционные паттерны. Ты технически понимаешь, что делается, можешь вникать. Но все равно это скорее про общий язык с командой.
Вообще я всегда выполнял полу-техническую роль везде, где работал — в «Яндексе» и в Mail.ru. Всегда понимал, что происходит вокруг.
А кем ты там работал?
В «Яндексе» я работал на последних курсах университета, был менеджером в «Картах». В Mail.ru я работал на стыке продуктовой аналитики для нескольких проектов. После я переключился и начал заниматься больше продуктами — вижн, стратегия и тд. А уже после этого была Prisma и произошел перелом.
«Призму» ты не совмещал с работой?
В начале это был такой проект на стороне — даже скорее идея для сайд-проекта. Фултайм начался уже потом, когда появилось приложение.
Фил: Ты же начинал «Призму», когда вообще не было никаких нейросетей вокруг, верно?
Я бы сказал, что просто не было такого хайпа. Это сейчас везде и маски, и трекинг, и сегментация, и другие вещи. А тогда это не было так популярно, наверное, потому что требовало очень много ресурсов. Даже стайл-трансфер задача выполнялась несколько минут. Никто же не будет ждать по пять минут одну картинку. Но у меня было понимание, что нейросети точно пойдут в гору, поэтому я начал ими заниматься.
Про Олега Илларионова
Весной 2018 года из VK ушел лид проектов Олег Илларионов. Он работал там с 2010 года и видел, наверное, все самые важные этапы жизни компании.
«Павел сидит через один кабинет от меня, как раз по дороге к столику с едой, около которого мы все часто обсуждаем решения различных технических проблем» — рассказывал он еще шесть лет назад.
Помимо основных фич соцсети Олег занимался запуском сервисов Vinci (клон Prisma), Snapster и Stickerface.Как и Алексей, он не комментировал свой уход в первое время. И только недавно объявил, что стал техническим директором Capture Technologies.
Олег, у тебя было ощущение, что ты больше не можешь писать продуктовый код?
О: На самом деле нет, я до сих пор пишу код. Было просто желание заниматься приложениями полноценно. То есть, бросать программирование не хотелось — хотелось взять на себя еще больше обязанностей.
Ф: А не было ощущения, что из-за других обязанностей ты не можешь уже заниматься программированием также хорошо?
О: Безусловно, я не могу им заниматься так же хорошо, как если бы я только писал код. С другой стороны, в VK мы всегда много времени уделяли продукту. Когда была задача сделать какую-нибудь фичу, редизайн, раздел друзей или что-нибудь в таком духе, приходилось самому общаться с дизайнером, решать, как что будет работать. В общем, продуктовый бэкграунд был у меня практически с самого начала, и его хотелось только больше.
Я читал твое древнее интервью, года 2011. Ты уже тогда работал в VK и многое про это рассказывал. Получается, ты застал все самые важные вехи в компании. Расскажешь про это?
О: Это правда. Удалось увидеть, я бы сказал, очень разные компании за это время. Устраивался я в одну, уходил несколько месяцев назад совершенно из другой — и по духу, и по характеру, и по всему.
VK плавно менялся с годами, были всякие переходные периоды, когда никто не понимал, какой станет компания через несколько лет. Понимали, что она не останется маленьким стартапом, но и не знали, что из нее вырастет. Я бы отметил три этапа.
Этап бурного развития был, когда я туда пришел — в 2010 году. Он длился до 2012–13 годов. Тогда мы просто экспериментировали, сидели в офисе с утра до вечера, делали всякие фичи. Очень, очень много всего делали.
Затем был этап отказа от фич. Мы сосредотачивались на ключевых вещах, смотрели за метриками и старались не распыляться. Это, наверное, с 2013 по 2014.
И был этап большого роста — с 2014 года и до текущего момента. VK превращается в большую компанию, с большим количеством людей, со сложной корпоративной культурой.
Получается, рост начался, когда ушел Дуров?
О: Да, примерно тогда. Компания начала расти и нанимать новых людей. До этого размер штата был почти неизменным. Людей было не очень много, и когда кто-то говорил, что не успевает, не справляется — вариант нанять человека в помощь даже не обсуждался. Был подход стартапа с ограниченными ресурсами.
Это два разных подхода к разработке — можно делать большие классные продукты маленькой командой, а можно не ограничивать себя в ресурсах и нанимать большую команду. У каждого из подходов есть свои плюсы и минусы. С большой командой вы можете охватывать очень много вещей, с маленькой — делать очень отполированный продукт.
Маленькой командой проще управлять, проще уделять внимание важному. В больших компаниях многие вещи ускользают из вида, попадают на стыки ответственностей, когда непонятно, кто за эти вещи отвечает. В итоге нередки случаи, когда ключевые вещи для бизнеса просто выпадают из вида и не развиваются.
Ф: Я работал в одном из гигантов индустрии обычным разработчиком и тратил львиную долю времени на перебор почты и всякие коммуникации. Боюсь представить, сколько времени на такие вещи тратит лид проектов.
О: С ростом количества людей в 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 недели.
Стек: Torch для работы с нейросетями, но с ним много проблем. Lua/Turbo для общения между фронтендом и бэкендом — и с ними тоже не все гладко. Бэкенд сначала был на NodeJS из-за нехватки времени, потом переписан на Go.
Железо: сперва рассматривали вариант виртуальных серверов с видеокартами, но решили купить свое оборудование. Выбирали между четырьмя вариантами от Nvidia — Tesla M40, Tesla K80, GTX 1080 и Titan X. Выбрали две последние, поскольку основное преимущество промышленных вариантов (Tesla) в отказоустойчивости, а эта проблема уже была решена архитектурой.
Архитектура: Каждый стиль обрабатывается на своей видеокарточке. Распределение стилей по видеокартам динамическое и регулируется специальной функцией.
Самый неожиданный ботлнек — видеокарта могла обрабатывать больше картинок, чем пропускала сеть.
Организация обучения: поставили FGlab на все сервера, стали бомбардировать каждую картинку рандомными параметрами, и вручную выбирать, какие больше нравятся. Это помогло сделать стили сильно отличающимися друг от друга.
Соотношение скоростей слоев: входной — 42%, промежуточные — 10%, и выходной 28%.
А как была устроена Prisma под капотом?
А: Модели были на «Торче». Это старенькая такая вещь, сейчас уже не очень популярная, потому что есть PyTorch и TensorFlow. Саму модель запаковали в процессинг на видеокарте. Она прогоняла Inference, и оттуда «Питоном» вытаскивали все наверх. То есть, бэкенд, обертка на Питоне, очереди и серверная часть — тоже на Питоне. Никакого сложного стека не было. На устройстве просто тонкий клиент, интерфейс плюс работа с api.
Мы прошли через два этапа. Первый — когда все было онлайн. Мы изначально ускорили алгоритм где-то в сотню раз по времени от backpropagation-версии, запустили это на арендованных игровых видеокартах. Вся сложность была в том, что при росте приложения возникали очереди. Поток запросов картинок был огромный. Картинки ехали на сервер, а при нагрузке в несколько миллионов закачек, гнать терабайты фотографий выходило очень дорого. Платить за сервер и за трафик пришлось бы больше, чем за ресурсы — даже при условии, что время ожидания мы сократили.
Так начался второй этап. Мы подумали, а возможно ли сделать офлайн или на какой-то дешёвой процессорной обработке. У нас получилось это сделать в августе 2016 года, и к концу сентября мы начали деплоить. Тогда не было ни Core ML, никакого процессинга на телефоне. Мы были пионерами Metal, сооружали все из костылей и палок, но понимали, что за этим будущее. Потому что это и сохраняет privacy — не гонит никуда фотографии юзера, и это грандиозно сокращало косты на обработку.
Переход был для нас ключевым, мы смогли реализовать семейство алгоритмов для процессинга моделей на устройстве. И мы начали понимать, что вся отрасль процессинга, AI, Machine learning — все будет на девайсе, с теми данными, которые на этом девайсе есть.
Ф: То есть, к началу работы над «Призмой» идея делать вычисления на клиенте даже не рассматривалась?
А: Не совсем так. Мы смотрели в ту сторону, но думали вроде «Ой, да ну! Это нереально». В начале даже эти модели с трудом уместили в память GPU, а там 8 или 12 Гб. Мысль о том, что это возможно на устройстве, казалась футуристичной.
Но у нас пошёл рост — все горит, сервера горят, пользователей миллионы. Фокус сместился на то, чтобы работала система, которую мы построили на GPU. Мы месяц оптимизировали серверную часть, но поняли, что без обработки на девайсе никуда. Иначе обанкротишься мгновенно.
Я не думал, что там будет такой поток изображений.
А на какую нагрузку вы рассчитывали?
А: Перед запуском мы думали, будет максимум три изображения в секунду. Максимум! Отсюда прикидываешь — 60 х 60, 3 х 600, еще на 12, и уже кажется — много, куда вообще столько! Представляешь, сколько пользователей должно быть и думаешь, три изображения в секунду — это нормально.
Мы прогоняли процессинг, и весь цикл уходил в 400 миллисекунд. Думали, что это отлично. Как потом стало понятно, это совсем не отлично. Когда полились миллионы пользователей, все мысли начали совсем в другую сторону уходить.
И что вы делали? Бегали, тушили?
А: Когда горело, мы использовали все возможные ресурсы на рынке. Все, что могли найти. Я помню, мы даже звонили знакомым, спрашивали, есть ли у них сервера на видеокартах. Я звонил чуть ли не каждому, кого знал. Разработчикам из «Яндекса», ещё откуда-то, говорил «блин, ребята, помогите у кого есть пару тачек поднять». Брали у кого-то 5-6 машин, и они были даже не на игровых видеокартах, у них процессоры были медленнее.
Звонили в Amazon, там нам давали увеличение лимитов. Серьезно, когда у нас поднимались четыре машины по четыре видеокарты на Амазоне, мы так радовались — очередь из десяти изображений падала до восьми.
Ф: А было такое, что код написан некачественно, и приходилось исправлять и переписывать после релиза?
А: На лету было очень много исправлений, серьезно. Исправляли именно узкие места, которые рвались, где невозможно было ожидать такой нагрузки. Ведь все писалось, чтобы просто работало. Сначала не было вообще очередей. Мне, наверное, сложно оценить чистоту и грамотность кода. Поскольку написано все было буквально за месяц — да, наверно там не было промышленного подхода, как все любят, с учётом нагрузок, с учётом расширяемости. Поэтому очень много всего переписывалась.
Что будет с AI, ML и нейронками
Ф: Когда я разобрался, как работают нейросети, пропало ощущение, что это магия и прорыв. А у вас?
А: На самом деле, да. Для меня весь deep learning никакая не магия. Дифференциальная геометрия — это магия, а deep learning достаточно прозрачный и понятный технически. С точки зрения того, какие алгоритмы стоят внутри и как работают, есть некий black box, построенный на эвристике экспериментирований. Но в целом, сама по себе вещь на тот момент точно не была чем-то сверхъестественным. Нужно было верить в то, что это будет работать быстро на устройствах, и когда мы этого добились, я только закрепил свои убеждения.
Так с любыми технологиями. Давайте возьмем базы данных в девяностые годы. Тоже было ощущение, что ничего сложного, но как-то тяжело шло. А когда все поняли, что это работает, это полезно и вообще единственное, на чем должны храниться данные, БД стали абсолютно обычной вещью, сейчас все ими пользуются. То же самое должно произойти и с ML-моделями.
Ф: Допустим, я пилю в гараже довольно абстрактный ИИ с применением нейросетевых алгоритмов. И вот меня не покидает ощущение, что если я хорошенько изучу, как это делается, то знание сузит круг возможностей, на которые я решусь. Потому что перестану верить в возможности технологии. У вас нет такого?
А: Общего AI для всего пока не существует. Даже комбинации технологий мало где представлены. Хороший пример нескольких технологий в связке — это Google Duplex. Он и слушает, что ты говоришь, и пытается вывести контекст, и пытается этот контекст как-то анализировать, плюс ещё генерирует речь. Это целый комплекс, но даже он остается очень узкой историей — звонит и бронирует столики. То есть выполняет задачи с понятными сценариями и наборами точных, хорошо описанных задач.
Мне кажется, сейчас та стадия развития AI и ML, когда они умеют исполнять только хорошо поставленные, хорошо изученные задачи, для которых есть достаточный набор данных. А вот более общего применения я пока не видел.
Ощущение возможностей технологии бежит впереди её реальных возможностей.
А: Да. Но я думаю, в скором времени мы увидим попытки сделать комбинацию алгоритмов и систем, которые позволят выполнять более абстрактные задачи.
Ф: Я часто слышал, что реализацию обработки изображений мы украли у зрения, у биологического механизма. Как думаешь, это так?
О: Нет, на самом деле это не так. Когда был бум нейросетей, который разгорался именно из-за сверточных нейронок, казалось, что это похоже на человеческое зрение, и что все будет именно так развиваться. Там есть конечно схожие паттерны, но сказать, что все один-в-один одинаково работает, точно нельзя. С точки зрения нейро-технологий сверточные сети — это один маленький кусочек. А есть еще очень много разных видов сетей.
Ф: Как думаешь, такой подход вообще имеет право на существование — пытаться понять естественные человеческие механизмы и копировать с них реализацию?
О: Исходя из моих наблюдений за последними трендами, сейчас наоборот технологии в deep learning отходят от этого. Там появляются всякие хитрые решения, не похожие на биологию. Но время от времени появляются попытки, статьи и так далее. Не знаю, к чему мы придём в итоге.
У deep learning есть определённые задачи — повысить качество и улучшить результат. А каким способом это получится, как у человека или не как у человека, уже неважно. Это такая свободно развивающаяся сфера, где как получится, так и получится.
А сейчас все обсуждают капсульные нейросети. Вы с ними пробовали что-то делать?
О: Пока, к сожалению, это не подходит для какого-то близкого к продакшену использования. Все ещё нет адекватных и быстрых реализаций. Те примеры, которые есть, работают с очень маленькими простыми датасетами. Я думаю, сообщество должно ещё много работы с ними провести, чтобы что-то получилось. Но идея мне кажется очень правильной, как и в целом направление развития.
Вы ведь работали еще и с фейстрекингом. Правда, что там выигрывают другие алгоритмы?
А: Ну не то чтобы выигрывают. Например, MSQRD построен на решающих деревьях с различными ухищрениями. Но уже сейчас, наверное, все переходит на нейронки. Они стали так же быстры, как и предыдущие реализации, но потенциала увеличить качество там больше. Я не так глубоко знаком с трекингом, но кажется, там есть некий сложно решаемый ботлнек. А в нейронках за счет того, что лучше научились их использовать, увеличилась мощность устройств, телефоны стали мощнее — качество растет релиз за релизом. Поэтому кажется, что за ними гораздо больше перспектив, чем за предыдущими подходами.
Что под капотом у секретного приложения
Сейчас вы на какие технологии опираетесь?
О: Сейчас мы решили отойти от стандартных подходов к построению бэкэнда и строим все на FondationDB, которая недавно появилась в опенсорсе. У нас бэк будет больше, чем у Призмы или у Vinci. Мы делаем риалтайм приложение, и это потребует работы над сложными оптимизациями.
Главное здесь, конечно, не сама FoundationDB, а ее подход — транзакционные key value хранилища, в плане настоящих транзакций, которые между серверами синхронизируются. Этот подход кажется неким будущим для бэкендов. Мы выбрали FoundationDB как самое многообещающее хранилище с такими характеристиками, будем тестировать на нем, а потом, возможно, перейдем на другое хранилище, если что-то покажет результаты лучше.
Это что касается хранения данных. Дальше у нас все на Go сейчас. Vinci тоже был на Go написан. Лёша говорил, что в Призме изначально был Питон, но потом они его тоже на Go переписали. Кажется, это хороший язык, чтобы сейчас делать бэкенд. Я вижу положительные реакции от сообщества. Гораздо проще людей нанимать, и вообще кажется, что это правильное решение.
С точки зрения инфраструктуры, мы пока попробуем на Амазоне все построить. Думаю, в этом плане экономить смысла нет и что-то другое искать. Надо сначала запуститься, понять, нужно ли экономить. Но в целом на Амазоне не такие уж высокие цены. Они их периодически индексируют.
Соответственно из-за того, что мы запускаемся на виртуальном
Мы все разбиваем на инстансы, все очень атомарно. Я перед собой поставил цель сделать не падающий бэкенд. Хочется чтобы при любом падении железа, вплоть до датацентра в амазоне, юзеры ничего не замечали.
Не буду обещать, что удастся. Но очень хочется воплотить максимально защищенную от падений архитектуру. Не уверен, что могу больше рассказать, не спалив нашу концепцию.
Мы не боимся, что кто-то скопирует ее. Просто хотим выдержать некую интригу.
Ф: Не мог бы ты подробнее рассказать про мотивацию для использования Go? Кроме того, что удобнее нанимать разрабов?
О: В целом, язык не такая важная вещь. Мы не те, кто будет делать только на таком языке и больше ни на каком. Если бы кому-то хотелось сделать на PHP, мы бы сделали на PHP. Но прямо сейчас, кажется что Go — это лучший вариант на рынке, самая прикольная вещь.
Ф: Как вообще стартапу правильнее выбирать технологии? Вот ты решил писать на «Ноде», но у тебя 5 миллионов человек и все — твоя Нода не выдерживает, а переписывать теперь очень дорого. Как это предугадывать?
Ноду не хотелось выбирать немножко по другой причине. Я бы не сказал, что Нода очень медленная. Если хорошо написан код, она будет хорошо работать.
Ф: Там пространство для оптимизаций меньше.
О: Я бы боялся делать бэк на ноде, потому что на ней очень легко допустить ошибку. Когда нужно что-то срочно сделать или исправить, могут возникнуть неприятные ситуации. И даже если использовать TypeScript, все по уму, типизацию и так далее — все равно на Ноде происходят сложные ситуации, баги, которые трудно отлавливать.
А Go — очень прямолинейный язык. Он делает ровно то, что ты пишешь. Он не дает пространство для всяких абстракций и хитростей. С ним гораздо спокойнее писать бэкенд. Можно в любой момент взять и переделать большой кусок кода, и все будет нормально. Если что-то не так, он скорее всего не скомпилится, а не так, что всё не будет работать.
Ф: То есть, ты думаешь, что статическая и строгая типизация — это определяющий фактор?
О: Она очень важна для стартапа, важнее чем производительность. Важно, чтобы можно было быстро фиксить баги, не создавая новых. Чтобы к минимуму были сведены риски.
Если использовать современные паттерны разработки на Ноде, особенно если там какая-нибудь сторонняя библиотека — то очень легко связаться с утечкой памяти. И потом найти ее целая история. А пока ты ищешь эту утечку, тратишь время, у тебя бэкенд падает десять раз в день. Вот таких вещей хочется избежать, это очень большая опасность для стартапа.
Было много приложений, которые запускались, и команда, вместо того, чтобы пилить новые фичи, поддерживать и подкреплять интерес к проекту, занималась исправлением миллиона всяких багов. Приложение работало нестабильно, и это убивало классный проект.
Каких людей вы сейчас набираете?
О: По бэкенду мы ещё не начали никого набирать. Весь бэкенд я написал сам. А так, у меня подход к найму людей немножко гугловский — не очень важно, что человек знает прямо сейчас. Главное ум, обучаемость и хорошее знание своего языка. Во времена бурного роста VK я собеседовал много людей, и всегда смотрел на это.
Новому сотруднику все равно придется потратить много времени, чтобы разобраться в архитектуре бэкэнда. Любой язык можно выучить — это не так сложно. Поэтому нам подошел бы любой бэкенд-разработчик, который просто понимает, как работают базы данных, который достаточно умен и сообразителен.
С точки зрения нейронок другие условия. Мы нанимаем людей уже с определёнными скиллами. В нашем случае кого-то учить и ждать не получится. В нейронках период обучения очень большой.
С мобильными разработчиками важно внимание к мелочам. Разработчик, который делает интерфейс должен сам замечать и исправлять многие мелочи. Иначе придётся его все время тыкать, и это съест много времени и нервов.
В VK вы не были ограниченными в ресурсах. Я это представляю как: надо видюху Tesla за 5000$ — да хоть десять. Надо сервера за 700 долларов в месяц — возьмем. Можете ли вы сейчас себе позволить такие эксперименты?
О: Не похоже, чтобы у нас были проблемы с ресурсами. Насчёт VK — это правда. Когда мы поняли, что нам нужны сервера с видяшками, нам сказали — не вопрос. Арендовали чуть ли не частный самолёт, чтобы как можно быстрее эти видяшки доставить. В этом плане всегда руки были развязаны, и железа никто не жалел.
Но с другой стороны, мы сейчас хотим использовать Amazon не потому, что нет ресурсов.
Но и частным самолётом вы сервера уже не повезёте.
Ну да. Но с другой стороны и нет нужды.
Какой смысл в стартапах
Вы хотите сохранить интригу вокруг проекта, и я обещал не лезть с расспросами. По этому поводу вспомнил одну историю. Я читал на reddit, как парень попал на закрытую презентацию одного VR хэдсета, и не мог говорить о нем из-за эмбарго. Поэтому он написал обзор своего ужина. Но с подвохом, вроде «тарелка с едой была чуть тяжелее, чем HTC Vive, но в руке лежала довольно удобно». Может расскажете про свой вчерашний ужин?
Ну мы же не железо делаем, мы делаем софт, с ужином не сравнишь.
Блин, попытка провалилась. Но то, что это будет соцсеть — вы уже говорили.
А: Наверное, это неправильно называть соцсетью. Скорее это продукт на базе некоего социального взаимодействия.
Трудно было убеждать людей в этой идее?
А: Инвесторам важно рассказать не просто идею, важно сказать, кто у тебя в команде.
Вообще вероятность того, что тебе дадут инвестиции складывается из того, кто у тебя в команде, какая у тебя идея и идешь ли ты к правильным людям.
Идти к случайным людям и просто брать у них деньги, наверное не очень правильно. Они могут неверно понять, что ты делаешь. Поднимать на ларёк деньги у людей, которые строят ракеты? Они же не понимают бизнес по продаже шавермы.
Поэтому важно идти за инвестициями к правильным людям, которые релевантны той области, в которой ты будешь работать. Я именно так делал.
Если касаться команды, для меня очень важно, чтобы человеку нравилось то, что он делает. Сложно описать идею или не сложно, зависит от того, как человек сам понимает эту область. Иногда мнение сходится, сходится вера во что-то, и с такими людьми ты работаешь.
Успех социальных платформ очень часто зависит от их образа, стереотипов, аудитории, которая вокруг них формируется — даже, возможно, больше чем от технологий. Это вас не пугает?
А: Это такой комбо-фактор, я согласен. Есть культурный момент, комбинация того, как ты это преподносишь, как рассказываешь рынку. Зачем это нужно, как оно делает жизнь лучше. Многие говорят, что они решают проблемы своими продуктами. Я склоняюсь к тому, чтобы делать лучше то, что уже сделано, упрощать.
Есть комбинация подачи и исполнения. А дальше идет проверка гипотез — верно ли твое предположение. Любой продукт основан на некоем предположении. Возьмём Dropbox: гипотеза в том, что людям нужно хранить файлы в облаке, места на компьютере нет, и нужно, чтобы везде был доступ. Они её сделали и проверили. Оказалось это кому-то нужно, люди начали хранить файлы в облаке. Гипотеза подтвердилась.
Наша гипотеза тоже в том, что это нужно миру. Я не думаю, что здесь важен какой-то социальный фактор, потому что он уже зашит в гипотезу.
Каждая успешная социальная вещь — это ещё и большая ответственность, даже влияние на мир. Вспомнить только недавнюю историю, как Цукерберг отчитывается перед сенатом. Вы готовы к такой ответственности, если все выстрелит?
А: Сложно сказать. Должно сначала выстрелить. Гипотеза должна подтвердиться и пережить стадию роста. Цукерберг, очевидно, отвечал перед сенатом не в первый год своей работы, и даже не в третий, и не в пятый. Наверное, к тому моменту мы научимся, если такая возможность представится. Хотелось бы, чтобы представилась.
Олег, я все возвращаюсь к твоему докладу про Vinci. Если поменять его структуру, можно добиться кое-какого комичного эффекта. Вот ты полчаса рассказываешь о передовых технологиях, инженерных решениях, архитектурах, дорогом железе — а потом в конце такой: «вот для чего мы все это делали». И на фоточке просто появляются узоры.
Отсюда вопрос — вам не кажется, что лучшие умы современности занимаются пустяками?
(Дальше были очень очень долгие семь секунд тишины. Оказалось, что у Олега пропала связь, поэтому вступил Алексей)
А: Мне кажется, это не совсем так. IT-индустрия не так давно появилась. Она сформировалась полностью только к концу восьмидесятых. Появился интернет, как некий инфраструктурный проект, выросший из военных технологий. На основе этого зародилась новая область, и в текущий момент мы видим, что она проникает во все сферы жизни. Это рождает большое количество возможностей, но возрастает порог входа.
Чтобы запустить простую на твой взгляд вещь, с простым результатом — картиночку с узором — тебе требуется знать весь стек технологий, как это все работает, как устроен маркетинг, дистрибуция.
И утверждать, что лучшие умы борются за какую-то липовую ценность, наверное, не совсем правильно. Просто порог входа требует большего количества знаний и умений. Сложно понять заранее, где ценность на самом деле будет рождена.
Facebook в начале не был гениальной технической идеей. Просто сверстали сайтик, сделали какие-то базовые вещи, и оно пошло-поехало. А потом уже возникают технические сложности и миллионы пользователей.
Я думаю так кажется от того, что выросла отрасль, и простые вещи стало делать сложнее чем раньше.
(Здесь Олег появился и согласился с Алексеем).
Для чего вы делаете стартапы?
О: Мне просто нравится делать такие приложения. Все развивается, и мы получаем большой и хороший эффект для индустрии в целом.
А почему мы все не занимаемся запуском космических ракет, а делаем какие-то социальные приложения? Каждый должен заниматься тем, что ему нравится. Мне и Алексею нравятся социальные приложения, и мы должны заниматься ими. Если кому-то нравится запускать ракеты, то в меру возможности нужно заниматься этим.
Просто не стоит недооценивать социальные приложения. На самом деле это очень важная вещь, она оказывает огромное влияние на общество.
А: Я согласен с Олегом, важно делать, что нравится. Прозвучит как клише, но я хочу сделать жизнь немного лучше, хочу помочь сделать какие-то рутинные вещи быстрее, лучше, чтобы у людей появились новые возможности. Например Instagram дает вам возможность фоточку запостить, а раньше этого не было. Вы сами видите как влияет Instagram на нашу с вами жизнь. Раньше это казалось незамысловатой вещью, и вот какой она теперь стала.
О: Instagram, наверное, не лучший пример. Хорошим примером будет Facebook. Не в том плане, что мы сейчас делаем ещё один Facebook. Хочется думать, что мы делаем довольно полезное приложение, которые точно несет больше социальной пользы, чем Instagram.
Если постоянно делать мир все лучше и лучше, не приведет ли это в итоге к обратному эффекту?
Никто не знает. Знал бы я, что это приведет к плохому — может и не делал бы. А может и делал. Никто не знает будущего.
Автор: arttom