«Задача начинающего предпринимателя — быстро совершать ошибки»

Автор курса ШАДа «Как запустить MVP» о технической стороне создания стартапов

«Задача начинающего предпринимателя — быстро совершать ошибки»

Анализ данных

Виталий Давыдов — выпускник Школы анализа данных и серийный предприниматель. Последние два года возглавляет студию Poteha Labs, которая делает веб- и мобильные сервисы с использованием машинного обучения и сотрудничала с Яндексом, NVIDIA и Додо Пиццей. Недавно он запустил B2B-сервис Adapty для работы с пользовательскими подписками. Виталий рассказал Академии Яндекса о том, какие типичные технические проблемы возникают в стартапах и почему основателям полезно разбираться одновременно во фронтенде, бэкенде и разработке инфраструктуры, а не специализироваться на чём-то одном.

Предпринимательский опыт

Я пытался запустить несколько проектов, ещё когда учился в МФТИ, — будем считать, что это тоже называется предпринимательством. Наверное, самым интересным из них было мобильное приложение для подготовки к ЕГЭ — сейчас эта идея кажется очевидной, но в 2011 году таких продуктов ещё не было. В проекте изначально было три человека, но команда развалилась, я остался один — и у меня пропала мотивация. В итоге, после того, как я выложил приложение в App Store, я заработал на нём всего 500 долларов. Но спустя несколько лет рынок вырос, и появились буквальные клоны этого проекта — было любопытно за этим наблюдать.

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

А потом я устроился на работу в Easy ten — стартап для изучения иностранных языков. Там я познакомился с партнёром, с которым мы работаем до сих пор. В 2017 мы запустили образовательный проект вместе с дизайнером Димой Барбанелем. Это был чат-бот в Telegram, который «выстрелил», потому что у нас уже были технические навыки, а Дима нас продвигал.

alt
Основатель Poteha Labs (крайний слева) в офисе Яндекса

Нам начали приходить заказы на разработку, например, онлайн-кинотеатра. И мы решили, что это хорошая возможность научиться операционному управлению и открыли студию. А спустя четыре месяца сделали из неё коммерческую лабораторию для машинного обучения. Poteha Labs начала брать заказы от крупных компаний в России,  включая «Додо Пиццу», AmoCRM, Cherry Home.

Что нужно знать, чтобы создать стартап

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

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

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

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

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

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

Кроме того, мы потратили много времени на налаживание CI/CD — процесса быстрой доставки кода в продукт. Его первая часть, Continuous Integration, состоит в том, что новый коммит разработчика проходит через тесты, компиляции и сборку. А во время Continuous Delivery нужно доставить проект до конечных серверов, обновить их и сделать это так, чтобы ничего не упало.

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

Как устроен курс по запуску интернет-сервисов в ШАДе

Чтобы поделиться своим опытом я организовал курс по созданию MVP в ШАДе: на нём студенты будут иметь дело с бэкендом, фронтендом, и инфраструктурой. Мне хотелось компенсировать недостаток системности: чтобы у ребят появилось общее понимание, из чего состоит конечный продукт, что нужно читать и куда смотреть, если какой-то компонент перестал работать. Если ты знаешь ключевые слова, то можешь как минимум нагуглить решение. А если полностью плаваешь и не знаешь даже определения терминов, то это становится в сто раз сложнее.

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

На нашем курсе мы взяли за основу язык программирования Python, потому что его сейчас активно изучают в университетах. Ещё нужно было выбрать понятный веб-фреймворк — библиотеку, чтобы можно было реализовывать серверы, которые принимают запросы. Здесь мы использовали Django. Несмотря на то, что он довольно медленный, на нём в своё время был сделан Instagram.

А в ходе занятий по фронтенду студенты будут изучать React, основы вёрстки и подключение серверов. Преподаватели объяснят, как строить интерфейсы, поддерживать приложения и делать веб-сервисы привлекательными для пользователей разных устройств.

Что касается инфраструктуры, то молодым стартапам обычно достаточно использования облачных сервисов — таких, как Amazon Web Services, Google Cloud и Яндекс.Облако. Во-первых, если делать инфраструктуру на выделенных серверах — приходить в дата-центр, покупать туда компьютеры, устанавливать их и так далее, — то выходит невероятно долго и дорого. Во-вторых, большие компании дают гранты и скидки для стартапов, что позволяет существенно сократить траты на серверы.

Советы тем, кто хочет заняться предпринимательством

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

Если люди не умеют работать автономно, то вряд ли они могут сделать стартап. Я такого никогда не видел.

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

Что касается технической части, то многие сталкиваются с одними и теми же проблемами, например, с ошибками 500 (внутренними ошибками сервера) при регистрации пользователей. И, как следствие, у сервиса сразу же «отваливаются» новые клиенты. У нас так происходило трижды.

Ещё разработчики часто забывают протестировать все необходимые сценарии или на это не хватает времени.

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

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

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

Больше по теме

Анализ данных

Трансферное обучение: почему deep learning стал доступнее

Что помогает стартапам использовать методы глубинного обучения в своих проектах?

Анализ данных, Разработка, Яндекс в вузах

Как развивается онлайн-образование в МФТИ

Андрей Райгородский: «Мне очень хочется, чтобы к нам поступали люди не только из Москвы»

Анализ данных, Разработка

Как устроена работа голосовых помощников

От распознавания звуков до человечных ответов на вопросы

Анализ данных

Чем занимаются лауреаты премии имени Ильи Сегаловича 2019

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

Анализ данных

Зачем специалисту по data science нужна экономика?

Разработчик deep learning в Яндекс.Такси о своём переходе из экономики в науки о данных

Анализ данных, Разработка

Чем занимается разработчик инфраструктуры и как им стать

«Для нас все остальные разработчики Яндекса — пользователи»

Анализ данных

Научить Алису предсказывать намерения пользователя и разобраться в инфраструктуре Amazon

Какие проекты реализовали участники интенсива по машинному обучению от Яндекса и Университета «Сириус»