La mejor manera de esconder rápidamente su estado cognitivo cuando simplemente no puede evitar interrupciones

21

Ni siquiera sé si esta pregunta tiene sentido ... pero déjame dejarte asimilarla ...

imagina ... Estás totalmente absorto en algún pensamiento / idea / concepto de programación, tu cerebro está en su estado más activo pensando en una solución a un problema, o como lo expresa Joel Spolsky : estás profundamente en tu "zona "- Y, de repente, alguien o algún evento rompe tu fascinación, algo que simplemente no puedes evitar, algo a lo que tienes que asistir. ... imaginación completa ... de vuelta a la realidad

Algo que puede romper tu concentración puede ser ...

  • eres convocado para una reunión urgente
  • su código rompió la compilación diaria y su colega lo está llamando
  • acabas de recordar algo que tenías que hacer pero olvidaste hacerlo
  • tu compañero de equipo tiene noticias emocionantes que romper e insiste en que escuches
  • tu novia (o novio) acaba de venir

Ahora suponga que solo tiene entre 5 y 10 minutos antes de que tenga que dejar lo que estaba profundamente involucrado, y entretenga la interrupción.

Mi pregunta es: ¿cómo "salvas" rápidamente el estado mental en el que estabas cuando llegó la diversión? ¿Lo escribe "de alguna forma" en un papel o computadora, o simplemente "lo recuerda" de alguna manera? ¿Cómo rescatas esos pensamientos exactos en 5-10 minutos para que luego cuando regreses puedas ponerte al día desde el "punto" que dejaste?

A menudo me sucede que simplemente no puedo recordar esos pensamientos exactos que estaba pensando antes del golpe, y siento que he perdido una buena idea o soluciones a un problema. Trato de pensar retroactivamente tratando de llegar a ese MISMO estado cognitivo que me entusiasmó con una idea, pero me frustra no poder "llegar allí".

¿Te sucede algo como esto? ¿Cómo te "recuperas" de esto?

Mi principal preocupación no es el código: son esas "ideas abstractas" que aún no se han convertido en código que necesito "guardar" de alguna manera.

- actualización -

Después de estos muchos años, puedo decir con confianza, NO hay forma posible de hacer esto. Ninguna cantidad de garabatear su estado cognitivo en una hoja de papel le permitirá restaurarlo exactamente como estaba. Nuestros cerebros son mucho más complejos que el valor de un garabato miserable, cuando se trata de la información que contiene activamente en cualquier momento.

La mejor manera es evitar la distracción, no importa cuán importante sea, a menos que sea una situación de vida o muerte. Nada es más importante que estar en la zona y terminarla.

Si su lugar de trabajo es lo suficientemente ingenuo como para no apreciar que alguien "esté en la zona", entonces es hora de buscar un nuevo lugar de trabajo. YMMV sin embargo. Y con las relaciones personales, son las habilidades sociales y una pizca de articulación que pueden hacer un mundo de bien.

codificador de árboles
fuente
Recomiendo usar una herramienta de mapas mentales, como FreeMind. O Emacs Org-mode. Ambos son convenientes para la edición rápida de TODO-tareas e ideas a medida que surgen. (y respaldarlos en un sistema de control de fuente para acceder a ellos desde cualquier lugar)
haylem

Respuestas:

19

Antes de dejar mi PC, escribiré lo que estaba haciendo en un post-it o en una hoja de papel. Por lo general, estoy haciendo esto de todos modos como parte de una corrección de errores o análisis. Es realmente útil cuando un error se vuelve a abrir más tarde , aún puede ver sus líneas de pensamiento de hace un mes y descubrir lo que tiene que hacer mucho más rápido.

Además: establezca algunos marcadores en su código. Cuando regrese, puede ver lo que estaba haciendo al ver los marcadores que estableció.

Carra
fuente
2
+1. En mi experiencia, el acto de escribir lo que estaba haciendo se aclara en sí mismo y ayuda, incluso si no me refiero a lo que escribí más tarde .
jimwise
+1 estoy de acuerdo, escribirlo en "alguna forma" es la mejor solución :)
treecoder
2
+1: Hay todo tipo de investigación cognitiva para respaldar esto. Es como tomar notas escritas al escuchar una conferencia universitaria. Cuantas más partes de tu cerebro puedas involucrar en este momento, más posibilidades tendrás de aferrarte a los detalles.
Bob Murphy
Cuaderno para mí y aunque lo hago a medida que avanzo, los tacho cuando termino. También dejaré código parcial con errores de compilación intencionales con un mensaje de lo que hay que hacer.
Newtopian
8

Saco la aplicación de bloc de notas local y escribo mi plan de lo que vendrá.

He encontrado esto para ayudar más. El 100% del tiempo no puedo recordar lo que planeé hacer cuando regrese, las ideas son fáciles de encontrar, pero ¿recuerdas los pasos reales que ibas a hacer?

Yo uso algo como;

+ Fix i.d bug
    - look at first name , problem?
    - ...

+ Deploy changes to test database

+ Come up with production deployment plan

Lo guardo en el escritorio y mantengo el archivo abierto.

Encontré que, para mí, tiene estos beneficios;

  • Toma 5 minutos
  • Es fácil volver a la 'zona'
  • Activa los recuerdos más fácilmente
Ross
fuente
eso es lo que hago también, solo pensé que alguien podría tener una mejor idea :)
treecoder
No sé si hay una manera de "guardar" una "imagen" perfecta de sus ideas en ese momento. Pero pondré palabras clave para ayudar a recuperar todo eso, y pensaré en esa idea y la asociaré brevemente con esas palabras a medida que las escriba. Otra idea, cuando esto falla son los diagramas, y lo hice mucho cuando programé un motor 3D como hobby. De esta manera podría visualizar mis ideas o mi objetivo final, guardarlas en papel y volver e incluso hacerlo mejor que cuando lo dejé.
Ross
5

Además de la excelente sugerencia de escribir cosas, esta es una habilidad que se puede desarrollar con ...

Práctica.

Solía ​​ser el peor del mundo en multitarea. La gente solía temer interrumpirme porque era muy desagradable al respecto. Entonces me di cuenta de que realmente no era como una CPU con múltiples núcleos paralelos, era como una interrupción con los interruptores de tareas. Entonces comencé a entrenarme para relajarme y aceptarlo como una parte necesaria de la vida.

Una década después, uso un sistema tipo Pomodoro donde simplemente me tomo un descanso cuando el temporizador se apaga. Es increíblemente fácil volver "a la zona" en un ambiente relajado después de unos minutos de descanso. ¡Lo espero con ansias! Y para interrupciones más largas, esas notas escritas son invaluables. Ahora puedo restaurar casi todo ese "estado de CPU" mental a menos que pase más de un día.

Además, debido a que ahora estoy más acostumbrado a hacer frente a las interrupciones, ya no soy tan gruñón cuando la gente lo hace. También he mejorado mucho al decir simplemente: "Espera un momento mientras hago una nota". ¡Es increíble lo mucho más agradables que son mis interacciones sociales!

El cerebro es como un músculo mental, y mejora en cosas como la multitarea si le haces ejercicios progresivamente más difíciles.

Bob Murphy
fuente
4

¡Esto sucede todo el tiempo! Cuando estoy escribiendo un código, puedo decirle al 90% de las personas que esperen unos segundos; saben que les conviene no molestarme. Durante estos dos segundos, intencionalmente mezclo algunas teclas en la línea del código que estaba trabajando y marco la línea de arriba con XXX (esto se destaca muy bien en vim).

La combinación del código se realiza para que el programa no se compile y me veo obligado a mirar esa línea. Para la mayoría de mis idiomas en los que escribo, esto es suficiente para que pueda ver dónde lo dejé y activar mi memoria rápidamente en su estado productivo.

También he aprendido que estar en "la zona" ahora es un lujo en estos días (por lidiar con interrupciones constantes). Si bien definitivamente no es ideal en términos de productividad, te obliga a aprovechar al máximo lo que tienes.

JK
fuente
3

Descubrí que cada vez que trabajo con git, tengo menos problemas para dejar el trabajo atrás (y lo más importante, continuar trabajando en él). No se debe a git en sí, sino a las prácticas que he adoptado al aprender los flujos de trabajo de git. Estoy hablando de ramas temáticas .

Si realiza todos los 'agujeros' significativos en su desarrollo en una rama temática dedicada, es mucho más fácil volver a su trabajo. Este es el por qué.

  • La rama temática proporciona contexto. Le has dado un nombre descriptivo, por lo que sabes lo que estás viendo.
  • La historia tiene un alcance más pequeño y lineal. A medida que trabaje en conjuntos de cambios más pequeños (ramas), es probable que tenga menos compromisos para realizar, y serán lineales (no hay compromisos no relacionados entre ellos)
  • Si elimina las ramas del tema cuando haya terminado con un tema, es más fácil entender en qué temas ha estado trabajando y, lo que es más importante, lo que aún requiere su atención.

Si tiene disciplina, esta forma de trabajar hace que sea mucho más fácil dejar su trabajo y retomarlo más adelante.

Cuando estoy trabajando en algo, siempre encuentro un trabajo relacionado con mi tema actual. Nuevamente, tener una disciplina vale la pena. O terminas tu trabajo actual. Si no puede (a menudo tengo este 'problema' - 'Necesito arreglar esto ahora', etc.), simplemente cree una nueva rama de tema para la solución (o refactorización, mejora, lo que sea). Incluso si su espacio de trabajo actual no está listo para comprometerse, simplemente haga git stashel trabajo pequeño en su propio tema y popdesde el escondite para volver a su trabajo real.

merryprankster
fuente
3

Para preservar el estado de la tarea y cambiar a otro, me encanta preservar el contexto de Mylyn . Lo que hace Mylyn es almacenar y luego restaurar el estado exacto de su IDE (perspectiva abierta, archivos abiertos, ubicación en estos, etc.).

Para las cosas que estaba haciendo, puse TODO comentarios. Eclipse los muestra automáticamente como lista de tareas.

vartec
fuente
2

Me desarrollo en una VM. Y cuando me interrumpen (al final del día, almuerzo, reuniones, etc.) y no quiero perder mi hilo de pensamiento, solo escribo un comentario en el código, algo como:

//Figure out how to implement "Date range too far out" check correctly

A veces estos comentarios continúan por algunas líneas, si es complicado. Pero solo escribo el comentario en el código, en el IDE, luego dejo el IDE abierto y utilizo el comando "Suspender y salir" en la VM. Luego, cuando lo levanto nuevamente, está mi comentario justo frente a mí de inmediato, lo que me ayuda a volver rápidamente a lo que estaba pensando antes.

Mason Wheeler
fuente
1

He empezado a usar el software de mapas mentales (actualmente FreeMind). Lo uso para todo, pero relevante para esto, incluye una lista de tareas para cada proyecto en el que estoy trabajando. Cuando estoy pensando en una solución a un problema dado en la lista, comienzo a escribirlo dentro de mi mapa mental. Ahí es donde guardo mi solución, incluso mientras estoy trabajando en ella, en lugar de tratar de mantenerlo todo en mi cabeza.

Eso me permite enfocar mi mente en los detalles de implementación del código, sin perder la imagen general. También significa que las interrupciones tienen un efecto mínimo en mi trabajo, porque de todos modos mantengo los pasos que planeo seguir.

El software específico o el método de seguimiento que utiliza es irrelevante. Esta idea sería igual de útil en el Bloc de notas o con una hoja de papel. El concepto relevante es que está registrando sus ideas tal como las tiene, para que siempre estén disponibles.

MattBelanger
fuente
1

Si se encuentra en un entorno de alta interrupción, creo que mantener un diario por hora (escriba un par de viñetas cada hora) es muy útil. Utilizo una combinación de TiddlyWiki y papel (Tiddly para documentar / buscar, papel para pensar rápidamente).

Comencé a hacer esto cuando trabajaba desde casa con un bebé y aumentó mi productividad en todos los ámbitos. Ayuda con el problema inmediato de redescubrir mis pensamientos, y tiene un agradable efecto secundario de aumentar mi autoconciencia (la semana pasada pasé una hora modificando un método de golpe de bits de 10 líneas para hacerlo más legible. Probablemente no sea el mejor uso de mi tiempo).

Steve Jackson
fuente
+1 gracias por TiddlyWiki - Lo he usado anteriormente pero nunca pensé que podría usarlo para "serializar" rápidamente mis pensamientos :)
treecoder
@greengit: obtengo mucho kilometraje. Mantengo mi diario, el registro de soluciones y la cartera de pedidos. Lo uso para hacer evaluaciones de rendimiento. Realizo muchas actividades de I + D de un solo hombre donde los proyectos se trabajan durante algunas semanas cada año (antes de las demostraciones, naturalmente) y luego se archivan nuevamente. Me perdería si no tuviera una forma de respaldar mi cerebro. Me gusta TiddlyWiki porque sigue siendo personal y no tengo que escribir al nivel de formalidad que quisiera para un wiki o documento de empresa que cualquiera debería poder entender.
Steve Jackson
entonces, ¿recomiendan la versión de escritorio (la predeterminada) o ccTiddly , que es la encarnación respaldada por el servidor de tiddlyWiki
treecoder
@greengit: uso la versión de escritorio y un trabajo cron para hacer una copia de seguridad en un recurso compartido de red. No he usado la versión ccTiddly, pero parece que la mayoría de su funcionalidad está cubierta por los wikis del proyecto que tenemos para colaborar en los proyectos. ccTiddly parece golpear uno de mis elementos de la lista de deseos, la capacidad de adjuntar archivos a tiddlers, pero pego enlaces según sea necesario.
Steve Jackson
0
  • pensar en voz alta en el documento de registro de un desarrollador a medida que avanza
  • volcar el cerebro en el registro cuando te interrumpen
  • asegúrate de escribir lo siguiente que ibas a hacer

el primero es un seguro contra interrupciones, retroceder y repetirse más tarde, mientras que el segundo es esencial para retomar donde lo dejó.

Steven A. Lowe
fuente
0

Tengo un comentario corriente en un bloc de notas a mi lado. Traté de hacer esto en un archivo de bloc de notas, pero por alguna razón no funciona tan eficazmente como escribirlo. Si está razonablemente organizado sobre lo que anota como su trabajo, efectivamente tiene un núcleo de sus pensamientos abstractos a los que volver.

temptar
fuente
0

Lo que encontré me ayudó mucho (incluso para "OK, ahora me voy a casa y regreso al trabajo mañana") estaba constantemente anotando los principales pensamientos en mi mente, y luego haciendo cosas fuera de esa lista.

Pero definitivamente se basa en (i) procesar activamente esa lista, como mínimo purgarla en lugar de terminar con cientos de "listas de tareas" a medio terminar a las que quiere volver y (ii) practicar lo suficiente como para tener la experiencia para saber lo que necesita escribir y lo que no: qué tareas tienen "agregar el botón de la barra de herramientas" y los detalles de diseño que puede recrear de su mente la próxima vez, y qué tareas ya ha realizado la mitad de la planificación sin dándote cuenta y necesitas anotar eso.

Además, obviamente, trate de evitar distracciones innecesarias; Siempre es bueno poder continuar sobre una distracción, y siempre habrá algo, pero no alienten demasiado.

Jack V.
fuente
0

De hecho, he causado varios errores como resultado de ser interrumpido precipitadamente y abruptamente para el almuerzo en una antigua empresa. Terminé pidiendo unos minutos más o simplemente me fui sin mí solo para que me presionen a unirme, y dejé el código medio escrito, el pensamiento medio completo, solo para volver al código una hora más tarde y perder rastrear y hacer las cosas mal.

Terminé comenzando a compensarlo tomando notas y escribiendo listas de tareas a medida que avanzaba y simplemente manteniendo una "pila mental más superficial", por así decirlo. TDD también ayuda, ya que las pruebas expresan lo que está tratando de hacer con un diseño, además de garantizar que lo está haciendo.

También he desarrollado un lenguaje que está en algún lugar entre lo que intuitivamente me parece codificación y lenguaje humano. Consiste en sonidos como " ¡Nyargh! ¡Bloobly-bloop! " Y hago esos sonidos a veces si la gente intenta hablar conmigo mientras estoy ocupado. Si bien no entienden esos sonidos, se comunica que estoy en un estado incapaz de comunicarme adecuadamente con los humanos en este momento, momento en el que se alejan y me permiten reanudar el pensamiento y la escritura del código.

Dicho esto, mi esposa se ha acostumbrado a la idea de que ella podría hablar conmigo y yo podría estar asintiendo y así sucesivamente y no haber procesado mentalmente una sola palabra que dijo. Es como si pudiera ver su boca moverse y escuchar los sonidos que salen, pero en realidad no se está traduciendo correctamente a las instrucciones de la máquina. Ella ha aprendido a notar mis respuestas cuando eso sucede mientras estoy absorta en mis pensamientos.

También a veces proceso a la mitad lo que dijo y simplemente lo empujo a la cola concurrente, como si me hiciera una pregunta, momento en el que no puedo procesarlo completamente hasta que haya sacado todo de mi cola mental (que usa muy ineficiente mecanismos de bloqueo para seguridad de roscas). Entonces ella se ha acostumbrado a hacerme una pregunta con solo un asentimiento y sin respuesta o una respuesta sin sentido como "sí" o "bloobly-bloop" a "¿qué quieres hacer esta noche?" solo para que lo procese diez minutos después y responda la pregunta como si la hubiera escuchado hace un segundo.

Además, no sé ustedes, pero me distraigo mucho cuando estoy perdido en los pensamientos de programación. Terminé buscando mis calcetines una vez por siglos, olvidando dónde los puse. De alguna manera los puse en el refrigerador. Creo que estaba tratando de tomar una bebida o algo con mis calcetines en la mano y de alguna manera puse los calcetines en el refrigerador y olvidé tomar la bebida. En otro momento, fui a un basurero después de estacionar mi auto con las llaves en la mano e intenté tirar un envoltorio que tenía en la basura. En cambio, terminé tirando las llaves de mi auto al basurero y ni siquiera me di cuenta hasta que intenté desbloquear el auto con el envoltorio de plástico, en ese momento tuve que sumergirme en la basura para obtener mis llaves. De todos modos, mi esposa está acostumbrada a este tipo de cosas y mis cosas aparecen en lugares extraños.

[...] tu novia (o novio) acaba de venir

Solo por esta parte, aparte, las citas y el romance son difíciles con la programación. Tuve muchas relaciones pasadas en las que las citas fueron maravillosas hasta que comenzamos a vivir juntas y vieron ese lado de mí perdido en sus pensamientos todo el tiempo mientras estaba sentado todo el día frente a la computadora y paseaba pensando mientras respondía con " bloobly-bloop ", y interes perdido. Es difícil encontrar a alguien con la paciencia para eso. Tuve mucha suerte con mi esposa que lo soporta.


fuente