5.30.2010

Una historia de ventanas rotas

Sí, otra historia, y esta es de las que no tiene final feliz.

Las ventanas rotas en programación se pueden explicar con una variación del sabio refrán español:

No dejes para mañana lo que puedes hacer pasado mañana


Estás tirando unas líneas de código, ves que hay un problema, lo das unas vueltas, te pones a otra cosa y cuando te das cuenta el problema no está. Lo siguiente es un:

De puta madre -piensas- marrón que me quito de encima, soy un hacha, resuelvo sin querer



Total, que sabes que has dejado un error y además estás programado por coincidencia.

Pero los programadores somos muy orgullosos, así que buscamos una solución rápida:

- seguro que era una gilipollez
- la informática es así, a veces a los ordenadores les da por hacer "cosas raras"
- habrá sido "el driver"
- seguro que ha sido un pete de la base de datos
- le ha pasado a Jose el comercial, no tiene ni puta idea y lo habrá jodido
- eso ha sido porque estoy en debug
- eso ha sido porque estoy en release

Total, pasa el tiempo y un día estás programando algo que nada tiene que ver y el pete vuelve. Tú sabes que aquello volvería y en el peor momento aparece para joderte.

Bien, como los accidentes de tráfico nunca piensas que algo así te va a pasar a ti, pero siempre llega el día. Hace dos días encontré una ventana rota en agroguía (nuestro sistema de guiado GPS para la agricultura) de hace 4 años y medio.

Un error al teclear ha generado cáncer que se ha expandido por toda la aplicación. En el momento de convertir las coordenadas del GPS a cartesianas cometí el error de poner la coordenada Y donde debería estar la X y viceversa. Seguramente fue de lo primero que programé y está al principio de toda la cadena de la aplicación, ya que las posiciones del GPS son la fuente de datos.

En principio es un flip de los ejes, no debería causar problema pero eso ha causado que, sin saber porque, cambié el render del eje X (por tanto todo el render está "flipeado" en el eje X), toda la exportación está cambiada de lado, tuve que hacer ñapas para que el render cuadrase con la realidad... etc.

Ahora he estado integrando un formato de fichero GIS para darle una vuelta más de tuerca al guiado GPS de bajo coste y he tenido que arrastrar todo el fallo para que la cosa funcionase.

Casos como este y otros puedes encontrar en el libro The Pragmatic Programmer, indispensable para cualquier programador.

3 comentarios:

edu dijo...

Espero que no te haya afectado a tus pruebas de mediciones y precisión ;)

Rodi dijo...

A todos nos ha pasado algo asi en algun momento, sobretodo en los inicios...

Buena web la que pones como consejos, el apartado de "How to Program Deliberately" deberiamos tenerlo pegado al lado del monitor para verlo todos los dias... que coño, me lo voy a imprimir.

Un abrazo.

vicviper dijo...

se que alguien me va a querer matar por esto pero.... se acuerda usted de que hace algunos añicos, en cierto proyecto, de las primeras cosas que dije que habia que mirar, era lo de ponerse de acuerdo en los dichosos ejes, y que el mejor estandar que hay (diga lo que diga el GPS, OpenGl, o Steve Jobs) es: Z arriba, Y hacia adelante, X hacia la derecha.

:P