DX vs Developer Productivity vs DPE
Чем Developer Experience отличается от Developer Productivity Engineering и Platform Engineering
Зоопарк терминов
Если вы начнёте читать про Developer Experience, то довольно быстро столкнётесь с целым набором похожих, но не тождественных терминов: Developer Productivity, Developer Productivity Engineering, Platform Engineering, Developer Enablement, Developer Effectiveness — и у каждого из них свои евангелисты, свои конференции, свои определения и свои вакансии на LinkedIn. Неудивительно, что многие люди путают их между собой или используют как синонимы, хотя на практике за каждым термином стоит свой угол зрения на одну и ту же большую проблему: как сделать так, чтобы разработчики могли делать свою работу лучше.
Давайте попробуем разобраться, чем эти термины отличаются друг от друга, где они пересекаются и почему на практике границы между ними часто размываются.
Developer Experience — зонтик над всем
Developer Experience — это самый широкий из всех перечисленных терминов. Он охватывает всё, что влияет на опыт разработчика в процессе работы: инструменты, процессы, архитектуру, документацию, культуру, организационную структуру, когнитивную нагрузку, эмоциональное состояние. По сути, DX — это ответ на вопрос «каково быть разработчиком в вашей компании», и этот ответ складывается из десятков факторов, от скорости CI до того, сколько раз в день вас дёргают на незапланированные встречи.
Важно понимать, что DX — это не конкретная практика и не конкретный инструмент, а скорее линза, через которую можно смотреть на любой аспект разработки. Когда вы выбираете между двумя архитектурными подходами и учитываете не только производительность системы, но и понятность для новых членов команды — это DX.
Developer Productivity — одно измерение из многих
Developer Productivity — это более узкое понятие, сфокусированное на измерении и улучшении производительности разработчиков. Здесь в центре внимания метрики: DORA (deployment frequency, lead time, change failure rate, MTTR), cycle time, throughput, количество PR в неделю и тому подобные числа, которые можно достать из инструментов и отследить во времени.
Различие между DX и Developer Productivity примерно такое же, как между User Experience и Conversion Rate в мире продуктов. Conversion Rate — важная метрика, но она не описывает весь UX; можно иметь высокую конверсию и при этом ужасный опыт (тёмные паттерны, манипулятивные интерфейсы). Точно так же можно иметь высокую developer productivity по метрикам (много деплоев, быстрый CI) и при этом выгоревших разработчиков, которые пишут первое попавшееся решение, лишь бы закрыть тикет, потому что у них нет ментальных ресурсов на то, чтобы подумать о качестве.
Productivity — это один из результатов хорошего DX, но не единственный и не всегда главный. Retention, quality, innovation capacity, onboarding speed — всё это тоже следствия DX, и иногда они важнее чистой производительности.
Developer Productivity Engineering — специализированная практика
Developer Productivity Engineering (DPE) — термин, который активно продвигает компания Gradle (создатели Gradle Build Tool и Gradle Enterprise, теперь Develocity). DPE — это конкретная инженерная дисциплина, сфокусированная на ускорении и оптимизации build и test pipeline. Основные практики DPE включают build caching (чтобы не пересобирать то, что не изменилось), predictive test selection (чтобы запускать только релевантные тесты), flaky test detection (чтобы идентифицировать и изолировать нестабильные тесты) и build scan analysis (чтобы понимать, где именно тратится время при сборке).
DPE — это гораздо более узкое понятие, чем DX или даже Developer Productivity. Если DX — это весь опыт разработчика, а Developer Productivity — его измеримая часть, то DPE — это конкретный набор инженерных практик для оптимизации одного конкретного аспекта: скорости и надёжности build/test pipeline. Это как соотношение между «здоровье» (DX), «физическая форма» (Productivity) и «кардиотренировки» (DPE) — каждый следующий уровень всё более конкретный и специализированный.
Тем не менее, DPE решает реальную и болезненную проблему: по данным Gradle, в крупных организациях разработчики тратят в среднем одну неделю в месяц на ожидание сборок и разбирательства с упавшими тестами, и инвестиции в DPE-практики дают конкретный, измеримый результат.
Platform Engineering — реализация через продукт
Platform Engineering — это подход к улучшению DX через создание внутренней платформы как продукта. Платформенная команда строит инструменты, абстракции и self-service интерфейсы, которые позволяют остальным разработчикам в организации создавать, деплоить и обслуживать свои приложения, не разбираясь в деталях инфраструктуры.
Если DX — это «что мы хотим получить» (хороший опыт разработчика), то Platform Engineering — это «как мы этого добиваемся» (строим платформу). Классический пример: вместо того чтобы каждая продуктовая команда самостоятельно настраивала Kubernetes, мониторинг, CI/CD и secrets management, платформенная команда создаёт golden paths — проверенные и поддерживаемые способы сделать типовые вещи. Нужен новый микросервис? Вот шаблон, запусти одну команду, получи репозиторий с настроенным CI, мониторингом, базовыми алертами и документацией. Это и есть Platform Engineering в действии.
Важная деталь: Platform Engineering без DX-мышления может легко превратиться в ещё один источник боли. Если платформенная команда строит инструменты, которые удобны ей самой, но неудобны пользователям-разработчикам — это не улучшение DX, а его ухудшение. Именно поэтому один из ключевых принципов Platform Engineering — «platform as a product»: относиться к внутренней платформе как к продукту, проводить исследования пользователей, собирать обратную связь, итеративно улучшать.
Как всё это связано
Если нарисовать диаграмму, то она будет выглядеть примерно так: DX — это самый большой круг, внутри него Developer Productivity как одно из измерений, внутри Productivity — DPE как специализированная практика, а Platform Engineering — это подход к реализации, который пересекается со всеми остальными кругами, потому что платформа влияет и на опыт, и на производительность, и на скорость сборки.
На практике границы между этими понятиями размываются, и это нормально. Когда компания нанимает «Head of Developer Experience», этот человек может заниматься и платформой, и метриками, и процессами — потому что всё это части одного целого.
Что использовать в вашем контексте
Если вы только начинаете думать о DX в вашей компании, стоит не зацикливаться на терминологии, а сосредоточиться на конкретных проблемах ваших разработчиков. Проведите опрос, поговорите с людьми, посмотрите на метрики — и вы увидите, где болит. Может оказаться, что главная проблема — медленная сборка (и тогда вам нужны DPE-практики), или сложность инфраструктуры (и тогда вам нужна платформенная команда), или хаотичные процессы (и тогда вам нужны организационные изменения). В конечном счёте важно не то, как вы называете эту работу, а то, что вы её делаете.