Lidiando con la frustración cuando las cosas no funcionan [cerrado]


62

Alguna vez intentas implementar algo simple pero por alguna extraña razón no funciona.

Entonces, intentas una posible solución, pero luego algo más no funciona. Sigue intentando diferentes soluciones, pero cada vez que algo diferente no funciona.

Cada vez que te acercas un paso, también te alejas un paso (o más) de resolver este problema y ahora han pasado 3 horas cuando esto debería haberte tomado 10 minutos. Y todavía no está resuelto.

No hay nadie en su empresa que pueda ayudarlo, y está a punto de pasar el puño por la pantalla.


En este punto, está tan frustrado que ya no puede pensar en el problema con claridad. ¿Qué deberías hacer en este momento? ¿O qué puedes hacer para evitar llegar a este punto?


3
Creo que tú y yo acabamos de tener / estamos teniendo la misma experiencia.
AndrewKS

19
Póngalo en SO y ofrezca una recompensa.
JeffO

44
Si tan sólo fuera tan simple. Algunos de este tipo de problemas se encuentran entre las muchas preguntas de respuesta no respondida / fallida.
Aditya P

2
Esta pregunta parece estar fuera de tema porque pertenece al lugar de
trabajo.stackexchange.com

El mismo problema mío y la misma pregunta.
Anwar

Respuestas:


69

Aunque este es un problema real, no es específico de la programación. Sin embargo, en mi humilde opinión es tan importante que merece un lugar en este foro.

Mis sugerencias: tómate un descanso . Salga a caminar, medite, duerma, haga actividad física *: haga algo completamente diferente para permitir que su cerebro se relaje y salga de la rutina mental , mientras deja que su subconsciente trabaje en el problema en paz. Por lo general, ofrece resultados sorprendentemente rápidos, solo necesita informarle al respecto. Pero mientras su mente consciente repite desesperadamente los mismos ciclos de pensamientos una y otra vez, no podrá escuchar nada más.

¿Qué puedes hacer para evitar llegar a este punto?

Las técnicas de relajación y atención plena son la clave para superar las reacciones de estrés y permitir que su mente se concentre claramente. Y practicar esto realmente vale la pena. Cuando alguien tiene experiencia en esto, ya puede notar que el nivel de estrés aumenta antes de que la frustración pueda hacerse cargo . Entonces uno puede interrumpir el ciclo de pensamientos, por ejemplo, respirando profundamente o haciendo un par de minutos de práctica de relajación. Esto puede ser todo lo que se necesita en ese momento.

* besa a tu pareja, acaricia a tu mascota - sugerencias de mi esposa :-)


12
+1, nuestra mente SIEMPRE está tratando de resolver problemas, solo porque no estamos tratando conscientemente de resolverlo, nuestra mente todavía se está agitando. Es por eso que aparentemente recuerdas un nombre de la nada, una hora después de no poder recordarlo. Y despierta con un problema resuelto en medio de la noche. Un gran libro que explica esto es Pragmatic Thinking and Learning: Refactor Your Wetware
CaffGeek

+1 No podría haber dicho mejor yo mismo. De hecho, salgo de mi cubo, salgo de la oficina y camino por la ciudad, llamo a mi esposa y luego vuelvo a la oficina. Funciona casi el 100% del tiempo.
Sr. Ant

99
Y no trabaje más de 8 horas al día. Cuanto más cansado estés, más fácil te sentirás frustrado.
HLGEM

3
Cuando tomo un descanso para orinar, a menudo tengo el problema resuelto cuando regreso a mi escritorio. Es como si tu subconsciente estuviera esperando que tu consciente se callara.
barrycarter

1
@junxiong, uno puede usar estas técnicas incluso cuando está bajo presión de tiempo, pero esto requiere experiencia. Alguien que ha estado meditando, por ejemplo, durante años, puede controlarse y calmarse en cuestión de minutos o incluso segundos. Pero tratar de aprender algo nuevo, y especialmente la atención plena, bajo la presión del tiempo es muy difícil. Si todo lo demás falla, tome esto como una lección importante, y una vez que finalice el plazo, comience a prepararse para la próxima crisis analizando su comportamiento y practicando algunas técnicas mencionadas aquí o en otras respuestas.
Péter Török

35

ahora han pasado 3 horas cuando esto debería haber tomado 10 minutos.

La palabra mágica es debería . Elimina eso de tu vocabulario.

¿Quién dijo que debería tomar 10 minutos? ¿Quién específicamente? ¿Cuál fue la base fáctica de su reclamo?

Si lo ha hecho 3 veces antes, y cada vez que estuvo cerca de 10 minutos, tiene una base racional para un deber .

Si nunca lo has hecho antes, decir que debería solo es prepararte para el fracaso. Debe dejar de usar debería hoy.


2
Por supuesto, hay muchas cosas que has hecho un millón de veces que un día simplemente dejan de funcionar. Un archivo dañado en algún código generado automáticamente puede ser bastante frustrante, y a veces es extremadamente difícil de depurar. Estoy pensando en momentos en los que accidentalmente nombré dos cosas con el mismo nombre, luego usé una herramienta de refactorización para cambiar todas las instancias donde ocurrió el nombre. He hecho ese movimiento descabellado varias veces con clases que estaban en conflicto con mis clases generadas por ORM. Haga algo así, y es mejor que espere que haya sido bueno con los registros.
Morgan Herlocker

1
@Prof Plum: "He hecho ese movimiento con cabeza de hueso varias veces". Excelente punto Eso significa que una expectativa tiene que incluir tiempo para ese movimiento con cabeza de hueso. Nuevamente, el "debería" debería incluir todos los hechos, no los hechos de "si todo salió bien", y excluir los hechos de "movimiento con cabeza de hueso".
S.Lott

22

Encuentra a alguien para usar como caja de resonancia

Incluso si nadie tiene experiencia en exactamente en qué está trabajando, es una buena idea hablar sobre estas cosas con frecuencia. Solo el simple hecho de usar a alguien como una caja de resonancia puede hacer que su mente comience a cambiar. Te encontrarás pensando en cosas nuevas para probar. También aliviará su estrés para desahogarse un poco y potencialmente hacer un nuevo amigo. También es saludable en general que el equipo se sienta cómodo compartiendo y compadeciendo entre sí para generar una atmósfera orientada al equipo para resolver este tipo de problemas.


77
Incluso si la persona no tiene idea de lo que le está diciendo, solo el hecho de hablarlo ayuda a aclarar las cosas.
Michael Brown

2
@Mike, incluso si esa "persona" es un oso de peluche, todavía funciona en un porcentaje sorprendentemente grande de los casos (hay alguna historia real sobre esto en el Hacker's Dictionary AFAIR)
Péter Török

3
@Mike Brown - ver "depuración del pato de goma"
ocodo

1
Depuración de pato de goma? No. Mantengo un Goomba de depuración en mi escritorio solo por esta razón, los patos son mejores para el lado de gestión de proyectos.
Brillante

Sí, iba a hacer referencia a que ... era demasiado vago para abrir el enlace: P
Michael Brown

9

Aléjate un rato y haz otra cosa. Duerma bien por la noche y vuelva al problema por la mañana.

Además, no te golpees. Su estimación de diez minutos claramente no es correcta, y eso sucede todo el tiempo.


9

Tengo algunos pasos cuando llego a este punto. Normalmente puedo encontrar una solución si me tomo el tiempo de dar un paso atrás y reflexionar.

Paso 1: Aléjese del problema y aclare su cabeza. Vuelve cuando no estés frustrado y puedas mirarlo con una mente fresca.

Paso 2: regrese al código y vea si se perdió algo. Haz que alguien venga y sea un segundo par de ojos si no puedes hacer cara o cruz.

Paso 3: elimina el código de la ecuación. ¿Cuál es el problema que estás tratando de resolver? Escríbalo en una hoja de papel o pizarra. Discuta el problema con alguien para obtener sus opiniones sobre el problema y la solución.

Paso 4: comuníquese con la comunidad para ver si tienen una solución o si alguien más ha tocado el mismo muro.

Básicamente, estos se pueden resumir como 'Detener la piratería y alejarse del código'.


Yo uso la pizarra todo el tiempo. Muy útil para visualizar mientras se depura.
Michael K

El paso 3 se conoce como cambiar el dominio del problema para ver si se puede reutilizar un éxito paralelo. También se conoce como el uso de una metáfora.
Kurucu

2

Haría una pregunta aquí y que la comunidad lo ayude a resolverlo. Menos estresante de esa manera.


66
A veces, solo escribir la pregunta conducirá a la solución
JoelFan

1

Tengo un tipo diferente de solución: ¡ DORMIR !

Cuando estás frustrado con un problema, no puedes salir de él fácilmente. Por lo tanto, es mejor si se cansa tanto tratando de resolver el problema y luego se duerme.

Cuando te despiertes tendrás una sensación fresca y nuevamente podrás pensar claramente con el problema. Lo hago a veces


No es para ser quisquilloso, pero esta solución "diferente" se ha mencionado en al menos dos respuestas anteriores.
Péter Török

1
lo que quise decir -> no solo tomar un descanso, caminar o dormir sino cansarse tratando de resolver el problema y luego dormir. porque cuando tienes el problema dentro de ti, es posible que no salgas de él fácilmente
ruben

1

Encontrar algo para ayudar a recuperar la confianza es lo que tiendo a hacer cuando llego a este punto. Esto podría ser resolver un rompecabezas de Sudoku o Kenken, hacer una tarea administrativa simple y sin sentido, como completar mi hoja de tiempo o salir a caminar. La clave aquí es que tenga una sensación de logro en lo que sea que esta pequeña distracción lateral sea ayudarme a levantarme lo suficiente como para volver al caballo y cabalgar hacia el salvaje azul allá, para mezclar algunas metáforas allí.

En cuanto a evitar ser tan malo, probablemente sugiera tener una estrategia de cosas de boxeo de tiempo para que si crees que algo tome 10 minutos y de repente sea una hora más tarde sin mucho progreso, me detendría y tendría un pequeño descanso en lugar de tratar de seguir golpeándome la cabeza contra la pared.


1

Tengo un nombre especial para este tipo de situación: batalla de programación épica .

Si no he tenido al menos una batalla de programación épica con un lenguaje o herramienta de programación específica, y he resuelto el problema, no puedo decirme a mí mismo que puedo usar dicho lenguaje o herramienta de programación.

Así que ahí está mi solución: mentalizarlo como una pelea y una prueba de coraje y resistencia . Si no puedo resolver el problema, entonces " vivo para pelear otro día ".

Puede sonar un poco ridículo, pero, será más divertido y gratificante pensar en ella en estos términos (como si fuera una especie de juego debe ganar) en lugar de sufrir hasta el final porque hay que afrontar el hecho de que se No lo sé todo .


0

Bueno ... creo que necesitas una nueva carrera o un conjunto completamente nuevo de expectativas. Aunque ciertamente no es frecuente, tomar 3, 4, 8, 10 o 40 horas para hacer lo que originalmente pensó que sería un trabajo de 10 minutos, ciertamente no es raro en el negocio del software. Estoy seguro de que la mayoría de los desarrolladores que trabajan en cualquier cosa, incluso de complejidad moderada, han tenido tareas de 2 días convertidas en tareas de 1 mes una vez que profundizaron en él y entendieron el problema.

Parte de ser un buen desarrollador implica ser paciente, de lo contrario la computadora va a ganar y terminarás incorporando algún tipo de truco de solución rápida que apenas parece funcionar pero inevitablemente romperá algo en lo que no pensaste. Si retrasos menores le causan tanto estrés, entonces probablemente no debería estar en esta línea de trabajo.


0

Dos sugerencias:

  1. La persona más inteligente que conozco, que tiene dos doctorados y tiene el título de trabajo "Investigador", en una pequeña empresa privada, dice esto

    Si lo has pensado durante 15 minutos y no tienes la respuesta, lo estás haciendo mal.

    Deja de pensar en eso.

    Toma una siesta. (ir a caminar o algo)

    La respuesta estará allí cuando te despiertes.

  2. Obtenga el libro de David J Agan "Depuración" . Probablemente le enseñará más sobre la depuración para que cuando las cosas no funcionen, pueda depurarlo rápidamente.


0

Cuando me enfrento a algo que no funciona, siempre recuerdo esta cita:

Cuando estés en el infierno, sigue caminando ya que es lo mejor que puedes hacer en ese momento.

Tómese un descanso, intente refrescarse y concéntrese en un problema con un nuevo nivel de energía.


0

haciéndose eco de las recomendaciones de otros:

  • esta situación es casi siempre algo trivial que simplemente no ves ; tomar un descanso
  • otro par de ojos o incluso simplemente explicarle el problema a tu gato puede ayudar

y agregando:

  • reexamine sus suposiciones, especialmente las no declaradas; lo más probable es que hayas estado ladrando el árbol equivocado
  • revierta la situación: suponga que el comportamiento actual es el resultado deseado, entonces, ¿qué tendría que hacer con el código para que eso suceda?
  • escriba un código de prueba (afirmaciones o registros, o puntos de interrupción condicionales; manténgalo simple) para verificar sus suposiciones a lo largo de la ruta de ejecución

0

A veces, es mejor no solo intentar hackear un problema. Tómese su tiempo y escriba en pseudocódigo lo que necesita hacer. Sé que hay presión para hacer las cosas lo más rápido posible, pero por lo que he visto, ese estilo de codificación conduce al tipo de situación que usted describe. Si alguien escribe código que solo funcionará en un pequeño conjunto de condiciones y ese conjunto de cambios, el código se romperá o hará cosas inesperadas.

Además (odio admitir que mis profesores tenían razón en esto ...), la documentación y las pruebas unitarias ayudan. Esto facilitaría saber qué sección de código generará dado el conjunto de entrada. Entonces, sería más fácil ver qué efecto causará un cambio en la entrada de las secciones.


0

La fatiga o la falta de sueño nunca es un problema para mí. Estoy más frustrado con la falta de organización dentro de la industria en general, y en general con los bajos estándares que nos hemos impuesto. Aquí hay cinco cosas que me frustran:

  1. API's que son complicados en diseño. Es como aprender un lenguaje de programación completamente nuevo. De hecho, algunas API son mucho más difíciles de aprender que aprender nuevos lenguajes de programación. Admiro tu inteligencia, pero podrías haberme ahorrado tiempo al incluir la documentación de que necesitaba un doctorado en ingeniería de software o informática para entenderlo.

  2. Falta de buena documentación. Nunca puedo superar el hecho de que tantos diseñadores de API pasan mucho tiempo haciendo una API solo para lanzarla con una documentación mínima. Gracias, pero ¿cómo uso esto? ¿Qué hacer en esta situación? etc.

  3. Implementaciones propietarias. Algunas implementaciones propietarias están bien, pero si existen estándares, por el bien de la humanidad, siga esos estándares. Nada más frustrante que pasar el tiempo preguntándose por qué algo no funciona solo para descubrir que la implementación no sigue los estándares normales.

  4. Entornos sandboxed / Restricciones. Ok, tal vez esto ayude a mantener alejadas a las personas malas, pero en mi opinión, las restricciones sobre lo que puede hacer un programador solo limitan la creatividad y el progreso tecnológico. Muchas de las grandes ideas que he tenido han sido destruidas después de descubrir que no se me permite hacer algo. La industria de la programación está realmente hecha para producir aplicaciones cotidianas, no un software innovador e innovador. Entonces, si decides ser un programador, realmente estás eligiendo ser un gruñido moderno, a menos que quieras convertirte en un académico solitario.

  5. Debates modernos. La gente de hoy todavía debate sobre la fealdad del paréntesis de Lisp, o el mérito de la limpieza de Pythons, o cómo se están extinguiendo algunos idiomas como Cobol o Fortran, etc., etc. ¿De verdad la gente? ¿Esto es sobre lo que debatimos? Hablemos del paralelismo, o mejores formas de diseñar sistemas más seguros, o cómo la programación lógica puede mejorar nuestras vidas. Dejemos de pensar como codificadores y comencemos a pensar como diseñadores del mundo del mañana.

Así que personalmente ya no programo mucho debido a estas frustraciones. Hasta que la industria decida que quiere hacer más que simplemente crear el próximo Facebook, o reinventar el procesador de texto que estoy listo. Les dejo a ustedes chicos. Sinceramente, no se ofende, es buen dinero.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.