¿Qué haces cuando te frustras con tu código?

Tengo un ritual para frustrar el código.

Si siento que he maximizado mis intentos, que no hay nada más que pueda imaginar para resolver el problema, cometo al programador harikari.

Le pregunto a x

Donde X es un desarrollador de software cuya opinión valoro. Siempre tengo una X particular en mente, pero mi X no es tu X.

Hago casi la misma súplica de súplica:

Por favor, vienes a ver mi código, me está matando y no tengo idea de qué es lo que estoy haciendo mal.

Soy una persona bastante realista. No creo en la magia ni en los monstruos. No creo en los finales de cuento de hadas. Pero sí creo que al menos la mitad del tiempo, el mero hecho de pedirle a alguien que lo mire es suficiente. Es asombroso cuántas veces vuelvo a mirar y me voy, oh, espera, ahí está.

Realmente no es magia, creo que es el acto de rendirse. El problema subyacente a toda esta frustración es generalmente la creencia de que de alguna manera tengo razón. El problema a menudo me patea en la cara, pero estoy demasiado absorto para verlo.

Cuántas veces he dicho: no puedo tener eso mal.

Um, seguro que puedo.

Entonces, al pedirle a X que venga a verlo, finalmente me admito que tengo un problema y que pronto vendrán a verlo. He entregado mi ego en ese punto y muchas veces …

Está justo ahí.

Pero a veces eso no funciona y X llega a mirarlo.

La cosa es que, la mayoría de las veces, casi el 90% de las veces lo miran y se dan cuenta de lo que es en menos de dos minutos. Siempre te dan esa mirada. Esa mirada que dice que perdiste mi tiempo por estas tonterías. Secretamente, ambos sabemos que tenía que suceder de esta manera. El error habría existido para siempre hasta que se levantaron de su silla.

No importa cuántas miradas me den … muy pronto, X me está pegando:

Por favor, vienes a ver mi código, me está matando y no tengo idea de qué es lo que estoy haciendo mal.

Venganza.

A veces es mejor alejarse del problema por un tiempo y luego regresar después de un día (o una semana) con un nuevo conjunto de ojos y una nueva visión del problema.

No sé cuántos muros ha atravesado mi cabeza, aunque intenté descifrar algo tarde en el día / la noche solo para irme a casa (tan frustrado) y tratar de hacer algo completamente diferente para dejar de pensar en el problema. Luego, cuando vuelvo al día siguiente, generalmente después de la primera taza de café, descubro el problema y puedo seguir avanzando.

Les digo a mis alumnos que hagan lo mismo cuando tienen problemas con el código; a veces, el mejor enfoque es levantarse y hacer algo diferente. Cuando vuelves, a veces la respuesta te llega. . .

Haz algo completamente diferente. Salga con amigos, salga a correr, haga cualquier cosa que cambie su entorno y detenga su mente consciente pensando en el problema. Entonces, vuelve al problema. Se encontrará pensando claramente, y si no puede resolver el problema de inmediato, probablemente piense en una nueva forma de explorarlo.

No confundas programación y codificación.

La programación comienza con un problema y encuentra una solución para él. Eso puede llevar meses. La codificación comienza con un programa en un idioma y se traduce a otro idioma. Totalmente diferentes tipos de compota de manzana.

Si tiene la solución en el lenguaje Wring, grabarlo en otro idioma es divertido. Si tiene un problema al que tiene que encontrar una solución, escribir el programa puede ser MUY frustrante. (Es por eso que normalmente codifico un programa en un lenguaje simple, luego grabarlo es divertido, no frustrante)

Si está escribiendo su código, en lugar de trabajar en arreglar el código que está defectuoso, y está tratando de encontrar una manera de hacer algo, pero cada intento que hace termina en un fallo que necesita para alejarse de él.

Arreglar un error es bastante sencillo, ya que solo necesitas rastrearlo hasta la fuente. averiguar por qué el valor que se supone que debes obtener no está allí y arreglarlo. (Sé que hago que el sonido sea fácil, pero en cierta medida lo es; pero requiere práctica). ¡¡¡¡¡¡¡¡¡¡¡¡¡NO ELIMINES LOS SÍNTOMAS !!!! ”Usa estos para llegar a la raíz del problema.

Si está escribiendo un código que aún no existe y está tratando de averiguar cómo hacer algo que nunca había hecho antes, póngase en línea y vea si alguien más ha intentado incluso una pequeña parte de lo que está haciendo. estoy tratando de hacer Por ejemplo, desea cargar un archivo, leerlo y extraer todos los enlaces que apuntan a sitios web. El problema aquí es que nunca has hecho algo como esto. Primera pregunta. ¿Alguna vez has abierto un archivo? Si no, entonces es un buen lugar para comenzar. Conéctese, pregunte cómo abrir un archivo (en el idioma que está usando) y vea qué vuelve. Lo más probable es que veas muchas maneras de hacerlo y cada una de ellas tendrá partes que son exactamente iguales. Esas son las partes a las que hay que prestar atención. Coge ese código y envuélvalo en tu propio código para que haga lo que TÚ quieres que haga. Una vez que consiga que funcione de la manera que desea, pase a la siguiente parte de la pregunta; leyendo el archivo y haciendo algo con lo que has leído.

Resuelva todos los problemas dividiéndolos en partes más pequeñas y trate cada parte por turno. Es como la mayoría de nosotros aprendimos a programar en primer lugar.

En estos días, la mayor parte de mi frustración proviene de bibliotecas y marcos mal documentados, no de un error difícil de alcanzar en mi propio código. Pero de vez en cuando me encuentro totalmente perplejo, dando vueltas, y solo tendré que levantarme y alejarme.

Cuando vuelvo, le doy al insecto una oportunidad más para jugar bien. Tal vez estaba exagerando las cosas la primera vez, y la respuesta es realmente muy simple. Este es el caso más a menudo que no.

Si resulta que las cosas no son tan simples, entonces me subo las mangas y saco las herramientas eléctricas. Los bloques de comentarios de mano dura, reduciendo el código a una pila de ramitas rotas rodeadas por una montaña de cenizas.

Confía en mí, hay maneras de encontrar el error. Incluso si tienes que quemar su casa.

Olvida -todos- tus suposiciones. Si no puede solucionar un error después de 5 días, me atrevería a decir que es casi seguro que haya hecho una suposición de dónde está el problema, y ​​está mal. ¿Te has metido en un montón de depuración, o has ejecutado el código a través de un depurador? Verifique los datos que entran en la clase / función en la que piensa que el problema radica, ¿es correcto? Básicamente, lo importante es olvidarse de TODAS sus suposiciones, verificar que todo su código funciona como espera …

Ir a caminar. Frío. Tal vez tomar medio día libre.

Encuentra a alguien específico para preguntar. Sigue empujando ese ángulo. Se agrietará. Siempre lo hace