Разработка
Создавая бесшовный процесс: команда Developer Experience в Uber
В блоге Uber вышла статья, посвященная отделу, чья деятельность часто остается за кадром. Задача Dev Exp — создавать инструменты разработки и объединять их в единый автоматизированный процесс по тестированию и внедрению сервисов.
В блоге Uber вышла статья, посвященная отделу, чья деятельность часто остается за кадром. Задача Dev Exp — создавать инструменты разработки и объединять их в единый автоматизированный процесс по тестированию и внедрению сервисов.
Команда «опыта разработчиков» Uber (Developer Experience, Dev Exp) невидима для пользователей, но помогает инженерам создавать и развертывать масштабные технологии. Команды Dev Exp расположены в офисах компании в Сан-Франциско, Сиэтле и Вильнюсе. В них входят члены отделов Информационной платформы, Обучения и развития разработчиков, а также Фреймворков сервисов и языков. Эта группа технических писателей, преподавателей и разработчиков поддерживает инженеров при помощи документации, обучающих курсов, создания систем и фреймворков для разработки.
Чтобы узнать о команде больше, Uber проинтервьюировал Николая Сократова, главу отдела Dev Exp.
В чем заключаются ключевые обязанности команды?
Наши обязанности распространяются от обучения инженеров и менеджеров до предоставления технической документации и стандартизации процессов разработки.
Например, в нашей команде есть свои разработчики. Они создают различные инструменты для повышения продуктивности инженеров: системы разработки, интеграционные тесты, тестовые системы и фреймворки. Они также работают над масштабными проектами, которые управляют сервисами через облачные платформы и распределенные системы. У нас в команде не бывает скучно.
С какими вызовами вы сталкиваетесь при создании этих инструментов?
Они варьируются от простых организационных вопросов до проблем, связанных с созданием распределенных систем. На высшем уровне мы должны убеждать других людей, что эти инструменты упростят разработку.
К счастью, многие инженеры понимают это, так как используют наши системы постоянно для создания сложных сервисов. Наша работа во многом создает новые подходы для упрощения создания и тестирования сервисов Uber.
Можете ли вы привести конкретные примеры инструментов, которые вы создали по запросу разработчика?
Один из наших недавних проектов — новая система автоматизации. Она управляет более чем 40 инфраструктурными инструментами, объединяя их в один процесс, который полностью автоматизирует проверку кода от создания сервиса до его реализации. Разработчику нужно только написать код и залить его в систему.
Другой проект, которым мы действительно гордимся, это облачная платформа (похожая на AWS Lambda), которая позволяет разработчикам не переживать по поводу серверов, масштабируемости и пропускной способности системы в дни высокого трафика, например, в канун Нового года и Хеллоуин.
Что вам больше всего нравится в работе в команде Dev Exp?
Когда инженеры тратят лишь часть своего времени на инфраструктуру сервиса, а сам этот слой становится невидимым; когда новый разработчик запускает сервис за несколько часов; когда разработчики реализуют свои идеи как масштабируемые системы без необходимости разбираться в распределенных системах или мучиться с упрощением этих сервисов — всё это очень приятно и соответствует культуре Uber, создающей волшебный опыт для наших клиентов (в данном случае, разработчиков).
На что похож день сотрудника команды DevExp?
Технические писатели проводят большую часть времени с разработчиками, чтобы лучше понять принципы работы систем для создания документации. Их задача — донести ценность этих сервисов до разработчиков и постоянно обновлять документы.
Преподаватели находят и устраняют пробелы в технических знаниях инженеров всех уровней с помощью постоянных образовательных программ. Они упрощают инженерное образование, создавая новые курсы для менеджеров, и помогают разработчикам развивать свои навыки, независимо от их опыта работы. Помимо нашей основной ориентационной программы для инженеров Core Engucation, мы проводим другие курсы на разные темы: от особенностей языков до написания статей для блога.
Разработчики в нашей команде упрощают и стандартизируют инструменты, которые позволяют нашим разработчикам создавать и компилировать код, проводить непрерывное тестирование, проводить интеграционные тесты для работающих сервисов и разрабатывать масштабные сервисы при помощи оркестровки и облачных фреймворков. В зависимости от стадии, на которой находится проект, разработчики придумывают идеи, обсуждают плюсы и минусы, создают прототипы, пишут код и поддерживают эти системы.
Работает ли ваша команда с каждым подразделением отдела разработки Uber?
Тем или иным способом, мы пытаемся связаться со всеми. В некоторых случаях мы работаем напрямую с командами разработчиков, иногда мы проводим опросы и выявляем проблемы или возможные кейсы. Так как в Uber работают тысячи инженеров по всему миру, наша цель — создать решения, которые будут направлены на решение их главных проблем, а не те, которые мы считаем нужным.
Как ваша команда настраивает разработчиков на успех?
Dev Exp фокусируется на устранении преград. Если вы посмотрите на процессы разработки в других компаниях, то увидите, что они используют отдельные инструменты для создания систем, интеграции, создания проекта, которые редко связаны между собой. Наша же цель — создать бесшовный процесс. Он должен быть очень простым, и мы устраняем множество узких мест вокруг создания новых сервисов. Например, процессы разработки, которые обычно требуют минимум пару месяцев, у нашего разработчика займут всего несколько часов.
Как вы думаете, в чем секрет способности вашей команды в устранении трудностей?
Мы хотим создавать не просто инструменты, а конечные решения, которые решат проблемы наших разработчиков. Наш приоритет — сделать опыт разработчика настолько комфортным, чтобы ему даже не пришлось об этом задумываться.
Во многих компаниях Developer Experience не выделен в отдельную группу. Команды создают инструменты разработки без цели объединить их в интегрированный процесс. Наша же команда позволяет разработчику внедрить свои идеи настолько быстро, насколько вы сможете написать для них код.