No es nuevo que yo te diga que la frustración es parte de cuando uno está programando, ya sea por no dar con la solución, ya sea por un bug con la tecnología, o por un sinfín de cosas más, esto es parte de la vida de un programador y espero te sirva lo que a mí me ha servido a través de los años para romper con esta maldición.
Creo que me di cuenta de cómo ir superando con esto gracias a una situación que me paso hace algunos años y te contare la anécdota, quizá te identifiques.
Cuando parecía no haber solución
Hace algunos ayeres me encontraba resolviendo una problemática: hacer un administrador de hilos.
Tenía que administrar un pool de hilos (grupo de hilos limitado disponibles para realizar una tarea) el cual estuviera al tanto para hacer la solicitud de un servicio el cual me retornaría una gran cantidad de información la cual debía ser base para una base de datos local.
El proceso necesitaba de algunos minutos por cada solicitud, por lo cual se optó por hacer un pool de hilos, esto yo lo comencé a crear de cero (era un chaval que no se le ocurrió que ya existía en .Net una implementación, aquí te muestro un video).
Cuando manejamos hilos tenemos que entender un conjunto de prácticas, estos hilos que trabajaran a la par, ¿Compartirán recursos?, ¿Compartirán variables? Hay que considerar ciertas cuestiones que yo en mi novata vida de programador era nuevo.
Como todo en la vida, cuando uno es nuevo en un terreno la frustración llegó, gracias a que la administración de hilos soltaba excepciones por el hecho de no entender que al compartir recursos, algunos de estos recursos solo pueden ser leídos 1 a la vez, cosa que desconocía y me llevó a la frustración.
Intente varios mecanismos pensando que todo era cuestión de mala planeación del algoritmo, pero en realidad el algoritmo iba bien, lo que no iba era esa parte de compartir recursos, algo que seguía yo ignorando, así que después de días sin dormir bien llegue a la conclusión de dejarlo por un tiempo y hacer otro tipo de cosas, como salir a correr.
Y es aquí cuando mi cerebro de manera inconsciente llegó a esa cuestión ¿No será que los hilos al compartir recursos de lectura causen este estrago?, y si, eso era, el compartir la lectura de un archivo de configuración de la vieja escuela hacia que esto no fuera para adelante.
En mi caso me sirvió dejar la codificada un tiempo, darle relajamiento al asunto, salir a correr, y la solución llegó, esta solución a partir de ese momento me sirvió, ahora cada que no veo solución después de intentar por horas, lo que hago es cerrar la laptop y hacer algo ajeno a programar y creerme, la mayoría de veces llegara la solución.
El subconsciente es muy trabajador
Esto no es mágico, en el libro llamado “La mente nueva del emperador de Roger Penrose” se habla sobre cómo es que llegan las ideas, en un apartado llamado “Inspiración, perspicacia y originalidad” se dan algunos ejemplos recopilados por el matemático francés Jacques Hadamard, y aquí transcribo un ejemplo de su colega Henri Poincaré que cita después de un momento de frustración intenso en sus propias palabras:
“…Dejé Caen, en donde vivía, para participar en una excursión geológica organizada por la Escuela de Minas. Las peripecias del viaje me hicieron olvidar mi trabajo matemático. Al llegar a Coutances abordamos un autobús para ir a algún lugar. En ese momento, cuando puse mi pie en el estribo, me vino la idea, sin que nada en mis pensamientos anteriores pareciera haber preparado el camino para ello, de que las transformaciones que había utilizado para definir las funciones Fuchsianas eran idénticas a las de la geometría no euclidiana. No verifiqué la idea; no hubiera tenido tiempo, ya que en cuanto tomé asiento en el autobús continué una conversación ya comenzada, pero tenía la certidumbre absoluta. A mi vuelta a Caen, y para quedarme tranquilo, verifiqué detenidamente el resultado.”
Esto parece algo típico de programadores, pero vemos que se da en todos lados (Newton y la manzana), la mente subconsciente sigue trabajando en el material ya recopilado, pero a veces solo falta darle un descanso al consciente para que el subconsciente se encargue de buscar y brindar esa idea que nosotros estando buscando no dimos.
Es normal que te frustres, pero hay que darle un respiro al cerebro realizando otra actividad, ¿O por qué no? Dormir, dudo ser el único que ha resuelto un problema de programación dormido.
Por ultimo te dejo un video que he grabado abordando este tema a más detalle: