Чем занимаются тысячи разработчиков в Uber и как устроена их работа: рассказ инженерного менеджера Статьи редакции

И почему процессы могут зависеть от стран.

Инженерный менеджер Uber Андрей Неверов выступил в подкасте «Запуск завтра» и рассказал об особенностсях своей работы. Он был техническим директором в американском стартапе Trucker Path, который хотел стать «Uber для грузовиков». Сейчас Андрей руководит одной из команд программистов Uber в Дании.

Андрей рассказал Самату Галимову, почему в компании столько разработчиков, как они поделены и как справляются с проблемами.

Андрей Неверов личная страница в Facebook

Почему в Uber так много программистов

Uber насчитывает около 25 тысяч сотрудников. Порядка 70% из них работают в США. Также есть офисы в Голландии, Великобритании, Дании, Болгарии, Франции, Индии и Бразилии.

Uber очень большой. Одновременно в мире совершаются 400 тысяч поездок (таксисты с пассажирами, курьеры, грузовики). К середине 2021 года компания хочет увеличить этот показатель до 600 тысяч поездок. В день совершается 10-15 млн поездок. По каждой нужно провести вычисления, сохранить данные, рассчитать маршруты, выписать чек.

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

В Uber много разных систем и они работают в унисон. Одна система может общаться с другой.

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

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

Как поделены разработчики

В офисе у Андрея около 60 человек. Они поделены на команды по пять человек. У каждой — свое направление работы. Одна команда может обслуживать платежную систему, другая разрабатывать искусственный интеллект, который считает спрос и предложение, третья — заниматься мобильным приложением и так далее.

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

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

Андрей занимается инструментами для разработчиков, с помощью которых они выкатывают новые версии своего кода. У него в подчинении 14 человек, которые поделены на три команды.

Страница Uber в Facebook

Как ставятся цели

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

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

Как решают проблемы

При возникновении проблемы команды разработки решают ее собственными силами, но если нужна помощь, обращаются к инфраструктурной команде, которая понимает, как все работает.

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

Какие особенности работы Uber в разных странах

Uber присутствует во многих странах и везде действуют свои законы. В Амстердаме компания работает по одним правилам, в Лондоне — по совершенно другим (разница даже в том, как работает интерфейс и как оформляются водители).

Например, в Голландии если ты хочешь стать водителем Uber, нужно получить специальную лицензию. Это занимает год, зато потом ты начинаешь работать и неплохо зарабатывать. В США ничего такого водителям не нужно: скачал приложение, нажал на кнопку и поехал.

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

{ "author_name": "Анна Оленькова", "author_type": "self", "tags": ["\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438","\u0437\u0430\u043f\u0443\u0441\u043a\u0437\u0430\u0432\u0442\u0440\u0430","uber"], "comments": 5, "likes": 16, "favorites": 62, "is_advertisement": false, "subsite_label": "dev", "id": 201100, "is_wide": true, "is_ugc": true, "date": "Thu, 28 Jan 2021 15:02:47 +0300", "is_special": false }
0
5 комментариев
Популярные
По порядку
0

А убер планирует вводить в парк водителей на ретро, типа волг 24, москвичей, жигулей?
Так иногда хочется прокатиться на нормальной машине, вспомнить детство, а не на этих современных пластиковых погремушках

Ответить
5

Вы хотели сказать "Яндекс планирует"?

Ответить
0

Я тоже бы с удовольствие поездил бы на советских. А не этих одноразовых киа рио/ хэндай солярис. рвать от них хочется.

Ответить
1

Разбивка на команды, тили-тили, а чем занимаются то?
Но вот это я запомню:
"у каждого крупного подразделения разработчиков есть небольшая группа людей, к которым можно обратиться, если дела совсем идут плохо"
Интересно как эти группы называют между собой разработчики :)

Ответить
0

фиксики :)

Ответить

Комментарии

null