NTC

6 Años

1 Comentarios

Érase una vez...

Hoy les dejo una adaptacion de un cuentito para que se vayan a dormir intranquilos...

"Érase una vez en un lejano país donde vivían dos cerditos, Chucho y Checho que, además, eran hermanos. Ambos eran los cerditos más listos de la granja y, por eso, el gallo Tucho (el gerente de la misma) organizo una reunión en el establo, donde les encargo desarrollar un software para controlar el almacén de granos.

Les explico que quería saber en todo momento: cuantos sacos de grano había y quien metía y sacaba sacos de grano del almacén. Para ello solo tenían un mes pero les advirtió que, en una semana, quería ya ver algo funcionando. Al final de esa primera semana, eliminaría a uno de los dos.

Chucho, que era el más joven e impulsivo, inmediatamente se puso manos a la obra. “¡No hay tiempo que perder!”, decía. Y empezó rápidamente a escribir líneas y líneas de código. Algunas eran de un reciente programa que había ayudado a escribir para la guardería de la vaca Paca. Chucho pensó que no eran muy diferentes un almacén de grano y una guardería. En el primero se guardan sacos y en el segundo, pequeños animalitos. De acuerdo, tenía que retocar algunas cositas para que aquello le sirviera pero bueno, esto del software sirve para reutilizar lo que ya funciona, ¿no?

Checho, sin embargo, antes de escribir una sola línea de código comenzó acordando con Tucho dos cosas: que era exactamente lo que podría ver dentro de una semana y como sabría que, efectivamente, estaba terminada cada cosa.

Tucho quería conocer, tan rápido como fuera posible, cuantos sacos de grano había en cada parte del almacén porque sospechaba que, en algunas partes del mismo, se estaban acumulando sacos sin control y se estaban estropeando. Como los sacos entraban y salían constantemente, no podía saber cuántos había y donde estaban en cada instante, así que acordaron ir contabilizándolos por zonas y apuntando a que parte iba o de que parte venia, cada vez que entrara o saliera un saco. Así, en poco tiempo podrían tener una idea clara del uso que se estaba dando a las distintas zonas del almacén.

Mientras Chucho adelantaba a Checho escribiendo muchas líneas de código, Checho escribía primero las pruebas automatizadas. A Chucho eso le parecía una pérdida de tiempo. ¡Solo tenían una semana para convencer a Tucho!

Al final de la primera semana, la demo de Chucho fue espectacular, tenía un control de usuarios muy completo, hizo la demostración desde un celular y enseño, además, las posibilidades de un generador de reportes muy potente que había desarrollado para otra granja anteriormente. Durante la demostración hubo dos o tres problemitas y tuvo que arrancar de nuevo el programa pero, salvo eso, todo fue genial.

La demostración de Checho fue mucho más modesta, pero cumplió con las expectativas de Tucho y el programa no fallo en ningún momento. Claro, todo lo que enseño lo había probado muchísimas veces antes, gracias a que había automatizado las pruebas. Checho hacia TDD, es decir, nunca escribía una línea de código sin antes tener una prueba que le indicara un error. Chucho no podía creer que Checho hubiera gastado más de la mitad de su tiempo en aquellas pruebas que no hacían más que retrasarle a la hora de escribir las funcionalidades que había pedido Tucho.

El programa de Chucho tenía muchos botones y muchísimas opciones, probablemente muchas más de las que jamás serian necesarias para lo que había pedido Tucho, pero tenía un aspecto “muy profesional”.

Tucho no supo qué hacer. La propuesta de Checho era muy robusta y hacia justo lo que habían acordado. La propuesta de Chucho tenía cositas que pulir, pero era muy prometedora. ¡Había hecho la demostración desde un celular! Así que les propuso el siguiente trato: “Les pagare un 50% más de lo que inicialmente habíamos presupuestado, pero solo al que me haga el mejor proyecto. Al otro no le daré nada”.

Era una oferta complicada porque, por un lado, el que ganaba se llevaba mucho más de lo previsto. Muy tentador. Pero, por el otro lado, corrían el riesgo de trabajar durante un mes completamente gratis.

Chucho, tan impulsivo y arrogante como siempre, no dudo ni un instante. “¡Trato hecho!”, dijo. Checho explico que aceptaría solo si Tucho se comprometía a colaborar como lo había hecho durante la primera semana. A Tucho le pareció razonable y los convoco a ambos para que le enseñaran el resultado final en tres semanas.

Chucho se marcho silbando y llamo a su primo Sixto, que sabía mucho y le aseguraría la victoria, aunque tuviera que darle parte de las ganancias. Ambos se pusieron rápidamente manos a la obra. Mientras Chucho arreglaba los defectos encontrados durante la demo, Sixto se encargo de diseñar una arquitectura que permitiera enviar mensajes desde el celular hasta un webservice que permitía encolar cualquier operación para ser procesada en paralelo por varios servidores y así garantizar que el sistema estaría en disposición de dar servicio 24 horas al día, los 7 días de la semana.

Mientras tanto, Checho se reunió con Tucho y Mencho (el encargado del almacén) para ver cuales deberían ser las siguientes funcionalidades a desarrollar. Les pidió que le explicaran, para cada petición, que beneficio obtenía la granja con cada nueva funcionalidad. Y así, poco a poco, fueron elaborando una lista de funcionalidades priorizadas y resumidas en una serie de tarjetas.

A continuación, Checho fue, tarjeta a tarjeta, discutiendo con Tucho y Mencho cuanto tiempo podría tardar en terminarlas. De paso, aprovecho para anotar algunos criterios que luego servirían para considerar que esa funcionalidad estaría completamente terminada y eliminar alguna ambigüedad que fuera surgiendo. Cuando Checho pensó que, por su experiencia, no podría hacer mas trabajo que el que ya habían discutido, dio por concluida la reunión y se dispuso a trabajar.

Antes que nada, resolvió un par de defectos que habían surgido durante la demostración y le pidió a Tucho que lo validara. A continuación, se marcho a casa a descansar. Al día siguiente, tomo la primera de las tarjetas y, como ya había hecho durante la semana anterior, comenzó a automatizar los criterios de aceptación acordados con Tucho y Mencho. Y luego, fue escribiendo la parte del programa que hacía que se cumplieran esos criterios de aceptación.

Checho le había pedido ayuda a su amigo Gaturro, un gato vegetariano que había venido desde Santa Cruz a pasar el invierno. Gaturro no sabía programar, pero era muy rápido haciendo cosas sencillas. Checho le encargo que comprobara constantemente los criterios de aceptación que él había automatizado. Así, cada vez que Checho hacia algún cambio en su programa, avisaba a Gaturro y este hacia, una tras otra, todas las pruebas de aceptación que Checho iba escribiendo. Y cada vez había mas. ¡Este Gaturro era realmente veloz e incansable!

A medida que iba pasando el tiempo, Chucho y Sixto tenían cada vez más problemas. Terminaron culpando a todo el mundo. A Tucho, porque no les había explicado detalles importantísimos para el éxito del proyecto. A la vaca Paca, porque había incluido una serie de cambios en el programa de la guardería que hacía que no pudieran reutilizar casi nada. A los inventores de los SMS y los webservices, porque no tenían ni idea de cómo funciona una granja.

Eran tantos los frentes que tenían abiertos que tuvieron que prescindir del envió de SMS y buscaron un generador de páginas web que les permitiera dibujar el flujo de navegación en un grafico y, a partir de ahí, generar el esqueleto de la aplicación. ¡Eso seguro que les ahorraría mucho tiempo! Al poco tiempo, Sixto, harto de ver que Chucho no valoraba sus aportes y que ya no se iban a usar sus ideas para enviar y recibir los SMS, decidió que se marchaba, aun renunciando a su parte de los beneficios. Total, el ya no creía que fueran a ser capaces de ganar la competición.

Mientras tanto, Checho le pidió un par de veces a Tucho y a Mencho que le validaran si lo que llevaba hecho hasta aquel momento era de su agrado y les hizo un par de demostraciones durante aquellas 3 semanas, lo que sirvió para corregir algunos defectos y cambiar algunas prioridades. Tucho y Mencho estaban francamente contentos con el trabajo de Checho. Sin embargo, entre ellos comentaron más de una vez: “¿Que estará haciendo Chucho? ¿Cómo lo llevaría?”.

Cuando se acercaba la fecha final para entregar el programa, Chucho se quedo sin dormir un par de noches para así poder entregar su programa. Pero eran tantos los defectos que había ido acumulando que, cada vez que arreglaba una cosa, le fallaba otra. De hecho, cuando llego la hora de la demostración, Chucho solo pudo enseñar el programa instalado en su notebook (el único lugar donde, a duras penas, funcionaba) y fue todo un desastre, mensajes de error por todos sitios, comportamientos inesperados... y lo peor de todo: el programa no hacia lo que habían acordado con Tucho.

Checho, sin embargo, no tuvo ningún problema en enseñar lo que llevaba funcionando desde hacía mucho tiempo y que tantas veces había probado. Por si acaso, dos días antes de la entrega, Checho había dejado de introducir nuevas características al programa porque quería centrarse en dar un buen manual de usuario, que Tucho había olvidado mencionar en las primeras reuniones porque daba por sentado que se lo entregarían. Claro, Chucho no había tenido tiempo para nada de eso.

Moraleja:

Además de toda una serie de buenas prácticas y un proceso de desarrollo ágil, Checho hizo algo que Chucho desprecio, acordó con Tucho (el cliente) y con Mencho (el usuario) los criterios mediante los cuales se comprobaría que cada una de las funcionalidades estaría bien acabada.

A eso que solemos llamar “criterios de aceptación”, Checho le añadió la posibilidad de automatizar su ejecución e incorporarlos en un proceso de integración continua (que es lo que representa su amigo Gaturro en este cuento).

De esta manera, Checho estaba siempre tranquilo de que no estaba estropeando nada viejo con cada nueva modificación. Al evitar volver a trabajar sobre asuntos ya acabados, Checho era más eficiente. En el corto plazo, las diferencias entre ambos enfoques no parecen significativas, pero en el medio y largo plazo, es evidente que escribir las pruebas antes de desarrollar la solución es mucho más eficaz y eficiente."

*(del libro "Diseño Agil con TDD" que se pueden bajar desde aqui)

Comentarios

6 Años

Wilson dijo:

Buenisimooo!!! Me voy a dormir intranquilo ahora... BYEEEE