В 2017 году Василий Шинкоренко и Максим Абрамчук создали сервис Storyline, где можно разрабатывать приложения для голосового помощника от Amazon не используя программирование. Парни участвовали в двух акселераторах в Кремниевой долине — Boost VC и Y Combinator. Весной 2018 они получили $770 тысяч инвестиций.
Мы с fillpackart позвонили им и обо всем расспросили — что под капотом сервиса, каково быть разработчиком в стартапе, как им жилось в долине и как скоро голосовые ассистенты изменят мир.
![](https://habrastorage.org/r/w780q1/webt/qi/hm/uw/qihmuwqv9_mpeuyc1kwmt3ht5ma.jpeg)
— Вы сейчас Беларуси?
Василий: — Да, 8 месяцев были в Калифорнии, и в апреле прилетели обратно в Минск, как только прошли YC. Еще там мы обдумывали варианты, как лучше строить компанию. Было много опций, но решили вернуться в Минск.
В первую очередь, конечно, из-за ресурсов. В Минске намного проще и дешевле искать людей, чем в долине. Там ты конкурируешь с большими компаниями, с крутыми стартапами, которые выпускаются каждый год. А здесь мы единственные, кто прошел YC в истории Беларуси. Здесь нам не нужно поднимать настолько много денег, чтобы платить инженерам по 200 тысяч в год. Мы сейчас на стадии, где работаем 12 часов в сутки. Нет разницы, где безвылазно работать. Поэтому мы выбрали Минск.
![](https://habrastorage.org/r/w780q1/webt/nn/1i/_e/nn1i_emmi85yuc9coykqovclqh8.jpeg)
Максим Абрамчук и Василий Шинкоренко
— Офис уже сняли, обустроились?
В: — Да, да! У нас чудесный офис на четвёртом этаже, с видом на реку, в центре города.
— Большую команду планируете набирать?
В: — Сейчас нас 6 человек. К концу года будет 10. А дальше все очень сильно зависит от метрик. Чтобы достичь тех целей, которые мы себе поставили на год, нам нужно будет примерно человек 10-15.
— Я не то чтобы очень в теме, но пару лет жил в Минске и краем уха слышал, якобы всех ребят там забрали в Wargaming, EPAM и за границу. Не столкнулись с такой проблемой?
В: — Да, но фишка в том, что продуктовых компаний все равно очень мало — особенно стартапов. А стартапов, которые более-менее адекватные, что-то делают и не похожи на полудохлых зомби по пальцам одной руки пересчитать. Я не считаю, что пять компаний, это большая конкуренция.
— Вы уже чувствуете, что превращайтесь в бизнес?
В: — Можно сказать, что мы уже нащупали нечто, но не могу говорить, что именно это приведёт нас к глобальному успеху.
До того, как продукт появился, приложения под Алексу делали только разработчики, писали код, нанимали компании. Мы по сути создали новый сегмент рынка — теперь люди без технического бекграунда тоже их делают. И теперь этот сегмент растет, и мы сейчас растем, и рынок смарт-спикеров в целом растёт, количество приложений от юзеров растет. Мы уже немножко зарабатываем, пока ещё не профит — до него далеко, но уже где-то на горизонте.
Я думаю, пока все люди влезают в одну комнату, это больше продукт, чем бизнес. Вот когда перевалишь за 15-20 человек, тогда нужно будет думать о процессах и многом другом.
— Когда вы получили инвестиции, чего было больше — эйфории или страха, что не справитесь?
В: — Наверное, было ощущение майлстоуна. Большинство стартапов не проживают и первые полгода. А когда ты прожил, сделал штуку, которая кому-то интересна, люди ее используют, и, самое главное, реально любят и готовы платить — тогда тебе немного понятнее, что делать дальше.
Ну то есть, не было такого ощущения, что на голове плясать и тапками кидаться. Просто понимание, что сейчас начинается следующий шаг, и в нем свои цели, свои KPI. В YC очень помогали с этим, говорили, как продукт должен выглядеть через год, и что для этого нужно делать. И вот мы делаем.
![](https://habrastorage.org/r/w780q1/webt/z-/qa/gh/z-qaghvgkekc4uhlqzsa-qnb4jy.jpeg)
— Расскажите, чем занимались в Беларуси до отъезда долину?
В: — Я достаточно давно сам писал код, но не очень хорошо. Потом понял, что мне лучше даются коммуникации, всякие бизнесовые штуки, маркетинг. Начал заниматься этим и случайно попал в сферу диалоговых интерфейсов — боты в Телеграме, в других мессенджерах, движки, фреймворки для ботов. Крутились вокруг этого. В 2015-м году мы с ребятами делали несколько продуктов и даже поднимали какие-то деньги.
Вместе с Максом мы начали делать один продукт. Хоть он не удался, но опыт мы получили. Затем вместе построили агентство из 7 человек. А к лету 17-го года ушли обратно в продукты.
— Макс, а ты?
Максим: — Программировать начал на первом курсе. У меня была какая-то такая установка в голове, что пока я готовлюсь к универу — учу физику, математику и всякие штуки, а за программирование принципиально не берусь. Как только увидел себя в списках БГУИР — сразу взялся, начал С++, всякие другие штуки. Первые несколько месяцев тупил, было очень тяжело. Потом узнал, что есть веб, начал втыкать во фронтенд. Увидел Ruby, пару месяцев писал на нем. В общем, метался-крутился-вертелся и остановился на бэкенде.
Поставил себе цель найти работу. За несколько месяцев поднял Ruby, SQL, сделал пару тестовых. В одну компанию меня взяли, и я там проработал полгода. Нас было человек пять, и мы просто делали на аутсорсе разные продукты. Потом пошёл в другую компанию, там поработал где-то года полтора. И тогда как раз запустилась платформа ботов в телеграмме. Не помню почему, но я был так вдохновлён от этого всего. Сверстал за пару дней какой-то сайтик (он может до сих пор ещё работает). Мы стали делать ботов на заказ.
И вот на волне этого всего мы с Васей познакомились и начали делать продукты.
Филл: — То есть, ты по стеку стеку больше бэкендер?
М: — Ну бэкендер — это для меня какой-нибудь скаллист или джавист. А поскольку я бэкенд пишу на Ruby, там есть где разгуляться. 30-40% времени приходилось фронт писать, поэтому, можно сказать, я фулстек. Восемь или девять месяцев, пока мы не взяли первого разработчика, весь Storyline писал я сам — и фронт, и бэк и devops и все остальное.
Ф: У тебя нет желания перестать писать код и стать чистым лидом?
М: — Я люблю писать код и управлять разработчиками тоже нравится, но фуллтайм я бы этим не занимался. У меня есть желание заниматься именно продуктом. Тестировать всякие гипотезы, смотреть аналитику, писать роудмэпы, общаться с пользователями и так далее. Это супер интересно. Возможно в будущем, когда мы наберём побольше ребят, и у них экспертиза будет посильнее, я смогу им все передать. Но пока не знаю, когда это осуществится.
Ф: Макс, идея Storyline казалась тебе интересной с точки зрения реализации?
М: — Я, на самом деле, не фанатик особо попрограммировать ради программирования. Мне нравилась сама идея. Да, было прикольно писать интерактивный editor приложений, интересно было пилить новые фичи, поддерживать старые, фиксить баги, растить метрики. А сейчас к нам пришел фронтендер, и оптимизировать вместе канвас очень интересно — чтобы быстрее рендерился, открывался у юзеров, не лагал.
![](https://habrastorage.org/r/w780q1/webt/dh/up/b_/dhupb_ezglzkpnbixbysukxvi80.jpeg)
Ф: А до этого ты не работал с канвасом и двухмерной графикой?
М: — Да, не работал. Но это я так называю — канвас. На самом деле мы используем d3.js и SVG, потому что писать на канвасе было бы ещё сложнее. На Canvas нам было бы нужно говорить «Возьми вот эту точку вот с такими координатами, нарисуй линию до каких-то координат, с такой-то толщиной». А чтобы нарисовать блок с заливкой, с тенями и чтобы можно было drag-and-drop-ать ушло бы очень много времени. Поэтому выбрали SVG, и особых проблем по перформансу нет.
Ф: — Много сил ты тратишь на создание прототипов?
М: — Не знаю, хорошо это или плохо, но я делаю их довольно быстро. Почему мы так быстро и двигались — у нас от идеи до минимальной реализации уходил буквально день или полтора.
Конечно, сейчас я наступаю на грабли из-за этого, поэтому приходится переходить к более стандартному процессу. Все-таки у нас уже не сотни юзеров, а десятки тысяч. Они находит какие-то специфичные баги, юзкейсы, которые мы не предусматривали. Поэтому приходится замедляться, добавлять тестирования — мануальные, автоматизированные.
Но это очень кайфово, когда ты можешь за пару часов придумать, сразу сделать и тут же получить фидбэк. По-моему этого не хватает в сознании многим разработчикам. Слишком многие пилят чтобы пилить, неделями и месяцами. А по мне это очень кайфово — придумать, быстро сделать и показать.
— Когда прототип получился, ты его допиливаешь или начинаешь с нуля переписывать?
М: — Когда мы запустились, у нас была напряженная ситуация — сразу начали приходить юзеры, надо было показать, что есть трафик. Тогда мы не стали переписывать все, а решили использовать прототип дальше и продолжили пилить фичи поверх него.
Изначально был такой концепт: ты пишешь текст, который говорит Alexa, ставишь два слэша и пишешь текст который говорит юзер. Потом нужно было извращаться, всякие переходы делать, переменные и по сути выходил голый текст, который тяжело дебажить. А юзеры у нас не технические. Они открывали скобку, забывали её закрыть, и все ломалось. Но тогда мы шли в YC, нас очень пушили — «Давайте! Давайте!». Юзеры росли, баги росли. Кажется, мы так зависли с этим прототипом месяца на три.
Ф: — Если мы с друзьями будем делать проект, мы выберем технологии, которые знаем, а не те, что могли лучше бы подойти. У вас тоже так было?
М: — Да, в принципе так. Но нам очень здорово повезло, потому что JS и Ruby это такой отличный стек для стартапа. В Ruby можно очень быстро все запилить, и я бы не сказал, что все становится плохо потом. Если, конечно, не достигаешь уровня Twitter — поэтому Twitter и переписали с Ruby на Scala.
Пока ты стартап, тебе полностью хватит Ruby on Rails. Но если бы я писал на Java, наверное, не все было бы так радужно.
Ф: Здесь в том и проблема, что ты можешь сделать хорошо только на чем умеешь. А JS у вас чистый используется?
М: — У нас обычный JavaScript и React с Redux
Ф: — А почему выбрали именно их?
М: — Когда мы начали писать Storyline, я React не использовал. До этого я писал на Angular 1.4, 1.5. Немножко тыкал второй Angular, который на TypeScript. Когда мы начали Storyline, React уже выиграл войну, поэтому было перспективнее писать на нем (и проще, как мне кажется уже сейчас). Поэтому я просто загуглил React Tutorial, пару дней в него повтыкал, завязал дефолтный генератор от Дэна Абрамова, и там был уже Redux. Сейчас не жалею, хотя у меня и не было особо опыта с другими библиотеками.
![](https://habrastorage.org/r/w780q1/webt/gf/zb/sd/gfzbsdzzioyop6lmmalq6r-92dg.jpeg)
Ф: — Можешь в паре слов сказать про архитектуру?
М: — Все довольно просто, у нас Single-page application на React. Рельсы используются для двух вещей. Первое, это апишка для клиентского приложения. Второе — хостинг для скиллов, которые создаются юзерами через Storyline.
Фронт состоит из двух больших компонентов. Первая это Dashboard и все внутри проекта, а второе — редактор скилла. Он уже написан с вкраплениями d3.js. Там рисуются блоки — надо, чтобы все это было быстро, супер интерактивно и красиво, чтобы можно было стрелочки всякие рисовать, анимации и так далее. Нам это было супер важно, потому что у нас по сути тул для визуального программирования.
А Alexa, можно сказать, работает как обычный бот в Telegram или Facebook. Ты ей скармливаешь какой-то эндпоинт, какой-то сервачок. Как только юзер начинает говорить с Алексой, она шлет тебе реквесты. Ты работаешь как прокси — тебе приходит запрос, ты на него отвечаешь. Алекса твой ответ форматирует и его произносит. Ничего сверхъестественного — обычное монолитное рельсовое приложение, все работает на Amazon Web Services. Мы стараемся делать все стандартно — React, Redux, Ruby on Rails — так проще найти разработчиков.
Ф: — Какая часть сейчас кажется самой сложной?
М: — И технически, и концептуально сложной кажется реализация кроссплатформенности. Сейчас мы поддерживаем только Алексу, потом будем и Google home, и Cortana, и прочие штуки. Честно говоря, к этому мы ещё никак технически не подготовлены. Думаю, там будут большие проблемы, и это будет огромный челлендж.
Ф: — Можешь сказать, сколько сейчас строк кода в самом большом файле на проекте?
М: — На фронтэнде наверное строк 700 — есть там один файл. На бэкенде, наверное поменьше (я просто на Ruby лучше пишу). Там может 250-300.
— В долине классное сообщество, всем всем помогают. А можно ли принести свой код кому-то из топов разработки, показать, попросить совета?
М: — Я думаю, это будет выглядеть немного странно. У тех же чуваков из Slack можно попросить какого-то совета, на который не существует правильного ответа. Можно посидеть, пофилософствовать. Они могут дать только совет со своей колокольни.
Но с программированием — ну не знаю. Все же можно нагуглить, протестить, найти на гитхабе. Не думаю, что какой-то супер крутой чувак будет против, но это не особо имеет смысл.
В: — Это имеет смысл в специфичных областях. Если ты делаешь какую-то штуку на машинном обучении, и есть чувак, который 20 лет этим занимался — то да, это будет супер полезно.
Ф: — Макс, как думаешь, каково быть разработчикам в стартапе по сравнению с другими сферами?
М: — Я знаю только, каково быть фаундером, как разработчик я до этого в стартапах не работал. Сейчас я не считаю себя именно разработчиком, потому что приходится все меньше и меньше писать код и больше погружаться в кучу разных процессов — чуть ли не до покупки воды в офис.
Но все равно разработчиком в стартапе быть очень круто. Ты не просто пилишь фичи, который тебе заказчик сказал, а сам можешь на них влиять, придумывать. Но это и очень большой стресс. Все хотят быстро, и ты сам тоже. В аутсорсе ты можешь сказать «я потратил на задачу 10 часов», хотя на самом деле потратил 4, и все будет окей. Можешь просто сидеть и перебирать технологии, переписывать один класс по многу раз, тестами все покрывать.
А тут ты сам контролируешь свое время. Всегда есть интерес сделать быстрее, лучше. В стартапе нужно балансировать между кучей разных штук.
Ф: — Приходилось как-то подтверждать свой скилл, чтобы получить инвестиции?
М: — Это может звучать грустно и обидно, но, мне кажется, роль технологий была особо не важна. Думаю, у 95% стартапов так же, если мы не говорим про сложные технологические компании, у которых суть продукта это технологии.
А у всех остальных технологии отходят на второй план. Написать какую-то штуку или приложение — много ума не надо. Есть много фреймворков, туториалов, это все довольно постижимо и просто. А найти годную идею и годную аудиторию, успеть сделать продукт, понять кому он нужен — в разы-в разы сложнее.
Мне кажется, роль технологий в стартапах переоценена в головах людей. Стек, быстро или медленно ты пишешь код — это все не так важно. Гораздо важнее твоя стратегия, как ты находишь решения.
![](https://habrastorage.org/r/w780q1/webt/7p/ww/fx/7pwwfxrrfyjzo7hs0udqr2uwiia.jpeg)
— На что вообще больше смотрят? На саму идею или вашу способность за нее ухватиться и довести до конца?
В: — YC в первую очередь смотрит на фаундеров — сколько единиц работы вы можете выполнить за единицу времени. Главное насколько быстро ты можешь делать, тестировать, понимать что где не работает и делать дальше.
Второе, на что они смотрят — это рынок. Если ты делаешь очень быстро, но на плохом рынке — далеко ты не уплывешь. На очень больших рынках, как правило, высокая конкуренция, поэтому они пытаются найти маленькие но быстро растущие. У нас, я считаю, был идеальный тайминг. Мы сделали продукт сразу как только появилась возможность его сделать. А тайминг это одна из самых важных штук.
И третье — это сам продукт. Им важно, чтобы люди его полюбили. Лучше делать продукт, который любят сотни, чем продукт, который нравится тысячам. Если он просто нравится, то будет трудно сконвертировать. Намного лучше найти маленькое сообщество. Мы выросли с нуля до 14 тысяч юзеров органически просто потому, что одни люди рассказывали про нас другим.
Буквально на прошлой неделе в нашей группе на Facebook написал человек со своим real estate бизнесом. Сейчас популярно явление, когда люди смотрят дома не с риелтором, а сами. Он хотел сделать скилл для Alexa, поставить во всех домах по девайсу, чтобы клиенты могли сами спрашивать у нее обо всем. Он обратился в агентство, чтобы ему разработали такой скилл, и там попросили у него $45 тыс.
Он расстроился и пошёл искать, как сделать такую вещь самому. Нашел наш продукт и сделал эту штуку — за которую агентство просило 45 тысяч — буквально за несколько дней. И вот он купил нашу платную версию, хотя ему даже не были нужны фичи, которые там есть (хороший повод для нас подумать над новыми сегментами). Просто он полюбил продукт и поддержал нас.
— Тебе интересна была тема лингвистики — научить компьютер говорить, все такое?
В: — Да, это очень прикольно. Я помню в Стартреке был комп, с которым они говорили. Это было забавно, но казалось таким футуристичным. И вот это уже происходит на самом деле.
Есть история. Я еду с работы на тренировку, сажусь в убер, а там водитель с кем-то разговаривает. Смотрю — в машине никого нет. Оказалось, он говорил с Алисой в Яндекс Навигаторе. И вот сзади его подпер какой-то чувак. Водитель стал ругаться, а Алиса подумала, что он на неё ругается — говорит ему, «да как вы со мной разговариваете?». Водитель такой, «заткнись там, вообще не до тебя». Это выглядело настолько реально. Думаешь, что будущее где-то далеко, а оно здесь, уже наступило.
Конечно то, насколько девайсы и помощники могут контекстно отвечать, ещё далеко от идеала. Но распознавание речи все лучше. Если сейчас Алекса верно понимает 8 слов из 10 (по моим ощущениям), то через несколько лет будет понимать все 10. Это очень сильно повлияет на то, как люди будут разговаривать со своим девайсом. Вот Siri супер тупая, не понимает вообще ничего, и это сильно выводит из себя. Голосовой помощник такой продукт — чтобы он хорошо работал, должна быть хороша сама технология.
— Тебе не хотелось бы привязать какое-то обучение, чтобы алекса понимала не буквально, что ты ей говоришь, а использовала контекст?
В: — Частично это работает в Storyline сейчас. Например, есть интенты YES/NO, и к ним автоматически добавляется куча синонимов на стороне Амазона. Если ты задаешь Yes, Алекса поймёт Ok, Fine, True и так далее. Все это делается, на уровне Алексы, а мы используем ее как интерфейс.
— Когда вообще машины заговорят лучше чем мы?
В: — Это вопрос про искусственный интеллект в целом. Тест Тьюринга сейчас вполне возможно пройти, специально натренировать систему под узкую задачу. Но говорить лучше человека — это значит понимать контекст, эмоции, интонации, комбинировать все, чтобы выдавать ответ. Я не знаю, мне очень трудно это представить.
Я могу быть полностью неправ, но мне кажется не раньше, чем лет через 10-15.
Мы с fillpackart позвонили им и обо всем расспросили — что под капотом сервиса, каково быть разработчиком в стартапе, как им жилось в долине и как скоро голосовые ассистенты изменят мир.
![](https://habrastorage.org/webt/qi/hm/uw/qihmuwqv9_mpeuyc1kwmt3ht5ma.jpeg)
— Вы сейчас Беларуси?
Василий: — Да, 8 месяцев были в Калифорнии, и в апреле прилетели обратно в Минск, как только прошли YC. Еще там мы обдумывали варианты, как лучше строить компанию. Было много опций, но решили вернуться в Минск.
В первую очередь, конечно, из-за ресурсов. В Минске намного проще и дешевле искать людей, чем в долине. Там ты конкурируешь с большими компаниями, с крутыми стартапами, которые выпускаются каждый год. А здесь мы единственные, кто прошел YC в истории Беларуси. Здесь нам не нужно поднимать настолько много денег, чтобы платить инженерам по 200 тысяч в год. Мы сейчас на стадии, где работаем 12 часов в сутки. Нет разницы, где безвылазно работать. Поэтому мы выбрали Минск.
![](https://habrastorage.org/webt/nn/1i/_e/nn1i_emmi85yuc9coykqovclqh8.jpeg)
Максим Абрамчук и Василий Шинкоренко
— Офис уже сняли, обустроились?
В: — Да, да! У нас чудесный офис на четвёртом этаже, с видом на реку, в центре города.
— Большую команду планируете набирать?
В: — Сейчас нас 6 человек. К концу года будет 10. А дальше все очень сильно зависит от метрик. Чтобы достичь тех целей, которые мы себе поставили на год, нам нужно будет примерно человек 10-15.
— Я не то чтобы очень в теме, но пару лет жил в Минске и краем уха слышал, якобы всех ребят там забрали в Wargaming, EPAM и за границу. Не столкнулись с такой проблемой?
В: — Да, но фишка в том, что продуктовых компаний все равно очень мало — особенно стартапов. А стартапов, которые более-менее адекватные, что-то делают и не похожи на полудохлых зомби по пальцам одной руки пересчитать. Я не считаю, что пять компаний, это большая конкуренция.
— Вы уже чувствуете, что превращайтесь в бизнес?
В: — Можно сказать, что мы уже нащупали нечто, но не могу говорить, что именно это приведёт нас к глобальному успеху.
До того, как продукт появился, приложения под Алексу делали только разработчики, писали код, нанимали компании. Мы по сути создали новый сегмент рынка — теперь люди без технического бекграунда тоже их делают. И теперь этот сегмент растет, и мы сейчас растем, и рынок смарт-спикеров в целом растёт, количество приложений от юзеров растет. Мы уже немножко зарабатываем, пока ещё не профит — до него далеко, но уже где-то на горизонте.
Я думаю, пока все люди влезают в одну комнату, это больше продукт, чем бизнес. Вот когда перевалишь за 15-20 человек, тогда нужно будет думать о процессах и многом другом.
— Когда вы получили инвестиции, чего было больше — эйфории или страха, что не справитесь?
В: — Наверное, было ощущение майлстоуна. Большинство стартапов не проживают и первые полгода. А когда ты прожил, сделал штуку, которая кому-то интересна, люди ее используют, и, самое главное, реально любят и готовы платить — тогда тебе немного понятнее, что делать дальше.
Ну то есть, не было такого ощущения, что на голове плясать и тапками кидаться. Просто понимание, что сейчас начинается следующий шаг, и в нем свои цели, свои KPI. В YC очень помогали с этим, говорили, как продукт должен выглядеть через год, и что для этого нужно делать. И вот мы делаем.
![](https://habrastorage.org/webt/z-/qa/gh/z-qaghvgkekc4uhlqzsa-qnb4jy.jpeg)
— Расскажите, чем занимались в Беларуси до отъезда долину?
В: — Я достаточно давно сам писал код, но не очень хорошо. Потом понял, что мне лучше даются коммуникации, всякие бизнесовые штуки, маркетинг. Начал заниматься этим и случайно попал в сферу диалоговых интерфейсов — боты в Телеграме, в других мессенджерах, движки, фреймворки для ботов. Крутились вокруг этого. В 2015-м году мы с ребятами делали несколько продуктов и даже поднимали какие-то деньги.
Вместе с Максом мы начали делать один продукт. Хоть он не удался, но опыт мы получили. Затем вместе построили агентство из 7 человек. А к лету 17-го года ушли обратно в продукты.
— Макс, а ты?
Максим: — Программировать начал на первом курсе. У меня была какая-то такая установка в голове, что пока я готовлюсь к универу — учу физику, математику и всякие штуки, а за программирование принципиально не берусь. Как только увидел себя в списках БГУИР — сразу взялся, начал С++, всякие другие штуки. Первые несколько месяцев тупил, было очень тяжело. Потом узнал, что есть веб, начал втыкать во фронтенд. Увидел Ruby, пару месяцев писал на нем. В общем, метался-крутился-вертелся и остановился на бэкенде.
Поставил себе цель найти работу. За несколько месяцев поднял Ruby, SQL, сделал пару тестовых. В одну компанию меня взяли, и я там проработал полгода. Нас было человек пять, и мы просто делали на аутсорсе разные продукты. Потом пошёл в другую компанию, там поработал где-то года полтора. И тогда как раз запустилась платформа ботов в телеграмме. Не помню почему, но я был так вдохновлён от этого всего. Сверстал за пару дней какой-то сайтик (он может до сих пор ещё работает). Мы стали делать ботов на заказ.
И вот на волне этого всего мы с Васей познакомились и начали делать продукты.
Филл: — То есть, ты по стеку стеку больше бэкендер?
М: — Ну бэкендер — это для меня какой-нибудь скаллист или джавист. А поскольку я бэкенд пишу на Ruby, там есть где разгуляться. 30-40% времени приходилось фронт писать, поэтому, можно сказать, я фулстек. Восемь или девять месяцев, пока мы не взяли первого разработчика, весь Storyline писал я сам — и фронт, и бэк и devops и все остальное.
Ф: У тебя нет желания перестать писать код и стать чистым лидом?
М: — Я люблю писать код и управлять разработчиками тоже нравится, но фуллтайм я бы этим не занимался. У меня есть желание заниматься именно продуктом. Тестировать всякие гипотезы, смотреть аналитику, писать роудмэпы, общаться с пользователями и так далее. Это супер интересно. Возможно в будущем, когда мы наберём побольше ребят, и у них экспертиза будет посильнее, я смогу им все передать. Но пока не знаю, когда это осуществится.
Как мы попали в долину и провалили первую идею
В Минск приехал наш друг, который когда-то участвовал в Boost VC. Мы встретились, показали ему проект, который делали для одного кафе. Он сказал: «Прикольная штука! Не думали это превратить в отдельный продукт для кафешек?»
Мы такие, «давай попробуем». Оказалось, он хорошо знает Адама Дрейпера из Boost VC, и говорит: «подайте заявку туда и если сможете пройти, съездите в долину. Это будет интересней чем то, что вы сейчас делаете с агентством». Мы такие окей, заполнили заявку сделали кое-какой лэндинг. Сначала прошли отбор, потом интервью по скайпу с Адамом. Нам сделали оффер (BoostVC обычно дает 25-50 тысяч за 7% компании). Мы его приняли и поехали в долину с продуктом для ресторанов.
Адам Дрейпер
У Макдональдса и всяких фастфудов стоят терминалы для самообслуживания. Они достаточно дорогие. У большинства средних кафешек нет возможности такие поставить, но и не хочется нанимать много кассиров. Мы придумали, как такие терминалы заменить легким способом — заказывать еду через ботов.
Люди через мессенджер смогут делать заказы, или — если это кафешка, рядом с работой — узнать, нет ли сейчас очереди, чтоб не тратить время и не спускаться зря. То есть делаешь заказ, приходишь в удобное время, ну и скидку получаешь за это. А для владельцев и менеджеров основной поинт — это автоматизация.
Вот мы приехали, попробовали с этими людьми договориться. Но оказалось, маленьким кафешкам автоматизация не нужна — им нужны клиенты. А большим компаниям пофиг, что терминал самообслуживания стоит десяточку. Если ты никто, и звать тебя никак — почти без шансов, что большой клиент обратит на тебя внимание.
Я нашел одного чувака, который делает планшеты для заказов в ресторанах. Он прошел через YC, а потом три года работал над сделкой с Wendy’s. Мы поняли, что у нас ничего вообще не сработает, мы ничего в ресторанах не понимаем и три года в таком режиме не проживем.
Начали думать, в чем шарим. Когда мы делали ботов на заказ, я всегда рисовал такие майндмэпы — диаграммы, как будет идти диалог, какие строчки будет говорить юзер, какие бот. Огромный чат со стрелочками, который мы показывали клиентам для утверждения. И вот подумали, как было бы классно одной кнопкой переносить эту диаграмму в реального бота. И чтобы для этого не надо было кодить, дергать разработчиков, если клиент пришлет правки.
Так и решили переключиться на Storyline.
Ф: Макс, идея Storyline казалась тебе интересной с точки зрения реализации?
М: — Я, на самом деле, не фанатик особо попрограммировать ради программирования. Мне нравилась сама идея. Да, было прикольно писать интерактивный editor приложений, интересно было пилить новые фичи, поддерживать старые, фиксить баги, растить метрики. А сейчас к нам пришел фронтендер, и оптимизировать вместе канвас очень интересно — чтобы быстрее рендерился, открывался у юзеров, не лагал.
![](https://habrastorage.org/webt/dh/up/b_/dhupb_ezglzkpnbixbysukxvi80.jpeg)
Ф: А до этого ты не работал с канвасом и двухмерной графикой?
М: — Да, не работал. Но это я так называю — канвас. На самом деле мы используем d3.js и SVG, потому что писать на канвасе было бы ещё сложнее. На Canvas нам было бы нужно говорить «Возьми вот эту точку вот с такими координатами, нарисуй линию до каких-то координат, с такой-то толщиной». А чтобы нарисовать блок с заливкой, с тенями и чтобы можно было drag-and-drop-ать ушло бы очень много времени. Поэтому выбрали SVG, и особых проблем по перформансу нет.
Ф: — Много сил ты тратишь на создание прототипов?
М: — Не знаю, хорошо это или плохо, но я делаю их довольно быстро. Почему мы так быстро и двигались — у нас от идеи до минимальной реализации уходил буквально день или полтора.
Конечно, сейчас я наступаю на грабли из-за этого, поэтому приходится переходить к более стандартному процессу. Все-таки у нас уже не сотни юзеров, а десятки тысяч. Они находит какие-то специфичные баги, юзкейсы, которые мы не предусматривали. Поэтому приходится замедляться, добавлять тестирования — мануальные, автоматизированные.
Но это очень кайфово, когда ты можешь за пару часов придумать, сразу сделать и тут же получить фидбэк. По-моему этого не хватает в сознании многим разработчикам. Слишком многие пилят чтобы пилить, неделями и месяцами. А по мне это очень кайфово — придумать, быстро сделать и показать.
— Когда прототип получился, ты его допиливаешь или начинаешь с нуля переписывать?
М: — Когда мы запустились, у нас была напряженная ситуация — сразу начали приходить юзеры, надо было показать, что есть трафик. Тогда мы не стали переписывать все, а решили использовать прототип дальше и продолжили пилить фичи поверх него.
Изначально был такой концепт: ты пишешь текст, который говорит Alexa, ставишь два слэша и пишешь текст который говорит юзер. Потом нужно было извращаться, всякие переходы делать, переменные и по сути выходил голый текст, который тяжело дебажить. А юзеры у нас не технические. Они открывали скобку, забывали её закрыть, и все ломалось. Но тогда мы шли в YC, нас очень пушили — «Давайте! Давайте!». Юзеры росли, баги росли. Кажется, мы так зависли с этим прототипом месяца на три.
Как мы запустили прототип и на ходу подменяли его продуктом
Мы сделали первую супер примитивную версию продукта и начали всем ее показывать. К этому времени мы уже собрали коммьюнити, сделали телеграм канал. Спросили «посмотрите такую штуку, что думаете?» Нам написало очень много чуваков. Со всеми мы созвонились, поспрашивали и поняли — то, что они хотят, намного сложнее того, что делаем мы.
Нам помог чувак из Slack — Амир Шеват, сейчас он VP по Developer Experience в Twitch. Еще он шарит в ботах, даже написал одну из самых популярных книг по теме «Designing Bots». Мы приехали к нему в офис Slack, показали наш «прототип» — на тот момент это была картинка в Sketch.
Амир Шеват
Он говорит «ну прикольно, а как вы хотите это дальше развивать?» Мы говорим, пойдём по мессенджерам — Telegram, Facebook. Но ещё подумали, что это круто ложится на голосовые штуки, типа Alexa, Cortana, Google Assistant потому что там нет никаких контролов, менюшек. Есть только то, что юзер говорит, и что девайс. Амир говорит, «прикольно, попробуйте сделать первую версию. Будет интересно». И в тот же день мы увидели, что Amazon только что открыл api для Alexa, которое позволяло программно создавать скиллы (минуя амазоновскую консоль разработчика).
Мы начали делать продукт, но быстро упёрлись в проблему. Супер сложно было сделать в приложении канвас — штуку, где можно тягать блоки, что-то писать.
Приближался демо день в Boost VC. До него оставался месяц, а работы на канвас нужно было примерно столько же. Сидели ночью в комнате, где жили, и думали — «Блин, что-то мы вообще не успеваем. Походу запуститься не успеем».
И тут мы нашли сервис для майндмэпов Coggle, заимплементили его за пару часов айфреймом, быстро прикрутили пару кнопок и залили. Получается, когда ты регался в Storyline, ты видел Coggle (но мы его логотипчик и контролы просто полоской цвета фона заклеили). Юзеры делали диаграммы в нем, а мы брали их JSON и переделывали в скилл для Alexa.
И вот собрали эту штуку, сняли маленький видосик на телефон, как это работает и запустили в несколько групп на Facebook, связанных с Alexa. На следующий день у нас уже было больше сотни лайков, комментариев. Все просили дать доступ. Оттуда и пришла пара сотен первых юзеров.
Поскольку Coggle был по сути текстом, и там нельзя было создавать объекты, картинки, всякие штуки — стояла большая таска мигрировать все юзерские объекты из майндмэпа в структуры. У нас тогда даже базы данных не было своей. Мы у себя хранили только юзеров, все майндмэпы хранились в Coggle, и он нам их по апишке отдавал.
Надо было засетапить все хранение у нас, перенести все проекты к нам в базу. А это было когда юзеры уже начали паблишить свои проекты. Так что все эти истории про стартапы, когда выстреливает прототип и его на ходу приходится подменять продуктом — это прямо про нас.
Ф: — Если мы с друзьями будем делать проект, мы выберем технологии, которые знаем, а не те, что могли лучше бы подойти. У вас тоже так было?
М: — Да, в принципе так. Но нам очень здорово повезло, потому что JS и Ruby это такой отличный стек для стартапа. В Ruby можно очень быстро все запилить, и я бы не сказал, что все становится плохо потом. Если, конечно, не достигаешь уровня Twitter — поэтому Twitter и переписали с Ruby на Scala.
Пока ты стартап, тебе полностью хватит Ruby on Rails. Но если бы я писал на Java, наверное, не все было бы так радужно.
Ф: Здесь в том и проблема, что ты можешь сделать хорошо только на чем умеешь. А JS у вас чистый используется?
М: — У нас обычный JavaScript и React с Redux
Ф: — А почему выбрали именно их?
М: — Когда мы начали писать Storyline, я React не использовал. До этого я писал на Angular 1.4, 1.5. Немножко тыкал второй Angular, который на TypeScript. Когда мы начали Storyline, React уже выиграл войну, поэтому было перспективнее писать на нем (и проще, как мне кажется уже сейчас). Поэтому я просто загуглил React Tutorial, пару дней в него повтыкал, завязал дефолтный генератор от Дэна Абрамова, и там был уже Redux. Сейчас не жалею, хотя у меня и не было особо опыта с другими библиотеками.
![](https://habrastorage.org/webt/gf/zb/sd/gfzbsdzzioyop6lmmalq6r-92dg.jpeg)
Ф: — Можешь в паре слов сказать про архитектуру?
М: — Все довольно просто, у нас Single-page application на React. Рельсы используются для двух вещей. Первое, это апишка для клиентского приложения. Второе — хостинг для скиллов, которые создаются юзерами через Storyline.
Фронт состоит из двух больших компонентов. Первая это Dashboard и все внутри проекта, а второе — редактор скилла. Он уже написан с вкраплениями d3.js. Там рисуются блоки — надо, чтобы все это было быстро, супер интерактивно и красиво, чтобы можно было стрелочки всякие рисовать, анимации и так далее. Нам это было супер важно, потому что у нас по сути тул для визуального программирования.
А Alexa, можно сказать, работает как обычный бот в Telegram или Facebook. Ты ей скармливаешь какой-то эндпоинт, какой-то сервачок. Как только юзер начинает говорить с Алексой, она шлет тебе реквесты. Ты работаешь как прокси — тебе приходит запрос, ты на него отвечаешь. Алекса твой ответ форматирует и его произносит. Ничего сверхъестественного — обычное монолитное рельсовое приложение, все работает на Amazon Web Services. Мы стараемся делать все стандартно — React, Redux, Ruby on Rails — так проще найти разработчиков.
Ф: — Какая часть сейчас кажется самой сложной?
М: — И технически, и концептуально сложной кажется реализация кроссплатформенности. Сейчас мы поддерживаем только Алексу, потом будем и Google home, и Cortana, и прочие штуки. Честно говоря, к этому мы ещё никак технически не подготовлены. Думаю, там будут большие проблемы, и это будет огромный челлендж.
Ф: — Можешь сказать, сколько сейчас строк кода в самом большом файле на проекте?
М: — На фронтэнде наверное строк 700 — есть там один файл. На бэкенде, наверное поменьше (я просто на Ruby лучше пишу). Там может 250-300.
Как устроены программы в акселераторах и как проходит жизнь в Кремниевой долине
Тим Дрейпер
Мы жили в Сан-Матео в Калифорнии, в Draper University. Его построил отец нашего инвестора Адама Тим Дрейпер. Он там один из самых известных чуваков. Его даже называют отец-основатель долины. Он купил отель и сделал из него университет, где два раза в год проходит своя программа. Там жили и мы, и другие компании. А тем, кто участвует Boost VC, они дают бесплатное жильё на четыре месяца.
Это очень весомая денежная плюшка, потому что цены в Сан-Франциско… Он ещё и место для офиса дает в своем спейсе, буквально в 10 метрах от жилья — только дорогу перейти. Так что типичный день выглядел так: встаешь, идёшь в Boost, выходишь уже ночью, переходишь дорогу и идёшь обратно спать. Примерно так выглядели 97% наших дней.
В YC и в Boost VC никакой формальный программы нет. Ты не сидишь и лекции не слушаешь. Но каждую неделю совместные ужины, куда приглашают известных ребят. Там были фаундер Quora (который оказывается раньше был CTO в Facebook), ребята из AirBnb, Amplitude, Zapier, Dropbox. Накрывается огромный стол, все сидят, кушают, слушают, общаются.
Раз в две недели проходят митинги. Там все делятся на группы, по каким-то магическим параметрам — индустрии, технологии и тд. Всего у нас было где-то 40 компаний, и в нашу группу попали 14. У каждой группы есть свои партнёры. У нас это были Майкл Сайбел (CEO YC и фаундер Twitch) и Густаф Альцтромер (head of growth в Airbnb).
Мы собирались и проговаривали, что делали за прошлые две недели, какой прогресс по метрикам, что будем делать следующие две недели. Третий вопрос всегда менялся: Какие есть проблемы, что мешает расти, как мы собираемся стать компанией на $1 млрд.
И если к следующему разу ты не сделал, что запланировал — говорить об этом перед всей группой и партнёрами очень стыдно. Это сильно мотивирует двигаться вперёд, ставит тебя на рельсы, чтобы ты рос. Если ты несколько месяцев подряд растешь на 50%, начинает казаться, что в следующем месяце уже невозможно будет вырасти. И вот ты начинаешь искать всякие уловки, как это сделать любым способом, привыкаешь к этому и растешь.
— В долине классное сообщество, всем всем помогают. А можно ли принести свой код кому-то из топов разработки, показать, попросить совета?
М: — Я думаю, это будет выглядеть немного странно. У тех же чуваков из Slack можно попросить какого-то совета, на который не существует правильного ответа. Можно посидеть, пофилософствовать. Они могут дать только совет со своей колокольни.
Но с программированием — ну не знаю. Все же можно нагуглить, протестить, найти на гитхабе. Не думаю, что какой-то супер крутой чувак будет против, но это не особо имеет смысл.
В: — Это имеет смысл в специфичных областях. Если ты делаешь какую-то штуку на машинном обучении, и есть чувак, который 20 лет этим занимался — то да, это будет супер полезно.
Ф: — Макс, как думаешь, каково быть разработчикам в стартапе по сравнению с другими сферами?
М: — Я знаю только, каково быть фаундером, как разработчик я до этого в стартапах не работал. Сейчас я не считаю себя именно разработчиком, потому что приходится все меньше и меньше писать код и больше погружаться в кучу разных процессов — чуть ли не до покупки воды в офис.
Но все равно разработчиком в стартапе быть очень круто. Ты не просто пилишь фичи, который тебе заказчик сказал, а сам можешь на них влиять, придумывать. Но это и очень большой стресс. Все хотят быстро, и ты сам тоже. В аутсорсе ты можешь сказать «я потратил на задачу 10 часов», хотя на самом деле потратил 4, и все будет окей. Можешь просто сидеть и перебирать технологии, переписывать один класс по многу раз, тестами все покрывать.
А тут ты сам контролируешь свое время. Всегда есть интерес сделать быстрее, лучше. В стартапе нужно балансировать между кучей разных штук.
Ф: — Приходилось как-то подтверждать свой скилл, чтобы получить инвестиции?
М: — Это может звучать грустно и обидно, но, мне кажется, роль технологий была особо не важна. Думаю, у 95% стартапов так же, если мы не говорим про сложные технологические компании, у которых суть продукта это технологии.
А у всех остальных технологии отходят на второй план. Написать какую-то штуку или приложение — много ума не надо. Есть много фреймворков, туториалов, это все довольно постижимо и просто. А найти годную идею и годную аудиторию, успеть сделать продукт, понять кому он нужен — в разы-в разы сложнее.
Мне кажется, роль технологий в стартапах переоценена в головах людей. Стек, быстро или медленно ты пишешь код — это все не так важно. Гораздо важнее твоя стратегия, как ты находишь решения.
![](https://habrastorage.org/webt/7p/ww/fx/7pwwfxrrfyjzo7hs0udqr2uwiia.jpeg)
— На что вообще больше смотрят? На саму идею или вашу способность за нее ухватиться и довести до конца?
В: — YC в первую очередь смотрит на фаундеров — сколько единиц работы вы можете выполнить за единицу времени. Главное насколько быстро ты можешь делать, тестировать, понимать что где не работает и делать дальше.
Второе, на что они смотрят — это рынок. Если ты делаешь очень быстро, но на плохом рынке — далеко ты не уплывешь. На очень больших рынках, как правило, высокая конкуренция, поэтому они пытаются найти маленькие но быстро растущие. У нас, я считаю, был идеальный тайминг. Мы сделали продукт сразу как только появилась возможность его сделать. А тайминг это одна из самых важных штук.
И третье — это сам продукт. Им важно, чтобы люди его полюбили. Лучше делать продукт, который любят сотни, чем продукт, который нравится тысячам. Если он просто нравится, то будет трудно сконвертировать. Намного лучше найти маленькое сообщество. Мы выросли с нуля до 14 тысяч юзеров органически просто потому, что одни люди рассказывали про нас другим.
Буквально на прошлой неделе в нашей группе на Facebook написал человек со своим real estate бизнесом. Сейчас популярно явление, когда люди смотрят дома не с риелтором, а сами. Он хотел сделать скилл для Alexa, поставить во всех домах по девайсу, чтобы клиенты могли сами спрашивать у нее обо всем. Он обратился в агентство, чтобы ему разработали такой скилл, и там попросили у него $45 тыс.
Он расстроился и пошёл искать, как сделать такую вещь самому. Нашел наш продукт и сделал эту штуку — за которую агентство просило 45 тысяч — буквально за несколько дней. И вот он купил нашу платную версию, хотя ему даже не были нужны фичи, которые там есть (хороший повод для нас подумать над новыми сегментами). Просто он полюбил продукт и поддержал нас.
Что будет с голосовыми ассистентами в ближайшие годы
Все видели, как строят обычно здания. Огораживают территорию, и там за забором что-то долго-долго делают. Потом вдруг в считанные недели вырастает остов целого небоскреба. Со стороны кажется, что строительство наконец разогналось и вот-вот все будет готово. Но когда остов построен, работа как будто бы снова замедляется. Конструкцию еще долго обустраивают, пока не получится готовый небоскреб.
С технологическими рынками также. Хорошие готовые продукты появляются не вовремя шумихи и хайпа. Они появляются потом, когда шум спадает. И тогда они становятся монополистами и меняют рынок.
Сейчас голосовые технологии — это остов небоскреба. Есть хорошая технология распознавания. Что-то появляется на рынке. В штатах 50 миллионов проданных спикеров. Google actions можно запустить на любом Андроид-смартфоне, а это 86.2% рынка смартфонов. У Microsoft в мире 500 миллионов устройств на Windows, и использование голосовых технологий растет там на 50% от месяца к месяцу.
Но это еще не небоскреб. Он появится, когда появятся новые крутые юзкейсы для голосовых помощников (например, заказ товаров и услуг голосом), когда у людей будет развиваться привычка их использовать. Это будет через 18-24 месяца. Вот тогда на рынке начнут происходить более интересные штуки.
А через 3-5 лет уже будет примерно так: ты просыпаешься, у тебя возле кровати стоит девайс. Ты говоришь, «Алекса, доброе утро». Она включает твою любимую песню, варит тебе кофе, открывает окна. Идёшь на кухню, запускаешь голосом подкаст или новости. Садишься в машину, едешь на работу, дослушиваешь подкаст там. Ассистент превращается в бесшовную операционную систему.
Все говорят, что вокруг голосовых технологий хайп, но он еще даже не начался. Хайп начнется через год-полтора, и тогда будет реально интересно. Уже в следующем году BMW и Lexus будут выходить со встроенной Алексой. В Америке Amazon интегрирует Алексу в ТВ-приставки, то есть она уже становится ТВ-пультом. Под Алексу есть уже около 40 тысяч приложений, и пару недель назад Амазон сделал штуку, которая позволяет запускать их не произнося название. То есть ты говоришь «Алекса, закажи цветы, и она сама подбирает приложения, которые могут это сделать». Мне кажется, это будет номер один вещью в будущем. Сначала не надо будет произносить название приложения, потом и имя ассистента. Он будет в режиме «always listening» и контекстно понимать, если ты к нему обращаешься.
— Тебе интересна была тема лингвистики — научить компьютер говорить, все такое?
В: — Да, это очень прикольно. Я помню в Стартреке был комп, с которым они говорили. Это было забавно, но казалось таким футуристичным. И вот это уже происходит на самом деле.
Есть история. Я еду с работы на тренировку, сажусь в убер, а там водитель с кем-то разговаривает. Смотрю — в машине никого нет. Оказалось, он говорил с Алисой в Яндекс Навигаторе. И вот сзади его подпер какой-то чувак. Водитель стал ругаться, а Алиса подумала, что он на неё ругается — говорит ему, «да как вы со мной разговариваете?». Водитель такой, «заткнись там, вообще не до тебя». Это выглядело настолько реально. Думаешь, что будущее где-то далеко, а оно здесь, уже наступило.
Конечно то, насколько девайсы и помощники могут контекстно отвечать, ещё далеко от идеала. Но распознавание речи все лучше. Если сейчас Алекса верно понимает 8 слов из 10 (по моим ощущениям), то через несколько лет будет понимать все 10. Это очень сильно повлияет на то, как люди будут разговаривать со своим девайсом. Вот Siri супер тупая, не понимает вообще ничего, и это сильно выводит из себя. Голосовой помощник такой продукт — чтобы он хорошо работал, должна быть хороша сама технология.
— Тебе не хотелось бы привязать какое-то обучение, чтобы алекса понимала не буквально, что ты ей говоришь, а использовала контекст?
В: — Частично это работает в Storyline сейчас. Например, есть интенты YES/NO, и к ним автоматически добавляется куча синонимов на стороне Амазона. Если ты задаешь Yes, Алекса поймёт Ok, Fine, True и так далее. Все это делается, на уровне Алексы, а мы используем ее как интерфейс.
— Когда вообще машины заговорят лучше чем мы?
В: — Это вопрос про искусственный интеллект в целом. Тест Тьюринга сейчас вполне возможно пройти, специально натренировать систему под узкую задачу. Но говорить лучше человека — это значит понимать контекст, эмоции, интонации, комбинировать все, чтобы выдавать ответ. Я не знаю, мне очень трудно это представить.
Я могу быть полностью неправ, но мне кажется не раньше, чем лет через 10-15.