“С начала года поиск кандидатов — это занимательная история". CTO и сооснователь Uklon Виталий Дятленко — о рынке онлайн-заказа такси, работе приложения, сотрудниках и найме
Uklon — одна из самых популярных служб онлайн-заказа такси в Украине. История компании началась в 2010 году. Сперва был только сайт и возможность заказать такси по интернету, чтобы не звонить диспетчеру. Сейчас возможности очень расширились. В компании работает 80 технических специалистов, их количество продолжает расти.
Мы поговорили с техническим директором и сооснователем компании Виталием Дятленком о том, как возникла компания, о ее позиции на рынке перевозок, о работе платформы, найме и развитии ІТ-специалистов в команде.
«Конкуренция помогла нам сильно расти, работать эффективнее». О позиции компании на рынке
Сегодня Uklon — это большая IT-машина, продуктовая компания. Мы работаем в 27 городах Украины, у нас больше 7,5 миллиона скачиваний приложения, около 70 тысяч водителей онлайн, больше 2 млн поездок ежемесячно. В основном мы занимаем лидирующие позиции на рынке во всех регионах, где компания представлена. В Киеве обычно на
Мы конкурируем как с глобальными, так и с небольшими локальными игроками на рынке. Круто, что в Украине есть много проектов, которые развиваются не только в Киеве, а и в регионах. Они составляют достойную конкуренцию и делают людей счастливее.
Глобальные компании, которые зашли к нам (Uber, Bolt, Yandex.Taxi), очень расширили рынок перевозок в Украине. Они навели хайп — в Украину пришла международная компания, провели образовательную программу на стороне райдеров (потенциальных пассажиров). Больше людей узнало о том, что для заказа такси можно пользоваться мобильным приложением. Клиенты научились это делать. Кроме того, глобальные компании расширили рынок за счет работы с автопарками в разных городах. У многих людей появилась возможность проинвестировать в автомобили. Это ускорило время подачи авто для пассажира, и рынок автоперевозок вырос во всех регионах.
Конкуренция помогла и нам сильно расти, работать эффективнее, потому что все изменения на рынке проходили динамично.
«Мы не форсируем водителей, чтобы они работали много часов подряд, напихивая заказы один за другим». О фильтрах в приложении
Наше программное обеспечение дает большую свободу выбора и для райдера (пассажира), и для драйвера (водителя). Водитель настраивает фильтры, выбирает конфигурацию того, как он хочет работать: например, территориальную зону, тариф, время суток, тип платежей. Мы не форсируем водителей, чтобы они работали много часов подряд, напихивая заказы один за другим. У нас есть те, кто не выезжает с Оболони, работает только там. Или можно брать пассажиров только раз в день, по пути с работы домой.
Водители могут настроить один-два фильтры и, соответственно, планировать свой заработок. Глобальные агрегаторы не дают такой гибкости из-за особенностей их модели бизнеса.
У нас достаточно большой сегмент водителей — не парковые профессионалы, а люди, которые везут пассажиров по пути на работу: утром или вечером. Из-за этого и меньшее количество аварий на линиях. Такие водители выполняют примерно 10 заказов в неделю, не больше. Думаю, что этим они уменьшают количество пробок, возвращают себе какие-то деньги за дорогу, получают от этого удовольствие. Утром можно сделать себе кофе, выставить фильтр: на карте выбрать секторы, в который планируешь ехать и с которого готов податься. Если такой заказ попадется, ничто не мешает проехать 100 метров, взять человека и поехать на работу вместе с ним.
«Ночь, труднодоступные далекие районы, как водитель будет возвращаться — все это мы пытаемся учесть, заложить в цену и автоматизировать». О ценообразовании
Иногда возникают «дыры», точечные дефициты машин, но это уже работа другой команды — той, которая занимается ценообразованием. Мы анализируем сезонность и географию поездок: в какое время, куда, как едут люди. И, кроме базовых тарифов, у нас много чего просчитывается исходя из текущей обстановки. Кроме того, если система в тех рамках, которые мы ставим, не позволяет за адекватную цену предложить что-то клиенту, мы можем «бустануть» заказ — доплатить водителю, чтобы он вывез пассажира.
Ночь, труднодоступные далекие районы, как водитель будет возвращаться — все это мы пытаемся учесть, заложить в цену и автоматизировать.
Мы смотрим на цены конкурентов, чтобы понимать тенденции рынка и вовремя на них реагировать. Но чтобы в реальном времени изучать цены конкурентов и как-то эту информацию «запихивать» в нашу цену, то такого нет. Мы этого не делаем, и думаю, что конкуренты тоже.
Наверное, алгоритмы расчета и факторы, которые влияют на цену, у всех компаний похожи. Было бы глупо сильно выбиваться в примерно одинаковых условиях и с одинаковым количеством водителей: если у тебя очень дешево, твой заказ не возьмут водители, а если очень дорого — не придут клиенты.
Заработок таксиста зависит от города, в Киеве — 20 000 грн в среднем. Все зависит от того, сколько времени проводить на линии и какую стратегию выбрать для работы. Есть люди, которые работают постоянно, берут все заказы подряд и выходят на средние показатели заработка в час. А есть ребята, которых мы называем «водители-профессионалы»: они умело пользуются фильтрами, долго ждут «жирного» заказа. Условно говоря, они могут работать 10 минут в час и выходить на те же деньги, но с меньшим пробегом.
«Мы не предлагаем водителям подаваться, если они находятся больше чем за 10 км». О зональности
Мы ограничиваем зону распределения машин. Сейчас это круг с радиусом 10 км. То есть мы не предлагаем водителям подаваться, если они находятся больше чем за 10 км. Это абсурд, когда водитель едет целый час через весь город за 30 км к клиенту. Поэтому мы ограничили эту зональность.
Мы знаем, какие фильтры стоят у водителей, и уже на этапе просчета стоимости поездки понимаем, увидит ли этот заказ кто-то из них. К сожалению, бывают случаи, когда заказ никто не увидит, и мы хотим честно говорить об этом людям.
Сейчас тестируем такую штуку: если человек едет из далекого пригорода, его заказ никто из водителей не увидит и поднятие цены не поможет в том, чтобы его кто-то забрал, мы будем сразу сообщать об этом людям. Предлагать подождать и попробовать заказать машину немного позже.
«Uklon — это маркетплейс не только по заказу авто». О новых и сопутствующих продуктах
Сейчас Uklon — это маркетплейс не только по заказу авто. Мы занимаемся и доставкой разного рода: от конвертов до
Кроме приложений, которые видит райдер и драйвер, у нас много сопутствующих систем, все они около нашего основного продукта. Сюда входит сегмент для бизнеса (направление B2B): мы предоставляем решения для компаний. Там у нас полторы тысячи клиентов, и их количество растет. В этом сегменте мы закрываем потребности и по документальному учету, и по контролю (куда ездили сотрудники, в какое время и так далее).
Также у нас есть система для владельцев автопарков, где они видят все движения по финансам, заказам, местоположению своих водителей. В итоге понимаюь, какую прибыль приносит парк и как эффективно управлять им.
«Роутинги и все наполнение, которое есть под капотом, у нас свое». О том, как работает платформа
Мы много инвестируем в расширение команды, в поиск новых методологий, алгоритмов, чтобы улучшить платформу.
Мы не покупаем готовые карты — это еще одно из наших преимуществ. Еще в то время, когда мы стартовали, начали с графов, которые рисовали на подложке городов. На этом мы не остановились. У райдера и драйвера — подложка от Google, ее можно заменить на любую другую, но роутинги и все остальное наполнение, которое есть под капотом, у нас свое. Если бы мы покупали готовые решения от Google, было бы гораздо дороже.
У нас есть команда картографов, они постоянно, в реальном времени, обрабатывают тикеты от клиентов, дополняют базу, добавляют новые точки.
Сейчас для новых городов стартовое наполнение мы берем из OSM, из публичных источников. Когда стартует новый город, картографы берут начальный слой — развязки, дома, все, что там есть — актуализируют его, вычищают дубли. Тогда и мы можем стартовать. В OSM много развязок и разных данных, но чистота у них не всегда такая же хорошая как, например, у Google (хотя там тоже бывают ляпы).
У нас пока нет своей системы по пробкам на дорогах. Но мы уже запустили проект на основе тех данных, которые собираем со всех источников. Думаю, что сделаем ее в ближайшее время. У нас достаточно и экспертизы, и данных для этого.
«Если в команде работает 10 человек, это не эффективно, даже стендап превращается в балаган». О структуре компании
Сейчас в компании Uklon работает больше 300 человек. В технологическом направлении — около 80 специалистов.
У нас есть R&D-отдел. Там мы исследуем, анализируем, смотрим новые технологии, продукты. Есть команда Data Science. И есть отдел регулярной разработки.
Мне помогает VP of Engineering, он общается с лидами разных команд, управляет регулярной разработкой. В компании матричная структура управления. У разработчиков есть стек-лиды (Lead .NET, Lead iOS и так далее), и все команды разбиты по продуктам. Каждая из них самодостаточная. Кроме инженеров, которые нужны для разработки продукта, есть Product Owner’ы, бизнес-аналитики, дизайнеры, дата-аналитики.
Вначале мы пробовали переложить на технических лидов помощь с менеджментом бэклога, технические требования. Но пришли к выводу, что это не эффективно. Как правило, техлид — высококвалифицированный инженер. Самая большая польза от него — разработка. Мы заинтересованы в том, чтобы такие специалисты создавали классные фичи для нашего продукта, помогали развиваться мидлам, синьорам, помогали архитектору в проработке продуктовых фич с точки зрения технологий. Поэтому в структуру команд мы ввели такую роль, как Engineering Мanager.
Обязанности Engineering Мanager ближе к тем, которые выполняет тимлид. Он управляет людьми (проводит индивидуальные встречи с разработчиками, занимается картами развития сотрудников) и «тушит пожары». Engineering-менеджеры у нас не пишут код, но это специалисты, которые «выросли» из разработки. Они понимают, о чем речь (разбираются в терминах, технологиях, методологиях): им нельзя рассказать, что эта задача будет сделана через три месяца, тут тесты не пишутся или еще что-то...
Пока внутри компании мы не «выращивали» таких экспертов, нанимали их. На эту роль брали людей, которые работали на уровне синьора, а потом перешли в менеджмент. Планируем, что каждый менеджер будет заниматься двумя командами, это
Это схема работы новая для нас, мы ее только обкатываем.
«Вышло так, что мы стартовали на .NET, и до сих пор у нас много этой технологии». О стеке
Все, что было у нас вначале, я писал своими руками. Я дотнетчик, писал на том, что мне ближе. Поэтому вышло так, что мы стартовали на .NET, и до сих пор у нас много этой технологии.
В принципе я доволен .NET. Сначала легко было все сконфигурировать на локальной машине, запустить сайт, базу: набросал View Controller’ов, немного поправил HTML на веб-формах, и все работало. Чуть позже, когда появились контейнеры, казалось, что у нас немного не то направление, но Microsoft помог: сейчас все мультиплатформенное, и у нас вообще нет проблем с .NET — все пакуется в контейнеры, в кубер. Потом мы перевезли свой .NET-стек на Linux, все работает отлично. Кроме того, есть много хороших специалистов по .NET. И в этой технологии очень быстрые и хорошие образовательные возможности: информации, которую предоставляет Microsoft, невероятное количество, она классная, полезная, есть много готовых примеров — берешь, запускаешь, и все хорошо.
Сейчас мы разделили фронтенд и бэкенд. Бэкенд — это .NET, фронтенд — Angular, Swift, Kotlin. Мы пишем нативные приложения, в полной мере используем весь набор того, что есть в телефоне. Также у нас есть Python, применяем его для Data Science.
Из технически интересных проектов — сейчас занимаемся обработкой фидбэков: с NLP, переводами, чтобы понимать тон человека. Много клиентов ставит 5 звездочек, а в комментариях пишут, что водитель сделал что-то плохое. Мы пытаемся найти триггеры, что оценка не соответствует тексту, чтобы команда отдела контроля качества могла вовремя отреагировать на отзыв, который не соответствует действительности.
«Ежеквартально и ежегодно мы выбираем лучшие идеи и поощряем людей, которые их принесли». О том, как появляются новые фичи
У нас в компании политика «открытых дверей». Мы создали специальный процесс подачи идей, ежеквартально и ежегодно выбираем лучшие и поощряем тех, кто их предложил.
Все сотрудники компании могут подавать любые идеи, даже те, которые не касаются нашего основного продукта. Это делается через внутреннюю систему, и команда Product Owner’ов рассматривает их. Лучшие предложения подают продакт-менеджменту. Мы их смотрим и некоторые берем в работу.
У нас сильная команда продактов. Помимо рассмотрения чужих идей, они много анализируют, работают с пользователями и привносят улучшения в продукт. Есть плановые идеи и те, которые предложили пользователи. Все это мы собираем, складываем в план. У нас есть и краткосрочное, и долгосрочное планирование. Цели компании на квартал, на год — это открытая информация, мы доносим ее всем командам.
После продактов фича проходит еще этап проработки архитектором и техлидами. У нас в компании один архитектор, он с нами давно и понимает, как работает вся система в целом. Его задача — правильно встроить новую функциональность, новый сервис, технологию и «завернуть» это в продукт. Он занимается высокоуровневым проектированием функционала, дальнейшую проработку выполняют техлиды.
По сути, идея готова идти в разработку после того, как ее изучила продуктовая команда (собрала требования, описала метрики успешности и неуспешности) и архитектор разобрался, как все это будет внедряться в продукт. После этого задача попадает в команду, которая будет ее разрабатывать.
Что касается методов управления разработкой, то мы используем разные подходы, экспериментируем. Сейчас во все команды заводим Kanban, думаю, для нас в нем больше смысла.
«По каждой технологии у нас есть набор того, что человек должен знать для условной «лычки». О росте людей в компании
У нас в компании поощряется развитие специалистов и переход между отделами. Есть история, когда ребята приходили в команду саппорта, а сейчас, спустя семь или восемь лет, работают как лиды у DevOps’ов. Есть истории, когда специалисты перешли из поддержки на должность iOS-разработчиков. Если человек проявляет интерес к какой-то новой позиции и мы видим, что есть потенциал, даем ему попробовать себя в этом. В принципе, пока что не ошибались в подобных решениях. Те люди, которые стремятся развиваться дальше, в итоге вырастают в самых крутых специалистов.
По каждой технологии у нас есть набор того, что человек должен знать для условной «лычки». Ребята получают доступ к курсам и книгам. Ежеквартально в режиме постоянных индивидуальных встреч собирается фидбэк, как человек развивается. У нас есть практика перформанс-ревью: сюда входит и «оценка 360», и оценка лида, который видел, как специалист добивался тех или иных целей. В совокупности это влияет на пересмотр заработной платы или изменение уровня разработчика.
Для постановки целей мы используем фреймворк OKR. Наш СЕО принес эту штуку полтора года назад. Сначала мы обкатали ее на менеджменте, ставили цели себе, потом опускали вниз, на команды. Цели есть групповые и персональные. Мы стараемся помочь людям сформулировать персональные цели так, чтобы они хоть как-то совпадали с целями компании (если не с текущими, то с теми, которые есть в перспективе).
«Бывает так, что прошло собеседование, человек нам понравился, но, пока мы думали до следующего дня, он уже принял другой оффер». О найме
Сейчас мы сильно сократили этапы найма, пытаемся быстро делать выбор. Были даже наймы за один день, но это тот случай, когда видим, что человек точно подходит.
Мы занимаемся наймом внутри компании, но, когда вакансий много, привлекаем агентство. Когда вакансии сложные, специфические, на рынке мало таких кандидатов, их тоже отдаем в агентство, чтобы расширить поток специалистов и найти своего человека.
Рекрутеры приносят нам уже отсеянные заявки. Они предварительно общаются с кандидатом, задают
Если по резюме кандидат подходит, организовываем онлайн-беседу. Это техническое интервью, сейчас его проводят техлиды команд. Скорее всего, в будущем будем привлекать к этому Engineering-менеджеров.
При разговорах с техническими специалистами от мидла и выше я тоже присутствую на собеседовании. Я знаю всех технических специалистов в компании, поэтому могу вовремя заметить все плюсы и минусы кандидата, понять, подойдет ли этот человек в определенную команду, не только по хард-скилам.
На техническом интервью мы задаем вопросы по стеку, согласно уровню кандидата. Даем алгоритмические задачи. Техническое интервью длится полтора-два часа. Если вопросов и недопониманий нет, то уже по результату технического собеседования принимаем решение — берем человека или нет.
Если какие-то вопросы остались, иногда даем оплачиваемое тестовое задание. Если по результатам тестового задания окажется, что все ок, кандидат нам подходит, предлагаем работу. Сейчас пытаемся все это проводить быстро. Бывает так, что прошло собеседование, человек нам понравился, но, пока мы думали до следующего дня, он уже принял другой оффер.
Дополнительные раунды интервью могут быть в том случае, когда берем специфического специалиста (например, Product Owner’а). После технического интервью может быть этап защиты задания, которое было на предыдущем этапе. На этот этап прихожу я, СЕО и другие заинтересованные специалисты.
У нас нет практики аутсорса, но сейчас мы пришли к тому, что для быстрого роста некоторые штуки готовы отдавать на аутсорс. Пока что ведем переговоры с аутсорс-компаниями.
Наряду с агентствами по поиску людей в штат, мы рассматриваем возможность взять людей и на аутстаффе, чтобы расширить воронку кандидатов.
Я не вижу проблем в том, когда ребята из аутсорса попадают к нам в команды. Многие разработчики из больших аутсорс-компаний стремятся попасть в продуктовую: для них это что-то новое, интересное, другие процессы. Люди перестраиваются достаточно быстро. Прелесть нашего продукта в том, что ребята видят, что они разрабатывают, как это применяется. Это не какие-то абстрактные проекты, которые они никогда не видели вживую.
С менеджерами, которые долго работали в аутсорсе и аутстаффе, сложнее, у них другой образ мышления. Иногда возникает чувство, что они смотрят на людей не как на личностей, а как на человеко-часы. Но непреодолимых преград и здесь нет.
«Поиск кандидатов — это занимательная история». О всплеске количества вакансий на рынке
С начала 2021 года поиск кандидатов — это занимательная история. В связи с пандемией многие компании осознали, что не готовы к оцифровке всего, у них слишком много «ручных» процессов. Из-за этого на рынке появились новые проекты, которые нужно разрабатывать. Возник всплеск желающий найти IT-специалистов. Как нам кажется, из-за этого появился дисбаланс между предложением и спросом. И, по факту, все это превратилось в игры по вознаграждению за кандидата.
У кандидатов выросли ожидания по вознаграждению, но параллельно с этим не всегда поспевает квалификация. Некоторые соискатели сильно переоценивают свои возможности. Кажется, что пол года проработал — и он уже специалист, идет менять компанию. Рынок диктует свои правила, но иногда просто разочаровываешься: ожидаешь одно, но оказывается, что по квалификации люди гораздо слабее, чем могли бы быть. Из-за нехватки кадров опустился уровень требований к кандидатам.
Я думаю, что в какой-то момент этот рост остановится, не будет таких турбулентных скачков и такого хайпа по количеству открытых вакансий. Но и отката назад не будет, просто все немного стабилизируется. Думаю, что уровень заработных плат вряд ли вернется к тому, который был раньше. Возможно, зарплаты еще немного подрастут, потому что спрос очень высокий и за хороших кандидатов нужно платить.
«Мы планировали создать портал Ukraine online. Думали, что это будет генерировать много трафика: люди будут приходить, смотреть новости и заказывать такси». О том, как все начиналось
Я был первым разработчиком Uklon. Когда учился в магистратуре, пришел работать в компанию, которая занималась разработкой программного обеспечения для диспетчеризации такси. Там достаточно быстро образовалась идея Uklon, то есть на старте она начала расти внутри другой компании, которая существует до сих пор. Вышло так, что субпроект вырос намного больше, чем «родительская» компания. Сейчас мы ко-фаундеры, с того момента по сегодняшний день работаем вместе.
Вначале не было мобильного приложения, был заказ через сайт. Мы заказали дизайн, очень быстро набросали одну форму заказа и кучу вкладок — с новостями, чем-то еще. Задумка была в том, что просто заказ такси — это мало. В то время были популярны порталы — Ukr.net, bigmir)net, Tochka.net — мы тоже планировали создать портал, Ukraine online. Думали, что это будет генерировать много трафика: люди будут приходить, смотреть новости и заказывать такси. Но оказалось, что новости, формирование интересного контента — не наша тема. Поэтому мы отбросили все лишнее, оставили только то, в чем разбирались.
Мы решили создать свой продукт, потому что верили в него. Классно, что тогда не побоялись пробовать делать что-то сами: спустя 11 лет мы большие, крутые, конкурируем с глобальными игроками.
Поначалу кроме сайта и бэкенда, который процессил эти заказы на диспетчерские службы, ничего не было. По сути, мы только закрыли «боль» пользователей звонка через веб-интерфейс. Работать с водителями начали позже.
Количество людей, которые пользуются мобильными приложениями, постоянно растет. Но традиционные телефонные службы еще остались, они есть и в маленьких, и в крупных городах. Есть диспетчерские службы, которые пользуются тем ПО, которое мы делали сначала. Сейчас это — часть Uklon, но ПО для телефонных служб занимается отдельная команда.
«Когда появляется больше процессов и все стопорится, нужно выдохнуть, найти специалистов и просто помогать им». О делегировании
Вначале и маркетинг, и разработку, и все что угодно мы пытались делать сами. Умение делегировать появилось не сразу. Но со временем пришли к тому, что иногда легче и быстрее нанять человека, закрыть проблему и «ехать дальше». Когда появляется больше процессов и все стопорится, нужно выдохнуть, найти специалистов и просто помогать им, направлять, чтобы теми или иными процессами занимались квалифицированные люди. Это эффективнее.
Наверное, самым сложным этапом для меня был приход на рынок больших агрегаторов. После этого у нас произошел стремительный рост продукта, увеличение количества пользователей сервиса. Мы были к этому не готовы: много падали, больно падали... Пришлось оперативно что-то решать.
Когда количество пользователей стало в несколько раз больше, оказалось, что технически это совсем другие задачи. Пришлось быстро отходить от нашего монолита. Думать, как мы его будем резать, какие сервисы, что выделять. Потребовалось немало работы и усилий, чтобы все переделать и двигаться дальше.
Сейчас мы используем облачные технологии, проблем с нагрузками нет, все автоматизировано. Непогода и Новый год нам не страшны. Мы начали понимать тренды сезонности, можем планировать, какие мощности нужны будут в тот или иной момент времени.
«Сейчас мы не обновляем программу в пятницу». О самой большой ошибке
Думаю, что самый большой мой фейл — это политика компании, которая позволяла запускать обновления в пятницу. У нас специфический, сезонный продукт: есть утро, вечер и пятница (как мини Новый год). Мы пару раз были наказаны практикой, потому что не учли эту специфику.
Была ситуация, когда мы в пятницу обновили программу и целый час не могли «встать» в час пик. Было много хейта, мы потеряли деньги, репутацию перед клиентами, пришлось как-то закрывать это промо-кодами. Сейчас мы не обновляем программу в пятницу, и продукты, которые могут как-то затронуть взаимодействие водителей или пассажиров с платформой, обновляются во время наименьшей нагрузки, не в час пик.
«Я не отрекся от разработки». О работе в роли СТО и развитии
Я работаю в компании в роли CTO. Это просто «лычка», которая исторически появилась.
Когда стартовал наш продукт, всю команду, весь костяк, который есть сейчас, я формировал вокруг себя. Сегодня в компании работает достаточно много людей, которые пришли еще
Я не отрекся от разработки. Иногда посещаю стендапы, чтобы понимать, что происходит внутри каждой команды. Особенно в тех случаях, когда есть срочные задачи и для компании важно, чтобы все было сделано вовремя. Прихожу, слушаю, помогаю. Могу закодировать какую-то штуку на бэкенде. Я знаю, что там, как, где, почему были какие-то костыли... Могу вовремя подсказать ребятам, почему лучше чего-то не делать.
Пишу код, потому что мне это нравится, не хочется терять тонус, плюс я хожу на собеседования: нужно понимать тенденции, фичи языка, знать, что новое появляется в технологиях.
Чтобы быть в форме, следить за новыми технологиями, я достаточно много смотрю разные курсы, конференции, читаю книги. Время от времени напоминаю себе что-то по алгоритмам, по Data Science. Университетское образование было давно, и в тенденциях сегодняшнего мира не всегда этих знаний хватает, приходится продолжать обучение, чтобы была возможность и поспорить, и помочь ребятам в разработке функционала.