¿Sabes lo que es DPE?


DPE se refiere a Developer Productivity Engineering y es el nombre de una nueva disciplina que nace con el objetivo en mejorar la productividad de los desarrolladores a través de automatización, observabilidad y mejora de las herramientas.
El trabajo de un desarrollador cuando está programando tiene tres fases: code -> build -> test, el desarrollador repite esta secuencia decenas o incluso centenas de veces al día. Y en muchos casos las fases de build y test pueden llevar del orden de minutos. Por ejemplo: si el build de una aplicación tarda 5 minutos y el desarrollador hace 10 builds al día, eso son 50 minutos que el desarrollador tiene que estar esperando por día. Y del mismo modo, la fase de testing puede aumentar ese tiempo de espera del desarrollador. Si esto lo multiplicamos por el número de desarrolladores en una compañía, el coste es significativo.
Este es un problema conocido en muchas empresas grandes, las cuales hace años que tiene equipos y divisiones enteras dedicadas a trabajar en ello. Recuerdo cuando trabajaba en Amadeus, hace más de diez años, que existía un equipo de Dev Support que se encargaba de desarrollar y optimizar las herramientas que utilizábamos los desarrolladores para hacer los builds y otras tareas de desarrollo. Y desde hace ya unos años que en la industria se viene hablando de la Developer Experience (o DevEx), que pone el foco en cómo mejorar la experiencia de los desarrolladores y con ello los resultados de la empresa.
Sin embargo, en empresas más pequeñas o menos maduras tecnológicamente, lo optimizado que esté el entorno y la experiencia de desarrollo depende en gran medida del tiempo que le haya dedicado cada programador. Personalmente dentro de un mismo equipo he visto grandes diferencias en las herramientas y en el entorno de desarrollo de dos programadores, lo cual suponía horas de diferencia por semana. Esto sería el equivalente a dar un PC mucho más lento a algunos programadores, por ejemplo.
DPE propone una serie de técnicas y prácticas que se pueden aplicar para la mejora de la productividad de todo el equipo:
Build Caches (locales y remotas): Aprovechan builds pasados para acelerar los nuevos builds.
Distributed Test Execution: Permite la ejecución de los tests de forma paralela y distribuida en una infraestructura dedicada, reduciendo el tiempo significativamente.
Predictive Test Selection: En lugar de ejecutar todos los tests, ejecuta solo los tests relevantes, según el código modificado.
Monitorización: Permite extraer métricas de productividad, para detectar problemas, aplicar optimizaciones a nivel global y medir las mejoras.
Estas técnicas no solo se aplican en el entorno local, sino que también se aplican a mejorar los CI/CD y la infraestructura de testing. Suponiendo ganancias y reducciones de tiempo a lo largo de todo el ciclo de desarrollo de software.
Creo que ponerle un nombre a esta disciplina es el primer paso para darle visibilidad, empezar a hablar de ello y democratizarla. Del mismo modo que Devops se ha convertido en una pieza fundamental de toda empresa de software, DPE puede ser el siguiente eslabón hacia un entorno de desarrollo más productivo, lo cual reduce el time to market, aumenta la calidad del software, aumenta la felicidad de los desarrolladores (y retención) y en última instancia hace que los clientes estén más contentos.
¿En tu empresa ya lo aplicáis? Si te interesa saber más y ver cómo beneficiarte de ello, puedo ayudarte. Puedes escribirme aquí.