Kent Beck, el padre de Extreme Programming y de varias herramientas de xUnit, nos cuenta sobre las tendencias en el mundo del software y la sinergía entre el negocio y el desarrollo ágil. La razón por la cual Ágil es cada vez más popular es porque responde a las necesidades del negocio a medida que evoluciona.
Tendencias en el desarrollo
En los desarrollos actuales es común ver que aumenta la frecuencia de los despliegues en producción. Siempre se dijo que era bueno desplegar seguido, para obtener feedback de manera más temprana. Hace unos años se hablaba de desplegar "una vez al día", lo que parecía casi un imposible, y varios se conformaban con despligues semanales en los ambientes productivos. Hoy ya tenemos proyectos líderes en el mercado que despliegan todos los días, o incluso más seguido. Por ejemplo, el portal de fotografía Flicrk despliega cada media hora.
La habilidad de desplegar seguido no sólo permite un feedbakc temprano, sino que al negocio se le brinda una enorme flexibilidad y capacidad de adaptación a la competencia. Existen varios patrones de despliegue y tecnologías que nos ayudan a alcanzar este objetivo.
Este despliegue frecuente es posible, entre otras cosas, porque también aumenta la cantidad de pruebas que se ejecutan. Hoy tenemos excelentes herramientas para crear distintos tipos de prueba, que desde Sistemas nos permite asegurar lo más posible la calidad del software que creamos. Esto resulta en que necesitamos servidores de integración continua más potentes para aprovechar al máximo los beneficios de las pruebas.
La co-ubicación de personas está disminuyendo. Cada vez es más común ver equipos distribuidos, que no están ubicados en el mismo lugar. Todos sabemos que la co-ubicación es ideal y el contacto cara-a-cara es el mejor, pero los equipos distribuidos son una realidad que se deberá enfrentar y resolver.
Por último, también está en aumento la complejidad de los desarrollos. Los desarrollos son cada vez más grandes y complejos, y muchos tienen millones de potenciales usuarios. Más aún, deben ser facilmente adaptables, para implementar nuevas características velozmente. Esto también se evidencia en el aumento en la frecuencia de despliegues y el aumento en la cantidad de pruebas, como necesidad de mantener la calidad en grandes productos.
Tendencias en el negocio
Los negocios también están cambiando, y se hacen evidente ciertas tendencias que se relacionan con muchos principios ágiles.
Hoy en día cualquier equipo y negocio necesitan poder rendir cuentas de sus actos. No es facil, y el no hacerlo puede tener algunas ventajas... a corto plazo. Ser capaz de rendir cuentos de lo que hacemos es un principio fundamental para crear relaciones duraderas.
Por otro lado, quien necesite conocer algún dato, lo va a conseguir. Mucho mejor que lo haga directamente de nosotros, que a través de terceros. Dicho de otra forma, hoy vivimos en un mundo donde la información circula cada vez más rápida y libremente. Es preferible que el mismo negocio o equipo cuente sus actos (y consecuencias) que dejar que los clientes se enteren por otros medios.
Por ejemplo, el Hospital de Oregon publica la tasa de mortalidad de todas sus operaciones. Obviamente son datos sensibles y duros, pero de gran utilidad para los pacientes.
Al poder rendir cuentas de nuestros actos, surge el principio de responsabilidad. Somos responsables por el producto que ofrecemos, y tenemos que dar garantías por el mismo. La garantía que demos demuestra nuestra propia confianza en el proceso que se usa.
Por ejemplo, las automotrices Mitsubishi, Hyundai y KIA ofrecen 10 años de garantía o 100.000 millas por sus vehículos. Esto le muestra a sus clientes un alto grado de responsabilidad y confianza por el producto que ofrecen.
Otra tendencia relacionada con los puntos anteriores es la transparencia. Debemos comunicarnos directamente con el cliente, explicando lo que ocurre sin rodeos ni intentos de excusarnos. Rendimos cuenta de nuestros actos, somos responsables y transparentes, y por eso podemos informar los problemas que tenemos sin necesidad de ocultar situaciones.
Todo esto apunta al objetivo final más importante: crear una relación duradera con el cliente. Es sabido que es mucho más barato mantener a los clientes que salir a buscar nuevos.
Hace un tiempo, la relación con el cliente se parecía más a una transacción: yo tengo algo que vos necesitás, intercambiamos dinero y eso es todo. Hoy en día se busca crear una relación a largo plazo con el cliente: yo ofrezco cosas, algunas de las cuales quizás te resulten útiles (en cuyo caso intercambiamos dinero), pero lo que nos interesa es escucharnos y conocer nuestras necesidades.
La relación de confianza
Todos estos principios apuntan a lograr el objetivo máximo final: crear una relación de confianza con el cliente. La confianza es algo que se cultiva por años, y es el fruto de poder rendir cuenta de nuestros actos, ser responsables y transparentes.
Tendencia del mercado y Ágil
El mercado también cambia; los sistemas ya no son más "magia negra" que ocurre, y el mercado está mucho más informado sobre los productos que necesita. Hoy en día el mercado reclama socios que le entreguen software efectivo, confiable, en tiempo y a un precio razonable.
El software debe ser efectivo, debe hacer algo útil para el cliente. De nada sirve todo un año de desarrollo (¡o más!) para terminar entregando algo que al cliente no le sirve, ya sea por resultar obsoleto o porque no es lo que se imaginaba.
El software debe ser confiable, debe funcionar bien cuando se lo necesita. El software que entregamos es la cara visible de nuestro esfuerzo, y una herramienta de trabajo para nuestro cliente. Parte del negocio de nuestro cliente depende de nuestro software, por lo que debemos entregar un producto que honre la relación que mantenemos con él.
El software debe entregarse a tiempo, en los plazos a los que nos comprometimos. Sistemas parecería ser el único sector en donde cumplir con una fecha parecería ser algo opcional (incluso, hasta se llegan a esperar felicitaciones para cuando se cumple con lo dicho!). El cliente planifica y coordina sus acciones en base a los compromisos y promesas asumidas por sus socios.
La realidad Ágil
Ágil está en crecimiento porque en el fondo no trata sobre el software, sino sobre el negocio. Ágil responde a las necesidades del negocio. Los valores del manifiesto ágil son aquellos que permiten crear relaciones de confianza entre las personas, entre el equipo y el cliente.
Ágil nos brinda de técnicas para ser transparentes, para estimar y poder comprometernos, para ajustarse a las necesidades de la realidad y así producir software confiable y útil para el cliente.
"Trends in Agile Development", por Kent Beck
Pueden ver la conferencia Trends in Agile Development (video en inglés) donde Kent explica estos y otros temas interesantes.