Buenas,
como hoy es sábado y no me funciona el messenger, voy a escribir un poco sobre la vida del Shuba, un excelente programador del que he aprendido muchas cosas.
Ya compila, está listo !!! It’s Done !!!
El Shuba era un excelente programador, muy inteligente, una persona que aprendía nuevos conceptos muy rápidamente y recuerdo que en sus primeros años programando, él solía soltar un “it’s done”, cuando el CTRL+SHIFT+B le mostraba una compilación sin errores. Su jefe en esos tiempos, era un persona que estaba un poco de vuelta y no quería muchos problemas. Como conocía al Shuba y sabía que la respuesta era “está terminado”, le soltaba frases como:
- Shuba, terminaste la aplicación XYZ?
- It’s done 
- Genial !!!; le acabo de decir a Rosa de Recursos Humanos que la pruebe, andá con ella y a ver que te dice.
Aquí se acababa la alegría del Shuba, porque claro, tenía que improvisar un despliegue de una aplicación que había compilado y poco más. Supongo que la mayoría ya se imagina el resto; 2 días después del primer intento de despliegue, llega con Rosa con la aplicación en su portátil (eso de desplegar a producción es un infierno) y se encuentra con una mujer que le dice que esa aplicación no tiene nada que ver con lo que ella había pedido, que así no funcionan las cosas, etc. El pobre Shuba, cuando volvió con su grupo de amiguetes, encima tuvo que soportar frases como “Rosa todavía está esperando la aplicación” y ver que habian apostado para ver cuanto tardaba en volver derrotado como un holandes. Por suerte y para compensar a la panda de impresentables de compañeros de trabajo del Shuba, su jefe era buena gente y además de enseñarle, le mostraba los caminos por donde tropezar para que aprenda más rápido.
Lo hice como querían y además lo probé !!!
Pero el Shuba no era tonto, ni mucho menos; le dió a la cocorota un buen rato e ideó un plan. Se sentó con Rosa toda una tarde, y escuchó cada uno de sus pedidos; los apuntó en una lista bastante detallada y se puso manos a la obra con la versión 2.0 de la aplicación XYZ. Después de trabajar varias semanas, en la versión nueva; decidió que ya estaba lista para que Rosa le diera su feedback. Pero esta vez se anticipó a los futuros problemas: tomó la hoja de requerimientos de Rosa y verificó que cada uno de los mismos estuviese implementado en la aplicación (en este punto creo lo que el luego llamaría “el plan de pruebas de Satanas”, aunque eso mejor llega después)
Como lo de desplegar a producción, seguía siendo trabajo de ligas mayores, pues el Shuba agarró su portátil, le dió un toque a Rosa y le dijo: en 5 minutos estoy por allí. Y, efectivamente, en 5 minutos estaba con Rosa dispuesto a mostrarle la aplicación XYZ 2.0. Esta vez, su sesión con Rosa solo duró 2 minutos, porque apenas había lanzado la aplicación, se encontró con en la siguiente situación:
- Perooooo, la aplicación es AZUL. Eso NO PUEDE SER.
- Hace un tiempo me dijiste que la aplicación tenía que ser AZUL.
- No way, desde hace 1 mes todas nuestras aplicacion son NARANJAS. Cambia eso y la vemos de nuevo.
El Shuba cerró su portátil y volvió a su escritorio, donde sus compañeros estaban viendo quien había ganado la apuesta del tiempo que iba a estar con Rosa.
Algo cambió pero no se qué es
!!!
El Shuba ignoró a sus compañeros, y pensó que solo tenía que cambiar el color de la aplicación de AZUL a NARANJA. Como era una persona organizada y tenía una aplicación basada en estilos; se puso a modificar los estilos de unas vistas, los estilos generales de presentación y en un día ya tenía el cambio listo; inició la aplicación vio que la aplicación era NARANAJA y se le dibujó una sonrisa de oreja a oreja.
De nuevo, el pedido de 5 minutos con Rosa, y arriba a la oficina de la susodicha. El Shuba pensaba que esta vez, las tenia todas consigo; pero se encontró con lo siguiente:
- Ahora si Rosa, la aplicación es NARANJA; como dicen los estándares.
- Bien Shuba, vamos a hacer un ajuste en un balance, para ver si la podemos empezar a probar.
- Espera que entro en el formulario de ajustes y ….
Pues hasta aquí llegó la alegría del Shuba, si bien algunos formularios se veían bien; el cambio de estilos había hecho que otro sean completamente imposibles de utilizar. Se habían movido controles, cambiado el tamaño de los mismos, etc. En este punto Rosa, se dió cuenta de que así no llegaba a ningún lado, asi que le dijo a Shuba que mejor probarán lo que funcionaba y lo demás lo veían en otro momento. Asi que Rosa comenzó a probar la aplicación y al cabo de 30 minutos, y al no poder cerrar un ciclo completo el Shuba se vió inundado de cambios para la aplicación. Frases como, “cuando arregles esto, ya que estás, cambia esto otro …”, hicieron que esta vez el Shuba estuviese a punto de desmayarse. Pero se lo tomó tranquilamente e intentó ser profesional (o lo que él entendía como profesional)
La aplicación va tomando forma 
Asi que una vez más el Shuba volvió a su escritorio, actualizó el listado de requerimientos , luego actualizó el excel de pruebas y se encargó de comenzar a aplicar los cambios. Un compañero, con un poco más de experiencia a cuestas, le recomendó que organizará reuniones con Rosa más frecuentes, para que la aplicación XYZ no sea una sorpresa. Asi que ahora, el Shuba se juntaba un par de horas por día con Rosa y discutían los avances de la aplicación y veían que todo fuera por el camino correcto. Luego el Shuba aplicaba los cambios, realizaba las pruebas y se encarga de solucionar los errores.
En varias ocasiones, tuvo algún malentendido con Rosa ya que lo que ayer era una fórmula [x + y = 10], hoy se convertía en [x + y = 11]. Esto afectaba no solo a la aplicación, sino también a la necesidad de tener que probar todo nuevamente para que la aplicación sea consistente en todos sus flujos. Cuando estaban llegando al final del desarrollo de la versión 1.0, el listado de pruebas era “un infierno” y probar todos los flujos era una tarea de varios días para el Shuba y Rosa; pero ambos trabajaban mano a mano y se encargaban de mantener una aplicación estable y coherente con lo que el equipo de Rosa necesita.
En producción no funciona 
Al cabo de un tiempo, tanto Rosa como el Shuba estuvieron de acuerdo en que la aplicación podía ser utilizada por varias personas del equipo de Rosa, asi que ya podían ponerla en producción. El jefe del Shuba dió el visto bueno, y le dijo al Shuba que hablase con Paco para que le dé una mano en el despliegue a producción.
Lo primero que le preguntó Paco a el Shuba era los cambios en la configuración que deberían hacer para que la aplicación XYZ funcione en producción, el Shuba le dijo que solo cambiar la cadena de conexión a la base de datos de producción y los usuarios podían comenzar a trabajar. Paco, que tenía bastantes años trabajando en esto, le preguntó si había verificado permisos de acceso a la base de datos, permisos de escritura en disco, etc. de la aplicación y el Shuba le dijo que su aplicación no hacía nada “raro” así que debía funciona sin problemas. Paco hizo de tripas corazón e hizo el primer despliegue.
Cuando el despliegue estuvo listo, Rosa decidió que su equipo conociese la aplicación y estos son algunos de los errores con los que se encontró a los 5 minutos de intentar utilizar la aplicación XYZ:
- Una parte de la aplicación consultaba un servicio externo para tener acceso a los valores de la bolsa. En los ordenadores de Rosa y su equipo no podían acceder a este servicio. Después de averiguar un poco, el Shuba se enteró que no todos los usuarios tienen el mismo nivel de acceso a internet.
- Cuando la aplicación fallaba, intentaba grabar un log en el disco [C:\Errores]. Aquí también la aplicación daba un error bastante feo ya que los usuarios del equipo de Rosa no tenían permisos para acceder al disco C:
- Los permisos de acceso a la base de datos no estaban aplicados, porque … bueno nadie sabe.
- etc.
El Shuba apuntó uno a uno los errores que se iban presentado y evaluando los mismos con Rosa y Paco de Producción, los fueron solucionado de manera organizada. Después de un par de semanas, y de mil peleas diferentes, pudieron tener la aplicación en producción. El Shuba y Rosa, se sintieron bastante decepcionados, ya que estaban muy orgullosos de su trabajo; pero comprendieron que un trabajo está listo no solo cuando compila, pasa las pruebas y el usuario clave está satisfecho con la aplicación; sino que además tiene que estar desplegado y en funcionamiento (bueno en realidad esto es mucho complicado, pero ese es material para otro post).
Cambio de jefe 
Fué por estos días cuando el jefe del Shuba llegó por fin a jubilarse como había querido desde hace tiempo. Un nuevo jefe comenzó a trabajar en el equipo de sistemas, y cuando escuchó la historia del Shuba, le dijo lo siguiente:
Shuba, has realizado un excelente trabajo. Tal vez sin pretenderlo has apuntado tu trabajo sobre las siguientes bases:
- Has trabajado orientado a pruebas
- Las pruebas se han convertido en el contrato de trabajo que define las funcionalidades que posee tu aplicación
- Has ido evolucionando en tu relacion con “tu cliente”, hasta lograr una sinergia donde la responsabilidad del trabajo era del 50% y 50%
- Has gestionado los cambios y los despliegues de una forma controlada, siempre respetando la funcionalidad de la aplicación
En este punto, hay muchas cosas que mejorar, como por ejemplo:
- Automatizar las pruebas, con pruebas unitarias y pruebas de interfaz de usuario
- Gestionar los cambios, incorporando trazabilidad a los mismos
- Poder tener una estimación real del trabajo realizado, para utilizarla como base para trabajos futuros
- Realizar un seguimiento más detallado, sobre el trabajo real que realizan Rosa y vos
Vení que te muestro como funciona Visual Studio 2010 Application Lifecycle Managenement 
A partir de aquí la vida del Shuba cambió radicalmente, siguió haciendo su trabajo como antes, pero con unas herramientas que le permitían ser mucho mas productivo/feliz.
Saludos @ Home
El Bruno
