Errores

El proceso de resolución de errores en la programación y en la vida

Cuando uno empieza a programar piensa que se trata de escribir letras y números en un programa o quizá un montón de algoritmos y cálculos matemáticos pero una de las habilidades principales y más importantes en la programación es la de la resolución de errores, la depuración del código. Al tratarse de entornos normalmente en constante evolución y en el que intervienen tantos componentes es habitual que un algoritmo tenga errores tanto en el propio código como en el entorno en que éste se ejecuta, de todo tipo. Con la experiencia uno va aprendiendo a evitarlos pero sobre todo a corregirlos.

Inconscientemente uno aprende que los errores existen y lo primero que hay que hacer para corregirlos es reconocerlos, si uno los ignora lo único que consigue es que aumente la probabilidad de que se hagan más grandes o influyan en otras partes del proyecto en un futuro.

Lo primero tras aceptar que existe un error e identificarlo es encontrar su origen, nuestro objetivo es el foco principal del mismo porque éste puede estar compuesto de varias partes y si sólo solucionamos una de ellas probablemente vuelva a reproducirse. Necesitamos identificar cada una de ellas y dividirlo, nos facilitará llegar a su origen, un error separado en piezas más pequeñas nos permite gestionarlo de manera más eficiente y precisa, divide y vencerás.

Existen errores más superficiales que a veces pueden ser fáciles de corregir ya que se identifican rápidamente y otros cuya resolución sea más difícil, dependiendo dónde se encuentre y cómo afecte a la funcionalidad específica de la aplicación podrá requerir de mayor o menor intervención. Un problema más difícil de localizar que afecte a varias partes o esté escondido en la profundidad del código no implica que sea más difícil de resolver, lo que implica normalmente es mayor tiempo para llegar a él, poder reproducirlo y arreglarlo.

Uno que no se puede reproducir es más difícil de gestionar por eso muchas veces los informáticos en general y los programadores en particular preguntamos «qué acciones o cambios se realizaron antes de producirse», nos ayuda no sólo a identificarlo sino también a poder intentar reproducirlo para encontrar su origen.

Suele ser un proceso acompañado de una gran frustración por tratarse de tareas que pueden implicar tanto minutos como semanas, cada uno es un diferente y no es fácil gestionar las emociones que lo acompañan cuando nos encontramos sumergidos en un proceso que bloquea el avance, saber gestionar la frustración o al menos no dejar que ésta se apodere de uno mismo es clave para poder programar sin darse por vencido rápidamente.

Una vez ya sabemos de dónde viene sólo nos queda arreglarlo. Para solucionar un problema hay que enfrentarse a él desde la mayor objetividad posible, independientemente de quién o qué lo haya producido tenemos que centrarnos en arreglarlo y no perdernos por las ramas con cosas superfluas.

Se trata de buscar la implementación óptima para reemplazar el código actual, nuestra labor es la de reemplazar la funcionalidad original sin el error en cuestión. Hay errores más difíciles de corregir y otros más fáciles, puede que incluso alguno requiera la intervención de terceras partes y otros que puedan parecer irresolubles tras un primer análisis al final resulten de los más sencillos.

Muchas veces las ideas necesitan «enfriarse», lógicamente cuántas más horas sumergido en el proceso mayor será el cansancio mental y menos claras las ideas, quizá de forma inconsciente o sin saberlo nos hayamos obcecado en un planteamiento equivocado. He ahí la importancia de los descansos, analizar la situación fríamente y ser capaces de detenerse para descansar y retomarlo una vez recuperados lo más seguro nos ayude a pensar en otros enfoques que antes no se nos ocurrirían, incluso durante el propio descanso. Saber cuando pedir ayuda también es muy importante, un punto de vista diferente por simple que pueda parecer aun incluso viniendo de una persona no especialista puede ayudarnos a afrontar el problema desde otra perspectiva.

Los tiempos de deporte, ocio, familia, socialización… Nuestro cerebro no está preparado para realizar la misma tarea una y otra vez de forma continuada por lo que necesita desconectar para recuperar las fuerzas, aunque no lo parezca un trabajo tan psicológico como la programación cansa y no vamos a rendir igual de bien cuando empezamos a programar tras un buen descanso que después de 6 horas seguidas haciéndolo. Uno de los motivos por los que jornadas maratonianas de casi 8 horas seguidas no tienen sentido, es imposible estar al 100% mentalmente todo ese tiempo.

Como decíamos al principio ser consciente de que los errores existen y que todos los cometemos es un paso enorme hacia la resolución de los mismos, lo mejor es reconocerlo lo antes posible, ignorarlo o echarle la culpa a otros lo único que hará será añadir complejidad al proceso retrasándolo o incluso llegando a bloquear su avance todavía más.

Es la importancia de las soft skills (resolución de problemas, pensamiento crítico, trabajo en equipo, ética del trabajo, etc) de las que tanto se habla actualmente, aplicables casi a cualquier ámbito y a las que cada vez se les otorga mayor peso en los integrantes de un equipo. La gestión de las emociones en momentos de crisis puede marcar la diferencia en la forma de actuar, algo intrínseco a nuestro propio ser pero que por los motivos que sea, a veces nos cuesta tanto gestionar.

Y es que como en la programación, en la vida también es importante reconocer nuestros errores para buscar una posible solución, casi todo la tiene, sólo hace falta humildad y esfuerzo para entre todos intentar revertir la situación lo antes posible. No dejemos que nuestro ego nos ciegue y afrontemos los problemas desde la mayor objetividad posible.

No dudes en comentar si hay algo que quieras aportar.

Leave a Comment