ÂżQuĂ© es la Developer Experience? Y por quĂ© te deberĂa importar incluso si no eres una persona desarrolladora
Imaginemos que necesitas cumplir la osada tarea de bañar a un elefante, pero todos los Ătems necesarios para la tarea estĂĄn en una cabaña a 5 kilĂłmetros de distancia. TendrĂĄs que entrar a un vehĂculo, separar los Ătems necesarios y llevarlos al lugar de la tarea. Si, por alguna razĂłn, olvidas algĂșn Ătem, tendrĂĄs que regresar, duplicando tu tiempo inicial. Luego de que, finalmente, hayas bañado al elefante (una tarea para nada fĂĄcil, dado el tamaño del animal), tendrĂĄs que llevar de regreso todos los Ătems que usaste. Esas idas y vueltas y posibles percances aumentarĂĄn la complejidad de la tarea, que ya no es fĂĄcil. BĂĄsicamente, tardarĂas un dĂa entero en cumplir tus quehaceres y la menor falla costarĂa mucho tiempo.
Bueno, seguramente tu experiencia bañando elefantes no estĂĄ siendo buena. Hasta que, un dĂa, alguien decide construir una cabaña cerca de donde estĂĄ el elefante, y mover hasta allĂ todos los Ătems necesarios para el baño. ÂĄA partir de este momento, tu vida cambia! Ahora, todo estĂĄ cerca y la tarea fluye con facilidad, tu esfuerzo cognitivo disminuye drĂĄsticamente y puedes enfocarte mĂĄs en la tarea en sĂ, que es el baño. Por eso, desarrollas nuevas tĂ©cnicas para bañar elefantes, y te vuelves cada vez mejor en esto. El costo general tambiĂ©n disminuye para ti, porque un vehĂculo para ir y volver con Ătems de baño ya no es necesario. Con el tiempo extra, pasas a mantener un control de los Ătems mĂĄs usados en el baño y ahora los compras en grandes cantidades, optimizando aĂșn mĂĄs los costos. Lo que antes te llevaba todo un dĂa, de forma trabajosa y costosa, ahora te lleva menos de la mitad de un dĂa y ocurre de manera fluida y mĂĄs especializada.
Si reemplazas el elefante por un sistema complejo, y el baño por la tarea de desarrollar y mantener el sistema, estarås viendo exactamente la importancia de una buena Developer Experience: es decir, cómo la organización externa, los procesos, las herramientas y todo el entorno estån influenciados -positiva o negativamente- por la concepción técnica de tu producto y, consecuentemente, en sus resultados. Analizaremos, entonces, los pormenores de todo esto.
Sobre la DevEx
La Developer Experience es una capa de anålisis que busca ofrecer el mejor ambiente, condiciones y herramientas para que las personas desarrolladoras tengan una experiencia fluida, natural y sin grandes esfuerzos en el proceso de la concepción, mantenimiento, depuración e integración de softwares, para alcanzar asà mejores resultados en menos tiempo. La DevEx (a veces, también escrita como DX) abarcarå todo lo que influencia en el flujo pråctico del desarrollo, y cómo eso estå ayudando o dificultando las metas de la empresa o de los integradores de un determinado producto. La DX puede aparecer en algunos contextos diferentes, siendo los mås comunes:
Inner Source
El contexto interno de la empresa. BĂĄsicamente, las personas desarrolladoras que son empleadas o prestadoras de servicios estĂĄn experimentando el dĂa a dĂa de trabajo, y cĂłmo esa experiencia estĂĄ afectando el desarrollo del producto y, en consecuencia, las metas y los resultados.
Outer Source
El contexto externo de la empresa. Este es el caso de las empresas que ofrecen productos a otros desarrolladores como: herramientas, integraciones, paquetes open source y servicios en general. La DX, aquĂ, hace referencia a cĂłmo la persona desarrolladora, en tanto consumidora, se relaciona con el producto. Esa DX tambiĂ©n afecta las metas y los resultados, una vez que mĂĄs personas integradoras utilizan tu producto de manera mĂĄs fĂĄcil y se convierten en factores de Ă©xito para tu negocio.
Pero, ÂżcĂłmo tener una buena Developer Experience?
Es importante considerar que a una buena Developer Experience la construyen todos los agentes de su flujo de desarrollo y que puede representar un cambio lento y gradual de pensamiento y de cultura de una empresa. No hay una respuesta exacta a cĂłmo tener una buena DX, porque cada producto es Ășnico y cada contexto es Ășnico. De todas formas, existen algunos puntos especĂficos que puedes probar para definir start points:
Procesos: asegĂșrate de que las fases, procesos y prioridades de tu sector de desarrollo estĂ©n bien definidas, tengan sentido y se hayan comprendido en todo el equipo.
DocumentaciĂłn: asegĂșrate de que las demandas generadas por las personas desarrolladoras estĂ©n bien documentadas y que esa documentaciĂłn sea de fĂĄcil acceso. Este punto es especialmente importante si ofreces productos de integraciĂłn a la comunidad, softwares de open source, APIs pĂșblicas y afines: es necesario que las personas usuarias de tus productos e integraciones tengan a su disposiciĂłn una excelente documentaciĂłn.
ComunicaciĂłn: asegĂșrate de que la comunicaciĂłn sea fĂĄcil y fluida en los equipos de desarrollo, y tambiĂ©n entre otros equipos. En casos de Outer Source, verifica que sea sencillo reportar un problema, aclarar dudas o acercarse al producto. A nivel equipo: asegĂșrate de que tus metas se hayan definido bien, y que estĂ©n bien comunicadas y reflejadas en tu proceso organizacional.
Cultura: asegĂșrate de que la cultura de tu equipo y de la empresa en sĂ ofrecen un grado de confort y tranquilidad necesarios para un buen trabajo. Que no haya ninguna hostilidad, competencias innecesarias, fricciones sociales, incertidumbres, etc.
AutonomĂa: asegĂșrate de que cada agente tenga la mayor autonomĂa sobre su flujo de trabajo. Por ejemplo: las personas desarrolladoras deben tener acceso a herramientas adecuadas, bases de cĂłdigo, accesos privilegiados, buen hardware para trabajar y afines. Gestionar herramientas e infraestructura tampoco debe ser un problema a nivel tĂ©cnico. OfrĂ©celes autonomĂa.
Escucha a tu equipo: Haz reuniones constantes para medir la temperatura del equipo. Verifica los dolores y extrae oportunidades de lo que se hable.
5 Beneficios de una buena DX
Una buena DX se transforma en beneficios para toda la empresa, por ejemplo:
1. Buen ambiente y rutina previsible: Una mejor rutina para las personas desarrolladoras genera un esfuerzo cognitivo mĂĄs liviano y un ambiente psicolĂłgicamente saludable, lo que se convierte en una mejor performance. Puedes descubrir mĂĄs detalles sobre eso en este post: How psychological safety affects employee productivity
2. EconomĂa de tiempo: En un ambiente amigable y adecuado, las tareas y demandas fluirĂĄn en un proceso mucho mĂĄs ĂĄgil. Las fricciones como, por ejemplo, configuraciones de ambiente lentas y confusas, pequeños descubrimientos constantes que traban las tareas, ambientes inciertos, falta de documentaciĂłn constante, comunicaciĂłn incierta y lenta contribuyen mucho a un flujo mĂĄs lento y frĂĄgil, transformando tareas simples en demandas complejas y agotadoras, lo que se convierte en pĂ©rdida de tiempo. Una buena DX ayuda a disminuir drĂĄsticamente este problema.
3. Optimización de Costos: Una buena DX también ayuda a optimizar costos, aprovechar las horas de cada persona desarrolladora, lo que se refleja en los demås puestos del equipo, menos optimizaciones en infraestructura, retrabajo y horas de planificación incierta. Una mala DX, generalmente, lleva a mås horas aplicadas en la depuración y desarrollo de soluciones inciertas, mås reuniones, desperdicio de recursos, infraestructura inadecuada, bugs frecuentes, etc. Todo eso significa mås costos.
4. MĂĄs InnovaciĂłn: Una buena experiencia reduce el costo cognitivo de los problemas triviales a niveles mĂĄs bajos, posibilitando que la persona desarrolladora explore las mejores maneras de ejecutar las tareas, generando la mejor performance y, por momentos, innovaciĂłn. Una mala experiencia de desarrollo hace que parte del esfuerzo cognitivo se aplique en mantener lo que ya existe sin romper nada mientras no se apliquen cambios en el software.
5. MultiplicaciĂłn: Todos los puntos anteriores hacen al producto mĂĄs previsible y comprensible, por lo que el intercambio de informaciĂłn entre personas desarrolladoras o de un equipo a otro se vuelve mĂĄs rĂĄpido y claro. Esto ayuda a la multiplicaciĂłn de conocimiento con respecto al producto.
Todos estos puntos hacen a un producto mĂĄs saludable, a una cultura mĂĄs saludable, a costos menores y a un ambiente de trabajo mĂĄs leve y asertivo.
¿Qué métricas puedo usar para medir mi DX?
Change Failure Rate (CFR): ÂżCuĂĄntos incidentes crĂticos afectaron a tus deploys? Roll backs, bugs crĂticos, problemas de infraestrutura, errores de release, etc. Empieza a observar este nĂșmero por unos meses, define un valor aceptable y trabaja con tu DX para reducirlo siempre.
Change Scope Rate (CSR): ÂżCuĂĄntas veces los planes o definiciones de una tarea cambian a mitad del camino? Eso, generalmente, genera retrabajo, pĂ©rdida de tiempo y una mala DX. Lo ideal es que ese nĂșmero estĂ© por debajo de un cuarto del nĂșmero total de iniciativas.
Time to Start (TS): Una vez que se defina conceptualmente una nueva demanda, ¿cuånto tiempo tarda en salir de la planificación y entrar a el proceso de desarrollo? Esa métrica puede cruzarse con la CFR para insights interesantes, por ejemplo: si tu TS estå baja (råpida) pero la CFR estå alta, puede indicar debilidad en las definiciones, tu equipo puede estar recibiendo poco contexto sobre las demandas, etc.
Mean Time To Recovery (MTTR): ÂżCuĂĄnto tiempo tarda la demora en recuperarse? Considera que aquĂ no se trata del tiempo en arreglar el problema, sino en remover el sĂntoma del flujo de producciĂłn. Lo ideal es que una falla pueda aislarse en horas, o menos.
ConclusiĂłn
Alcanzar metas de manera asertiva y råpida es un factor importante y, a veces, decisivo en el desarrollo y mantenimiento de productos innovadores. Uno de los pilares para posibilitarlo es que la experiencia de la persona desarrolladora, a la hora de lidiar con la cultura interna, herramientas, anålisis y comunicación, sea fluida y clara. Eso se convertirå en beneficios para todos los puestos de trabajo: desde el técnico, la gestión, hasta la persona usuaria final, convirtiéndose en una mejor reputación para el producto, optimización de costos y buen ambiente de trabajo.
En cuanto a la pregunta inicial, la del tĂtulo del post, podemos decir: La Developer Experience estĂĄ relacionada con la manera en que todos los aspectos alrededor del proceso de desarrollo de un producto afectan a los resultados, y con cĂłmo optimizar esos aspectos para obtener buenos resultados. Y ese es, en sĂ, un excelente motivo para preocuparse con la DX de tu empresa: obtener buenos resultados.