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?
productivity
problem-solving
JD Isaacks
fuente
fuente
Respuestas:
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.
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 :-)
fuente
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.
fuente
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.
fuente
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.
fuente
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'.
fuente
Haría una pregunta aquí y que la comunidad lo ayude a resolverlo. Menos estresante de esa manera.
fuente
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
fuente
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.
fuente
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 .
fuente
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.
fuente
Dos sugerencias:
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.
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.
fuente
Cuando me enfrento a algo que no funciona, siempre recuerdo esta cita:
fuente
haciéndose eco de las recomendaciones de otros:
y agregando:
fuente
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.
fuente
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:
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.
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.
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.
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.
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.
fuente