Let's talk about DX, Baby! - Jo Franchetti - NDC London 2024
Этот доклад Джо Франкетти на конференции NDC {London} 2024 посвящен теме developer experience (DX, DevEx), по которой относительно недавно вышло несколько whitepapers. Эта тема мне импонирует, поэтому я расскажу кратко о чем была речь в этом докладе:
-
Автор рассказывает про важность DX, рассказывая историю о разработчике, который столкнулся с трудностями при интеграции нового инструмента.
-
Из этого выводятся три составляющие подхода DX: cognitive load, flow state и feedback loops -- Когнитивная нагрузка - это объем информации, который разработчик должен обработать для выполнения задачи. -- Состояние потока - это состояние ума, когда человек полностью погружен в свою деятельность и чувствует себя мотивированным и эффективным. -- Циклы обратной связи - это скорость и качество ответной реакции на произведенные действия
-
Дальше звучит тезис о том, что если работать над улучшением опыта разработчика, то это может снизить когнитивную нагрузку и повысить продуктивность.
-
Для попадания в состояние потока нам нужна среда, где есть баланс между уровнем мастерства и задачами, которые ставятся перед разработчиками. Это позволяет разработчикам чувствовать, что они контролируют процесс и могут использовать инструменты.
-
Циклы обратной связи позволяют разработчикам получать информацию о том, правильно ли они выполняют задачи и где они испытывают трудности (условно запуски CI/CD с прогоном тестов дают полезную обратную связь, но если мы ее ждем часами, то мы теряем в эффективности)
-
Для измерения и оценки изменений можно использовать опросы (NPS, CSAT), оценку качества кода (code complexity, code coverage, number of bugs, number of issues), developer productivity (тут мерить можно по разном), development lifecycle
-
Дальше автор предлагает разделять Internal DX и External DX -- Internal DX - тут фокус на улучшении продуктивности, выравнивании с бизнес-целями -- External DX - тут фокус на adoption rates, вовлечении коммьюнити и промотировании продукта более широкой аудитории
-
А дальше автор показывает гигиенические факторы при создании репозиториев с кодом: -- Соблюдение стандартов кодирования -- Использование dev контейнеров и codespaces -- Избегание глобальных настроек -- Создание всеобъемлющего readme, включающего введение, цели, задачи, ключевые особенности, использование, настройку, ограничения, рекомендации по внесению изменений, контактные данные, кодекс поведения, лицензию.Грамотное написание технических текстов, понимание аудитории, создание образа читателя. -- Создание понятного кода - функций без побочных эффектов, функций с меньшим количество аргументов, promises over callbacks, ранний возврат из функций, etc. Важно отслеживать читаемость кода, так как большую часть времени мы поддерживаем уже созданный код, а не создаем новый. Сложный код увеличивает когнитивную нагрузку и ухудшает developer experience
В конце автор призывает к улучшению опыта разработчиков и призывает к обсуждению и обмену мнениями о том, как сделать код более понятным и удобным для чтения.
P.S. Я уже писал на тему developer productivity и developer experience несколько статей
- В общем про подход к теме developer productivity
- Обзор whitepapers
- Обзор доступных коммерческих платформ
#Processes #Management #Performance #Engineering #Software #SoftwareDevelopment #Leadership