Solución de problemas (I)

puzzleEl día a día de los que trabajamos en sistemas está muy relacionado con la resolución de diversos tipos de problemas. Posiblemente estas tareas no sean las mejores, o las más divertidas; pero así son las cosas.

Dentro de los distintos tipos de problemas con los que uno se encuentra, hay uno que me llama mucho la atención, y es el caso de los sistemas (o funcionalidades de los sistemas) que misteriosamente, y sin razón aparente dejan de funcionar.

Abordar la solución de problemas con pre-conceptos del tipo "no cambió nada", o "nadie tocó nada", no es un buen comienzo. Generalmente esto lleva a resultados frustrantes, y dilata sensiblemente el tiempo requerido para hallar la solución.

Lo primero que uno necesita es romper con esos pre-conceptos. Si el sistema de ayer a hoy dejó de funcionar, como mínimo cambió la fecha (el número y el día, cuando no el mes y el año). Al mismo tiempo, de ayer a hoy seguramente hay varias personas que pudieron haber realizado cambios, en diversos lugares, que pueden haber afectado (directa o indirectamente) el funcionamiento del sistema. Que de ayer a hoy nada cambió, no es cierto.

Habiendo quitado ese pre-concepto, ya se puede comenzar a buscar la solución de otra forma, seguramente de una forma más objetiva. Mientras uno siga con la idea de problemas misteriosos, y sin sentido, nada bueno ni útil va a salir.

Si ayer funcionaba, y hoy no, indefectiblemente, algo ha cambiado. Hay que focalizarse en encontrar dónde se produjo el cambio. No es cuestión de entrar a meter manos por todos lados, hacer cambios azarosos, reiniciar equipos, etc. Esto solo va a ensuciar más el terreno.

Por otro lado, si tenes que llamar a alguien para que te ayude a resolver el problema (como el administrador de sistemas, por ejemplo), lo mejor es que lo llames, le comentes la situación, y le preguntes sobre cualquier cambio que él haya realizado que pueda haberte afectado. Llamar alterado, nervioso, desesperado, diciendo que no sabes porque el sistema X dejó de funcionar, que nadie tocó nada, y si él sabe qué podrá ser, no es una buena técnica, lo más probable es que recibas como respuesta una negativa, y que sigas si hallar la solución.

Las cosas no dejan de funcionar porque si, así como tampoco los problemas se resuelven porque si. Concentrate en el problema de forma objetiva, busca la razón y el origen del problema, es lo único que te va a llevar a una pronta y efectiva solución. Es mentira que de ayer a hoy nada ha cambiado.

Comments

Anónimo's picture

Me ha ocurrido varias veces el olvidarme que puede ser la fecha el causante del problema en algún código, y solucionarlo luego de muchas vueltas.

A continuación, algunos otros problemas "misteriosos" con los que hallé la solución:
1. Problemas de datos: Típico. Creás un código con una cierta cantidad de registros de prueba. Si hay alguna información extra que no estabas validando y fue dado de alta en el sistema, puede ocasionar error. Esto deriva a:
a. Ingreso de texto en formato erróneo y no validación del mismo al dar de alta.
b. Campo NULL al dar de alta registros que luego se comportan aleatoriamente en las consultas.
c. En MySQL me ha pasado de tener error con el collation de los campos. En XML lo mismo, un punto y coma o un acento en un registro puede ocasionar error en la lectura del XML.
2. Triggers: Los triggers en los sistemas pueden ser una solución mágica pero también un gran ocasionador de problemas si uno no tiene bien documentado su circuito. Abusar de ellos puede ocasionar lentitud extrema en el sistema y altas de registros o modificaciones incontrolables.
3. Stored Procedures: Si uno no tiene un circuito bien aceitado de actualización, los stored procedures pueden terminar desactualizados con el resto del código y en algunas empresas poder leer esa información de la base de datos puede ser una tarea imposible por los permisos de los mismos.
4. Lógicamente también está el que no se hace cargo de la subida de cierto código.
5. Es posible que modificar un código en una pantalla, al hacer que las funciones sean reutilizadas lo más posible, terminen afectando a un módulo que a simple vista no tiene nada que ver. Y da la sensación que no tocaste nada, cuando lo hiciste.

Pero creo, por regla general, que siempre que te dicen "No toqué nada desde ayer a hoy y ahora pincha", siempre hay que arrancar por ver los datos.

PD Claro, también puede ser que el sistema ese día se encuentre deprimido y no quiera trabajar.

Add new comment