«Задача начинающего предпринимателя — быстро совершать ошибки»
Виталий Давыдов — выпускник Школы анализа данных и серийный предприниматель. Последние два года возглавляет студию Poteha Labs, которая делает веб- и мобильные сервисы с использованием машинного обучения и сотрудничала с Яндексом, NVIDIA и Додо Пиццей. Недавно он запустил B2B-сервис Adapty для работы с пользовательскими подписками. Виталий рассказал Академии Яндекса о том, какие типичные технические проблемы возникают в стартапах и почему основателям полезно разбираться одновременно во фронтенде, бэкенде и разработке инфраструктуры, а не специализироваться на чём-то одном.
Предпринимательский опыт
Я пытался запустить несколько проектов, ещё когда учился в МФТИ, — будем считать, что это тоже называется предпринимательством. Наверное, самым интересным из них было мобильное приложение для подготовки к ЕГЭ — сейчас эта идея кажется очевидной, но в 2011 году таких продуктов ещё не было. В проекте изначально было три человека, но команда развалилась, я остался один — и у меня пропала мотивация. В итоге, после того, как я выложил приложение в App Store, я заработал на нём всего 500 долларов. Но спустя несколько лет рынок вырос, и появились буквальные клоны этого проекта — было любопытно за этим наблюдать.
Потом я пытался запустить еще локальную социальную сеть для людей, которые хотят найти сокомандников для занятий разными видами спорта. Всё закончилось похоже: на этот раз команда не развалилась, но нам не хватало технических навыков, и мы потратили всё время и все деньги на то, чтобы просто разобраться, как запустить сервер.
А потом я устроился на работу в Easy ten — стартап для изучения иностранных языков. Там я познакомился с партнёром, с которым мы работаем до сих пор. В 2017 мы запустили образовательный проект вместе с дизайнером Димой Барбанелем. Это был чат-бот в Telegram, который «выстрелил», потому что у нас уже были технические навыки, а Дима нас продвигал.
Нам начали приходить заказы на разработку, например, онлайн-кинотеатра. И мы решили, что это хорошая возможность научиться операционному управлению и открыли студию. А спустя четыре месяца сделали из неё коммерческую лабораторию для машинного обучения. Poteha Labs начала брать заказы от крупных компаний в России, включая «Додо Пиццу», AmoCRM, Cherry Home.
Что нужно знать, чтобы создать стартап
В своих проектах я пробовал заниматься всем, кроме фронтенда: бэкендом, разработкой инфраструктуры, машинным обучением.
Мне кажется, что если ты хочешь работать в стартапе, то лучше разбираться во всём понемногу, чем специализироваться.
Если ты понимаешь, что должно получиться на выходе, то значительно быстрее это сделать одному, чем синхронизироваться с дизайнером, продактом или другими разработчиками. Но даже для того, чтобы создать часть продукта или простой проект, нужны системные знания. Например, когда я ещё учился в университете и нам нужно было запустить чат-бота с кнопками, мне казалось, что это тривиальная задача на выходные.
На самом деле даже в этом случае есть огромная скрытая часть технологического стека. А процесс разработки тормозят мелочи: как научиться запускать сервер так, чтобы он не падал каждые пять минут, или как работать с облаком.
Это только кажется ерундой, но если у тебя нет опыта, то на такие задачи уходит половина времени работы над проектом.
Если говорить о стартапах, то главное, чему нам нужно было научиться, — это делать сервисы отказоустойчивыми. Мы потратили на это примерно полгода, потому что в команде не было никого, кто разбирался бы в этом или мог бы освоить это за неделю. Поначалу приходилось долго разбираться с докеризацией, развёртыванием и автоматическим масштабированием приложений.
Кроме того, мы потратили много времени на налаживание CI/CD — процесса быстрой доставки кода в продукт. Его первая часть, Continuous Integration, состоит в том, что новый коммит разработчика проходит через тесты, компиляции и сборку. А во время Continuous Delivery нужно доставить проект до конечных серверов, обновить их и сделать это так, чтобы ничего не упало.
Это несложно, и для этого уже есть готовые решения, но нужно научиться ими пользоваться и понимать, что делать в критических ситуациях.
Как устроен курс по запуску интернет-сервисов в ШАДе
Чтобы поделиться своим опытом я организовал курс по созданию MVP в ШАДе: на нём студенты будут иметь дело с бэкендом, фронтендом, и инфраструктурой. Мне хотелось компенсировать недостаток системности: чтобы у ребят появилось общее понимание, из чего состоит конечный продукт, что нужно читать и куда смотреть, если какой-то компонент перестал работать. Если ты знаешь ключевые слова, то можешь как минимум нагуглить решение. А если полностью плаваешь и не знаешь даже определения терминов, то это становится в сто раз сложнее.
При изучении бэкенда в первую очередь нужно определиться с потенциальной нагрузкой сервиса: у MVP, скорее всего, нагрузка будет около нуля, и поэтому можно выбрать самое простое решение.
На нашем курсе мы взяли за основу язык программирования Python, потому что его сейчас активно изучают в университетах. Ещё нужно было выбрать понятный веб-фреймворк — библиотеку, чтобы можно было реализовывать серверы, которые принимают запросы. Здесь мы использовали Django. Несмотря на то, что он довольно медленный, на нём в своё время был сделан Instagram.
А в ходе занятий по фронтенду студенты будут изучать React, основы вёрстки и подключение серверов. Преподаватели объяснят, как строить интерфейсы, поддерживать приложения и делать веб-сервисы привлекательными для пользователей разных устройств.
Что касается инфраструктуры, то молодым стартапам обычно достаточно использования облачных сервисов — таких, как Amazon Web Services, Google Cloud и Яндекс.Облако. Во-первых, если делать инфраструктуру на выделенных серверах — приходить в дата-центр, покупать туда компьютеры, устанавливать их и так далее, — то выходит невероятно долго и дорого. Во-вторых, большие компании дают гранты и скидки для стартапов, что позволяет существенно сократить траты на серверы.
Советы тем, кто хочет заняться предпринимательством
При разработке продукта самое важное — собрать крепкую команду и не совершить технических ошибок. А вот менеджмент в стартапе на ранней стадии только тормозит процессы. Когда нужно постоянно следить за сотрудниками, ставить им задачи и что-то проверять — это значит, что с командой проблемы.
Если люди не умеют работать автономно, то вряд ли они могут сделать стартап. Я такого никогда не видел.
Когда в проекте, например, пять человек, то у вас физически нет времени следить за каждым, а ответственность на каждом человеке очень высокая.
Что касается технической части, то многие сталкиваются с одними и теми же проблемами, например, с ошибками 500 (внутренними ошибками сервера) при регистрации пользователей. И, как следствие, у сервиса сразу же «отваливаются» новые клиенты. У нас так происходило трижды.
Ещё разработчики часто забывают протестировать все необходимые сценарии или на это не хватает времени.
В остальном нужно бороться с неожиданно всплывающими багами. Если это первый релиз, то сломаться может что угодно. А вот при последующих обновлениях обычно падает только новая функциональность. Но, к сожалению, с этим невозможно научиться справляться ни на чужих знаниях, ни на чужом опыте. Сначала нужно самому десять раз что-то запустить, и только потом проекты начнут бесперебойно работать.
По-моему, задача начинающего предпринимателя — как можно быстрее совершать ошибки (примерно первые пять лет работы). Потому что всякий раз, когда ты на сто процентов уверен, что всё делаешь правильно — всё равно случаются неудачи, и ты потом только сильнее разочаровываешься.
Нужно смириться, что с первого раза ничего не получится: у вас всё упадёт или даже развалится команда. И, зная это, всё равно стараться вложить как можно больше усилий.