El Auge de la Experiencia de Desarrollador
Nos movemos en tiempos de avance vertiginoso y éste significa, casi siempre, perder la referencia de cómo hacíamos las cosas antes para enfrentarnos al cómo las haremos a partir de ahora. De ahí que sea tan importante (y tan difícil) no apegarse a una manera concreta de hacer las cosas sino centrarse en el qué estamos haciendo y en el por qué. El cómo será cambiante y cada vez dispondrá de más opciones por lo que para escoger una de estas opciones también seremos más exigentes con la curva de acceso y con la comodidad de desarrollo y mantenimiento con las tecnologías que utilicemos.
Cuando hablamos de un sector tan volcado en el cómo hacer las cosas como es el de Desarrolladores de Software, un factor diferencial para elegir una Tecnología, una Herramienta, un Framework o un Servicio Externo (sí, hemos entrado en la era en la que los Servicios Externos también son parte del stack con el que desarrollamos) es la Experiencia de Desarrollador (Developer Experience o DX), que no es sino el subconjunto de Experiencia de Usuario que aplica a todas las facetas del desarrollo. Esto implica fundamentalmente la facilidad de uso, la efectividad en la entrega del valor y la curva de aprendizaje lo más rápida posible como factores a evaluar a la hora de decidir qué elementos utilizamos para desarrollar Software.

Experiencia de Desarrollador
La Experiencia de Desarrollador siempre ha sido importante y, aunque tiene un componente subjetivo, como lo tiene la Experiencia de Usuario en general, también dispone de unas premisas y de unas reglas fundamentales que aplican a su valoración global.
Mi primera experiencia de desarrollo fue seguramente la programación de sencillos videojuegos con el lenguaje de programación MSX-BASIC sobre mi microcomputador MSX2 cuando era un niño. Para la época este microcomputador de consumo era uno de los más avanzados y ofrecía una Experiencia de Desarrollador que ahora consideraríamos inaceptable, pero que entonces era suplida por la pasión de conocimiento. Este vector de voluntad nos lleva, a veces, a superar productos con pobre DX.
Cuando nos aproximamos a la Experiencia de Desarrollador desde una perspectiva de análisis lo hacemos en términos de identificación de obstáculos para alcanzar la entrega de valor. Sobre un IDE por ejemplo ¿Cuántos clicks tengo que realizar para las tareas más comunes de mi día a día?¿Cuánto tarda en arrancar?¿Es intuitiva y se entiende su interfaz sin tutoriales ni ayudas?¿Viene con todo lo que necesito o tengo que instalar múltiples addons?¿Tiene una comunidad útil detrás? Y lo que es más importante ¿Es fácil de usar?

¿Por qué es tan importante?
En primer lugar es un mandato evolutivo. La evolución en el uso de todos los productos y servicios (tecnológicos o no) que consumimos (desde una tostadora a la reserva de un hotel) es hacia una mejor Experiencia de Usuario, fundamentalmente una mayor entrega de valor con menor esfuerzo, una mayor comodidad y facilidad de uso. ¿Recordáis lo difícil que era planear un viaje hace diez años? Hoy en día puedes contratar un viaje complejo (transporte, alojamiento, actividades, etc) desde un móvil sobre un tren en marcha en unos minutos.
En segundo lugar, debido a la evolución comentada anteriormente, cada día el ser humano exige un menor esfuerzo para recibir el valor que desea. Desde un punto de vista crítico, cada día somos más perezosos para obtener lo que queremos. Si alguien me ofrece el mismo dron al mismo precio y a las mismas condiciones (en resumen, el mismo valor) haciendo un click, ¿Para qué voy a comprarlo en otros sitios donde tengo que hacer dos o más clicks? Si mi tienda online habitual guarda mi dirección de entrega y mi método de pago e incluso me pone el link directo para comprarlo porque sabe que lo quiero quizá incluso esté dispuesto a pagar un poco más.
En tercer lugar, hay una relación demostrada entre esfuerzo/tiempo para alcanzar el valor y conversión. Esto es, a menor esfuerzo/tiempo para alcanzar el valor más está dispuesto el usuario a dar a cambio, mayor satisfacción de uso obtendrá del producto y mayor predisposición tendrá a recomendarlo.

Aterrizando la Experiencia de Desarrollador
Como desarrolladores de Software estamos acostumbrados a sufrir. El foco de la Experiencia de Usuario ha sido siempre el Producto y no las Tecnologías o Herramientas con las que se construye, que generalmente estaban diseñados con una carga implícita de alto esfuerzo de aprendizaje, de dificultad de uso e incomodidad, para “profesionales especializados”.
Pero el siglo XXI nos ha descubierto que, oh sorpresa, estos profesionales especializados también somos Usuarios que deseamos el máximo valor con el menor esfuerzo. Y, oh sorpresa, también hemos descubierto que las propias Tecnologías y Herramientas con las que construimos Software a su vez son Productos.
Todo esto coincide con el auge de una evolución convergente de las Tecnologías, Herramientas y Servicios para hacer Software: La mayor parte de los Lenguajes de Programación, IDEs, Frameworks, Tools o Servicios se están enriqueciendo con los mismos conceptos, copiándose mutuamente y evolucionando hacia un solapamiento funcional en el que finalmente, como desarrolladores, podemos hacer lo mismo (una Aplicación Web, un API, una persistencia de datos, una aplicación móvil o una suite de tests, por ejemplo) con múltiples caminos (Vue o React, Java o Node, MySQL o Mongo, Swift u Objective-C, Jasmine o Jest, con VSCode o IntelliJ, sobre AWS o Azure, por poner algunos ejemplos).
Y si podemos hacer lo mismo con múltiples elecciones ¿Qué nos hará decantarnos por una u otra? Hay muchos factores que influyen en el proceso de decisión, desde lo que está de moda o usa la mayoría (“si lo usan todos será por algo”) para acceder al mayor ecosistema o a mayores posibilidades laborales, hasta el muy extendido “es lo que mejor conozco” por haberlo estudiado en la Universidad o haber trabajado con ello con mayor asiduidad. Un factor en auge, que cada vez será más importante en mi opinión sera la Experiencia de Desarrollador, por la propia evolución que tenemos como Usuarios y como sociedad.

VueJS: Un ejemplo
Un ejemplo que suelo poner de fantástica Experiencia de Desarrollador es el framework de Frontend VueJS, que ya ha sido diseñado con una orientación prioritaria a la DX. Analicemos un poco este ejemplo.
La curva de aprendizaje de VueJS es la mejor de todos los frameworks modernos de Frontend y la tengo contrastada como formador y como director de equipos. He llegado a ver un equipo Mobile sin experiencia previa en Frontend ni JavaScript ser productivo con VueJS en tan sólo una semana.
Gracias a su moderno CLI resulta inmediato crear un proyecto con todo el tooling necesario para empezar su desarrollo con testing unitario y funcional integrados.
En cuanto a la comodidad de desarrollo su estructura de diseño de Componentes en un único archivo reduce drásticamente la carga cognitiva necesaria para plasmar una idea en código útil, con el marcado, la lógica y los estilos del mismo accesibles de un vistazo en el mismo sitio. Es probable que este diseño en Single File Components sea una de las decisiones de Experiencia de Desarrollador más brillantes tomada por su desarrollador, con un impacto más claro en el día a día.
Así mismo, los conceptos prestados de frameworks como Angular, como las directivas, y su excelente documentación tienen como objetivo facilitar siempre el uso por parte del Desarrollador y minimizar su esfuerzo.
VueJS no es perfecto, como no lo es ninguna Tecnología, Framework, Tool o Servicio, pero que haya sido diseñado orientado a la mejor Experiencia de Desarrollo lo hace diferencial, en mi opinión, y es el camino a tomar por muchos Productos dedicados a la construcción de Software.

Conclusión
La Experiencia de Desarrollador (como la UX en general) es crucial en el proceso en el que quienes nos dedicamos a esto nos vemos inmersos día a día: el Diseño y la Construcción de Software.
Ya no es necesario sufrir para realizar Productos o Servicios digitales, podemos y debemos aspirar a disfrutar no sólo de lo que hacemos sino de cómo lo hacemos.
Más aún, cuanto menor sea el tiempo y el esfuerzo dedicado en el cómo más podremos centrarnos en el qué. La escala de abstracción sobre lo que construimos no hace sino subir y subir, por lo que cada vez, con menor esfuerzo podemos hacer cosas más ambiciosas.
Conceptos como el Cloud-first, la automatización de procesos de Construcción y Despliegue o la adopción de Servicios cada vez más sofisticados para evitarnos esfuerzo repetitivo e ingrato, son el futuro.
Si aún no has llegado a la revolución de la Experiencia de Desarrollador, préstale la atención que se merece, tanto si construyes Software como si ayudas a construirlo.
Desde una perspectiva humanista, la que más me gusta, la Experiencia de Desarrollador trata de hacer nuestra vida profesional más satisfactoria, gratificante y potente.