archivo

Archivos diarios: abril 5, 2013

Sistemas altamente acoplados, con clases y métodos kilométricos, con código que resulta complicado de entender son ejemplos en donde realmente se programa con miedo una vez que se comprueba que tocarlo supone implicaciones hasta en las partes más insospechadas de la aplicación.

Si el sistema además es crítico el miedo pasa a convertirse en pánico.

Tal vez las palabras miedo o pánico sean demasiado exageradas (y no es nada positivo trabajar de esa manera) pero por lo menos el programador debe sentir respeto y estar alerta cuando realiza modificaciones en un sistema de este tipo. El exceso de confianza no es bueno y más en un caso como este.

Hay que evaluar si el cambio que se va a hacer en el sistema es algo puntual o si se sabe que van a existir una serie de cambios a corto y medio plazo, así como la magnitud de los mismos y la magnitud del sistema. El esfuerzo que supone realizar estos cambios (mucho mayor que en un sistema con una deuda técnica ajustada a sus características), el esfuerzo en testing y el riesgo que tiene liberar nuevas versiones de estos sistemas debe ser analizado antes de afrontar la mejor estrategia para el cambio.

En condiciones como esta, cambios que sean fruto de un capricho no deben ser contemplados y cambios muy relevantes que supongan una modificación sustancial del sistema podrían dar lugar a que se tome la decisión de desarrollar una nueva aplicación.

El programador por su parte puede tomar sus precauciones: testing unitario, automatización de determinado testing de mayor nivel, etc…

Por otro lado, el paso a producción de nuevas versiones de sistemas de estas características no debe tratarse a la ligera y esperar cruzando los dedos a que no pase nada.

El testing debe ser realizado en profundidad y desde el punto de vista funcional debería ser la combinación de casos de prueba y testing exploratorio.

Siempre me gustó mucho la siguiente cita de Yamamoto Tsunetomo en el Hagakure: “En la estrategia es importante ver las cosas lejanas como si estuvieran cerca y de tener una visión de lejos de las cosas cercanas” porque hace referencia a la necesidad de ver todo con perspectiva, de esa manera, con ese equilibrio, se reduce la probabilidad de error (porque nadie es infalible).

Cada uno de nosotros probablemente tendrá una colección de errores derivados de actuar con precipitación y otros muchos por ver siempre los árboles y nunca el bosque.

No se trata de hacer equidistante lo presente y lo futuro, lo más actual es lo más importante porque el presente es ahora, es lo que nos quema, pero, ¿es por ello necesario apresurarse a tomar decisiones que pueden esperar un poco más?, si hay algún riesgo o algún hito que conseguir a medio/largo plazo, ¿es conveniente olvidarse de ellos?.

Hay que saber esperar y también saber apreciar cuando empieza a ser demasiado tarde.

Hay que saber mirar al horizonte sin olvidar de mirar el suelo que estamos pisando.