En más del 50% de las organizaciones, los desarrolladores de software solo dedican el 30-40% de su tiempo al desarrollo de funcionalidades (State of DevOps 2018; 2019). Aunque DevOps y la Entrega Continua resuelven problemas específicos para aumentar el tiempo dedicado a actividades que agregan valor, el rendimiento general de su organización no se determina solo por la brecha entre desarrollo y operaciones. Mejorar la experiencia global de los desarrolladores es esencial para aumentar su eficacia. En este artículo, compartiremos contigo razones para invertir y enfoques clave para preparar a tus desarrolladores y, por lo tanto, a tu empresa, para el éxito.
La Experiencia del Desarrollador (DX) abarca todos los aspectos de la interacción del desarrollador con la organización, sus herramientas y sistemas.
Cómo se ve una mala experiencia del desarrollador
Observamos el impacto de las malas experiencias de los desarrolladores en diferentes paisajes tecnológicos en distintas industrias. Una causa fundamental de las malas experiencias de los desarrolladores es no considerar al desarrollador como un cliente. Si no se toma en cuenta la perspectiva del desarrollador y no se realiza investigación del cliente, no se prueba la viabilidad del producto o servicio proporcionado. En lugar de solucionar los verdaderos problemas de los desarrolladores, las soluciones pueden aumentar innecesariamente la complejidad para los equipos de desarrollo. En última instancia, el tiempo de lanzamiento del software aumenta cuando los desarrolladores están limitados por malas experiencias, y aunque estas a veces son muy específicas del dominio y contexto, los patrones repetitivos son:
- Las interfaces no automatizables (GUI) de las herramientas y sistemas proporcionados obligan a los desarrolladores a realizar actividades manuales que no agregan valor. Los desarrolladores dependen de la capacidad de automatizar tareas e integrar herramientas para una entrega de software eficiente, confiable y continua.
- Los recursos de hardware e infraestructura suelen ser escasos y difíciles de conseguir, especialmente en etapas tempranas o proyectos de tecnología emergente. La baja disponibilidad de entornos cercanos a la producción genera ciclos de retroalimentación largos, inhibe la experimentación y afecta negativamente la calidad del software.
- La configuración inicial y de incorporación es tediosa y lleva días hasta que se pueda escribir y lanzar la primera línea de código. Luchar contra una gran cantidad de tickets solo para obtener una licencia o permiso aplasta la motivación cuando se unen nuevos miembros al equipo y aumenta el tiempo dedicado a actividades que no agregan valor.
- Las estructuras de equipo fragmentadas introducen dependencias ineficientes de transferencia entre equipos. Aunque el ejemplo más popular es el aislamiento del desarrollo y las operaciones, esto también se aplica a otras brechas en un flujo de entrega.
- La falta de habilitación al consumir APIs, bibliotecas o plataformas aumenta la carga cognitiva de un equipo. Sin orientación, ejemplos y conocimientos compartidos, cada equipo tiene que perder tiempo descubriendo cómo extender o integrarlos. Superar la carga cognitiva de un equipo lleva a cambios de contexto inútiles y, por lo tanto, a retrasos y problemas de calidad.
1. Figura: Un ejemplo: Puntos de dolor de los desarrolladores. Recogidos en el contexto de una plataforma en la nube y una plataforma de automoción.
Estás perdiendo dinero
La mala experiencia del desarrollador conduce a una baja efectividad del desarrollador y del rendimiento organizacional. Veamos algunos ejemplos de por qué deberías invertir en una buena experiencia del desarrollador:
Acelerar la entrega de software acelera el tiempo de comercialización
Las limitaciones y los problemas en el proceso de desarrollo son una oportunidad para acelerar la entrega de software. En uno de nuestros proyectos automotrices, aprendimos que la falta de disponibilidad de hardware y los pasos manuales en el proceso de prueba llevaron a un ciclo de prueba de 2-3 semanas para los desarrolladores. Esto incluía esperar en espacios de tiempo con un banco de pruebas de hardware y también trasladarse físicamente a otro edificio con todo el equipo necesario.
Debido a que esta tarea se realizaba varias veces a la semana y era fundamental para la calidad del software, la ventaja de resolver este problema era alta. Al permitir actualizaciones remotas y pruebas automatizadas en los bancos de prueba, el tiempo del ciclo de prueba se redujo de semanas a horas. Los desarrolladores se beneficiaron de una experiencia convincente que también fomentó más pruebas. La entrega acelerada de software permitió al negocio llevar el software a las manos del cliente mucho antes, y con mayor calidad.
La flexibilidad permite la experimentación que a su vez permite la innovación
Una de las razones por las que las organizaciones se trasladan a una infraestructura en la nube es la flexibilidad y la facilidad para escalar la potencia informática. Pero, ¿por qué es tan importante? Un desencadenante definitivamente es el potencial de ahorro de costos. ¿Por qué alquilar una nueva capacidad de servidor durante todo un mes si solo desea hacer una prueba de carga que se puede hacer en menos de un día?
Sin embargo, hay otro factor, probablemente aún más importante, que proporciona la infraestructura en la nube y es la flexibilidad. Los equipos no solo pueden escalar automáticamente "presionando un botón", sino que también tienen una amplia variedad de servicios a su disposición. Esta flexibilidad de uso de servicios listos para usar y API convincentes es un gran incentivo para comenzar a experimentar y potencialmente innovar sin correr grandes riesgos o hacer grandes inversiones que podrían no dar resultado.
Atraer y retener talento en TI
¿Estás motivado si te sientes improductivo, bloqueado y esperando la mayor parte del día? Probablemente no. Lo que motiva a la mayoría de las personas también se aplica a los desarrolladores. La motivación crea un flujo que fomenta la creatividad en beneficio de su organización.
Con varias empresas innovadoras compitiendo por el mejor talento tecnológico, las organizaciones ya no pueden permitirse no invertir en un entorno que permita a los desarrolladores hacer lo que vinieron a hacer: lanzar características impresionantes que deleiten a sus clientes.
Cómo puedes lograr una buena experiencia del desarrollador
Una buena experiencia del desarrollador requiere más que reducir la brecha entre Dev y Ops y proporcionar herramientas de entrega continua. Si realmente deseas aumentar la efectividad de tus desarrolladores y, por lo tanto, acelerar tus objetivos comerciales, deberías probar algunos de los siguientes enfoques:
Una buena experiencia para los desarrolladores requiere más que simplemente reducir la brecha entre Desarrollo y Operaciones y proporcionar herramientas de Entrega Continua. Si en serio deseas aumentar la efectividad de tus desarrolladores y, por lo tanto, acelerar tus objetivos empresariales, deberías probar algunos de los siguientes enfoques:
- Adoptar el pensamiento de producto para productos técnicos y plataformas que faciliten el trabajo de los desarrolladores en lugar de entorpecerlo.
- Adoptar una visión holística de la trayectoria de los desarrolladores para comprender su camino, puntos de contacto e influencias, e identificar las limitaciones fundamentales.
- Identificar y acortar los bucles de retroalimentación para mejorar los flujos de trabajo frecuentes y medir continuamente el progreso.
- Permitir y fomentar la colaboración para eliminar los silos ineficaces y fomentar el entendimiento mutuo.
- Crear una cultura en la que los miembros del equipo se sientan seguros para experimentar y animados a innovar.
Invierte en la experiencia de tus desarrolladores
Una mala experiencia para los desarrolladores disminuye su efectividad. Una buena experiencia para los desarrolladores permitirá que tus características lleguen a producción de forma rápida, confiable y segura. Deberías invertir en esto. Tomar la perspectiva de los desarrolladores beneficiará a tu empresa.
¿Estás buscando pasos concretos para mejorar la experiencia de los desarrolladores en tu organización? Lee más en la parte 2.
Aviso legal: Las declaraciones y opiniones expresadas en este artículo son las del autor/a o autores y no reflejan necesariamente las posiciones de Thoughtworks.