Reflexionar acerca de la realidad de las cosas es un hábito saludable. Eso sí, poco práctico y costoso, os doy la razón en eso, pero, a menudo, puede evitar errores que no son apreciables a simple vista y que pueden llegar a hacer replantearse todo el hilo de una ejecución o el marco sobre el que se estructura un programa. Es habitual, así mismo, que el cliente, el amigo o el tendero de la esquina, a los que hemos favorecido con unas lineas de código nos increpen:
¡Oye…! Y si… así no puedo…
Han puesto el dedo en la llaga y acaban de descubrir que nuestra aplicación, antes reluciente y pulida, anda mas bien cochambrosa y chirría mas de la cuenta. ¿dejadez, pereza…?
Quizá diría yo, falta de observación, no saber escuchar a nuestro interlocutor, no saber adaptarnos a sus necesidades reales, tener excesiva prisa por iniciar la implementación del código.
Así pues, pienso que puede ser una regla de oro para cualquier programador que el tiempo dedicado a la planificación de la estructura del programa, así como de la declaración y acotación de las reglas del negocio sea el mayor posible.
Podemos encontrarnos en una situación complicada cuando a mitad de aplicación descubrimos que hay variables nuevas a tener en cuenta y que nos pueden variar todo el código escrito, e incluso el que ya teníamos en mente. En esos momentos, por poner un ejemplo, cualquier modificación de la estructura de una base de datos puede llegar a ser demasiado trabajo para tan poca ganancia. Y quien dice eso dice cualquier otra cosa….
En cierta ocasión, mientras yo seguía empecinado en aprender algo de Delphi 2.0, recibí la llamada de mi ex-jefe para que le ayudara a sacar unos diseños de croched. Como imagino que no sabréis lo que es un telar de croched os lo adelanto:
Un telar de croched es una pequeña maquinaria que permite la fabricación de tiras y bandas tejidas, con motivos diversos, según el color y la textura de los materiales, y del movimiento de unos tubos por los que pasan el material.
Una par de imágenes valen mas que mil palabras:
No voy a entrar en el funcionamiento del mismo porque necesitaría demasiado espacio y no sería relevante. Nos podemos quedar con la idea de que existe una cadena con eslabones de distinta altura y que va a ser la causante del movimiento de los tubos. La distinta altura de cada eslabón es la que va a generar el diseño.
Pues bien, después de recibir la llamada y tras pensar que aquello me distraería del estudio le comenté:
-Vamos a hacer una cosa… te voy a preparar una pequeña aplicación para que puedas sacar los diseños y no tengas necesidad de mi.
Y me puse manos a la obra.
Andaba yo confiado en la facilidad con la que estaba diseñando la aplicación. Ya tenía todo el interfaz gráfico. El modelo dinámico del cosido no parecía difícil: total, tan solo había que considerar la altura de los eslabones:
Ejemplo: 1 – 3 – 5 – 3 – …
Necesitaba para poder acometer el dibujo dos puntos por los que trazaría una recta…
Nada mas lejos de la realidad: cuando ya estaba todo prácticamente confeccionado me percaté, accidentalmente, de que el esquema no funcionaba porque hacia la aparición una variable nueva que yo no había tenido en cuenta:
la tensión del hilo. El problema se aprecia en el círculo de color rojo que aparece en la figura D.
¿Que nos iba a dejar aquella nueva incorporación…?
Para poder considerar aquella nueva variable nos obligaba a introducir un trío de posiciones entre cada valor de tal manera que nos quedaría:
Ejemplo: 1-1a 1b 1c – 3-3a 3b 3c – …
Si el punto inicial A era menor que B y B menor que C, la posición ocupada en B sería la Central.
Si el punto inicial A era menor que B y B mayor que C, la posición ocupada en B sería mas próxima a B.
Si el punto inicial A era mayor que B y B menor que C, la posición ocupada en B sería mas próxima a C
Es decir, que para saber que dos puntos iban a considerarse necesitabas conocer los tres que intervenían y aquello tiraba por tierra la supuesta facilidad que había presumido. Porque, ¿como podría dibujar el primer movimiento de la cadena si no sabía el último…(la cadena se enlaza principio con final sobre un tambor cilíndrico)?
Todo el proyecto se modificó para ajustarse a esa nueva realidad. Entonces caí en la cuenta de que realmente la tejedora tampoco sabía coser en el punto primero de la representación y de que la muestra que me habían servido para la deducción del modelo eran una acotación de puntos posteriores a ese punto primero.
Deja una respuesta