Me cuesta mucho concentrarme en lo que estoy haciendo (en cuanto a la programación) cuando algo (compilación, tiempo de inicio, etc.) lleva más de unos pocos segundos. Como anécdota, parece que el umbral es de unos 10 segundos (y recuerdo haber leído sobre un estudio que decía lo mismo, aunque no puedo encontrarlo ahora). Entonces, lo que generalmente sucede es que hago un cambio y luego ejecuto el programa para probarlo. Eso toma alrededor de 30 segundos, así que empiezo a leer otra cosa, y antes de darme cuenta, han pasado 20 minutos, y luego toma (¡si tengo suerte!) Otros 10 minutos más para lidiar con el cambio de contexto para volver a la programación .
No es una exageración decir que algunas cosas que deberían llevarme minutos, literalmente, tardan horas en completarse.
Tengo mucha curiosidad sobre lo que hacen otros programadores para combatir esta tendencia (¿o si soy único y no tienen esta tendencia?). Las sugerencias de cualquier tipo son bienvenidas: desde "siéntese en sus manos después de presionar el botón de compilación", hasta trucos mentales, hasta "si tarda 30 segundos en iniciar algo para probar un cambio, entonces algo está mal con su proceso de desarrollo ! "
fuente
Respuestas:
Escribí una pequeña utilidad de línea de comandos llamada 'alerta' que hará que el ordenador emita un sonido / reproducir un sonido / etc Entonces, cuando tengo una larga comando para ejecutar tales como
make
, corromake; alert
. Donde pueda, también haré que tome una discusión para que haga un sonido diferente dependiendo de la discusión. Por lo tanto, puedo hacermake; alert $?
y sabré a) que la compilación está terminada yb) pasó o falló. No tienes que ser tan elegante con eso; Solo unecho -e "\a"
puede ser suficiente.Si desea ser realmente elegante / molesto, use un paquete de texto a voz y active una ventana emergente de diálogo.
La idea principal aquí es interrumpir su distracción tan pronto como se complete la tarea relacionada con el trabajo.
fuente
MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
;
lugar de&&
. Su segundo ejemplo solo se ejecutaráshow_message
si tienemake
éxito, que no es exactamente lo que desea. Para ser claros: me gusta el ejemplo que diste, solo soy exigente con los detalles de implementación. ;)command; alert
y le dará una alerta de escritorio cuando termine, especificando qué comando fue el que terminó. Realmente útil para largas compilaciones o pruebas.Tengo el mismo problema, y la solución para mí ha sido pasar el tiempo haciendo algo que no te dejará atrapar. Para mí, esto generalmente es (1) llenar una botella de agua o (2) pararse y dar un paseo de 30 segundos por la oficina para estirar las piernas, que de todos modos necesitan el movimiento. Puede perderse navegando en Internet; rara vez te pierdes caminando por tu propio cubículo.
fuente
Haz algo por tu salud:
Póngase de pie, aléjese de su computadora y haga algunos ejercicios de estiramiento de manos y brazos. Esto llevará de 2 a 5 minutos como máximo. Tu futuro yo no sufriendo de RSI te lo agradecerá.
Además, con respecto al descanso de 2-5 minutos, lea la técnica de Pomodoro . Esto se basa en la idea de tener breves descansos frecuentes para distraerse de su tarea actual y dejar que las cosas se hundan un poco. Es un descanso lo suficientemente corto como para no perder su línea de pensamiento por completo, pero lo suficiente para darle un respiro a su cerebro.
fuente
El desarrollo es un proceso creativo. No puede ser constantemente productivo, especialmente si hay muchas distracciones en su oficina. Es por eso que la prueba de Joel sugiere condiciones de trabajo silenciosas.
Joel Spolsky también explica lo que significa "no estar en la zona" . Cada vez que algo te impide hacer tu trabajo, tienes que pasar diez minutos, a menudo más para volver a la zona y volver a ser productivo.
Hay muchas distracciones:
No hay nada que ver con eso. Lo único que puedes hacer es eliminar las distracciones:
En su caso, si es el compilador lo que lo distrae, intente reducir el tiempo de compilación:
fuente
Creo que seré yo quien lo diga, pero deberías sentarte allí y esperar a que termine.
Necesita volver a entrenarse para no sentir la necesidad de estar constantemente y hacer cosas activamente. Este es un problema muy perjudicial que afecta no solo a los desarrolladores sino a todas las personas. La sociedad se ha obsesionado con la necesidad de una estimulación constante (visual, audio, mental). Parece que nadie puede estar inactivo durante más de 30 segundos sin sacar su teléfono y enviar mensajes de texto, navegar por la web, revisar Facebook, etc.
Si presiona compilar y le tomará un minuto más o menos, considere que es una gran oportunidad para sentarse y dejar que su cerebro se relaje. Resista el impulso de hacer algo estimulante y simplemente disfrute de un momento de inactividad.
Con el tiempo será más fácil y descubrirá que tendrá una experiencia laboral mucho mejor cuando deje de intentar mantener su cerebro encendido al 100% durante todo el día.
fuente
Estoy de acuerdo con lo que sugiere @retracile, pero tenga en cuenta que de acuerdo con las reglas de programación de Zen , debe centrarse en una sola tarea a la vez. Responder a las llamadas telefónicas, navegar por la Web, las redes sociales o incluso realizar múltiples tareas probablemente disminuirá su productividad. Use la breve demora de espera para pensar en la tarea / solución existente y qué puede hacer para mejorarla.
fuente
Tengo un bar pegado a la jamba de la puerta.
Solo puedo hacer 5 dominadas, por lo que me lleva menos de un minuto. O hago una taza de té.
fuente
Para mí, la forma de mantener mi enfoque es ser implacable con respecto a mantener un espacio de trabajo limpio, cualquiera que sea ese espacio de trabajo. Cualquier cosa que no sea parte de mi proyecto actual es ruido en la relación señal / ruido sagrada. Una parte vital de mantener el enfoque es mantener alta la relación señal / ruido.
Cuando estoy codificando, esto significa cerrar programas que no he usado recientemente, podar regularmente las pestañas de mi navegador y mantener mi escritorio libre de elementos que no son inmediatamente relevantes para mis proyectos actuales. Utilizo los retrasos de diez segundos para "hacer rondas", por así decirlo: cerrar pestañas, cerrar programas, eliminar archivos temporales y archivar lo que se necesita archivar, etc.
Tener el hábito de "hacer las rondas" también ayuda a prevenir los rastros de conejos, porque me obliga a evaluar continuamente y recordar todas las tareas actuales.
Hay que pagar un pequeño precio cuando tiene que volver a abrir una pestaña que ya ha abierto 5 veces hoy o volver a iniciar un símbolo del sistema con privilegios elevados por decimoquinta vez, pero aprovechar los aceleradores como los atajos de teclado puede reducir esto a un precio muy pequeño de hecho.
fuente
Me parece útil hacer un seguimiento del tiempo real que paso sin trabajar
Puedes usar cualquier cantidad de cosas para esto. Sé que hay muchas aplicaciones gratuitas que puedes descargar para hacer esto por ti (no puedo pensar en ninguna fuera de mi cabeza en este momento, pero si alguien me da alguna, las agregaré a esta respuesta), o Es muy fácil crear uno propio. Usualmente uso uno que creé, que es una pequeña ventana en la esquina de mi pantalla con botones para
Working
/NotWorking
, y solo hago clic en el que esté cada vez que cambio el foco.Un reloj de ajedrez también funciona.
El solo hecho de rastrear tu tiempo te hace más consciente de cuánto tiempo estás desperdiciando que deberías dedicar a trabajar, y creo que me hace más productivo porque me obligaré a dejar esa pregunta o blog súper interesante de stackoverflow artículo y volver a trabajar
fuente
Para mantener mi atención, uso garabatos. Siempre tengo un bolígrafo y un bloc de notas detrás de mi teclado y garabateo. No es más que garabatear en un trozo de papel sin ningún significado, pero mantiene mi atención lo suficiente y no me distrae para poder volver a lo que estaba trabajando.
Hice esto toda mi vida inconscientemente, pero recientemente encontré un wiki sobre él: http://en.wikipedia.org/wiki/Doodle
fuente
Hagas lo que hagas , no vayas a ninguno de los sitios de StackExchange. Te chuparán :)
Más en serio, navegar por la web mientras espera que algo termine no es bueno para la productividad (a menos que esté investigando algo relacionado con la tarea actual).
Por lo general, hago algunas tareas menores que no tomarán más de 1-2 minutos. (limpiar algo, escribir comentarios, notas).
fuente
En su caso, levántese y camine un poco. Si es difícil volver a "la zona" probablemente sea porque estás demasiado lejos. Hacer cosas en la web es solo otra zona y es fácil perder la noción del tiempo. Dale a tu cerebro el descanso que claramente quiere y salga a caminar, asista, idealmente en un baño, o hable con un compañero de trabajo al azar. Hacemos muchas cosas detrás de escena en piloto automático. Los descansos no son malos para la codificación, son buenos, pero la idea es dejar de disparar en todos los cilindros por un tiempo y ver qué se les ocurre a los quemadores traseros mientras la parte más consciente de su mente le da un descanso. Los buenos desarrolladores no son calculadoras humanas. Deje que las partes de su cerebro que hacen todas las cosas intuitivas y de coincidencia de patrones en el piloto automático hagan su trabajo por un tiempo.
Si esto no es solo un problema de codificación, es posible que desee considerar AGREGAR.
fuente
Las sugerencias para levantarse y caminar, etc., son buenas si sus ciclos son largos (aproximadamente una hora). Pero cuando los tiempos de ciclo se acortan, y me encuentro apareciendo entre vim y haciendo cada pocos minutos, entonces me quedo en la zona permaneciendo en la tubería: mientras el paquete de compilación o prueba está funcionando, tiendo a retroceder y revise el código, luego comience a trabajar en el próximo fragmento que estaría haciendo de todos modos si la compilación o las pruebas tienen éxito.
fuente
Haga un plan al comienzo de cada día sobre cómo usar este "tiempo libre". Puede implicar
o casi cualquier cosa realmente.
Tenga esta tarea secundaria siempre abierta en una ventana en algún lugar de su escritorio. Tan pronto como presione el botón "compilar" (o lo que sea que le tome más de 30 segundos), cambie a la tarea secundaria y dedique el tiempo suficiente para avanzar, lo que podría ser un par de minutos, o podría ser menos
Mientras realiza la tarea secundaria, tenga en cuenta que esto no es en lo que debe centrarse su cerebro. Sigue pensando en la programación. Esto no es facil; aún sufrirá el cambio de contexto la mayoría de las veces.
Si hace esto, incluso si pierde el contexto muchas veces, su tiempo perdido no es realmente una pérdida de tiempo, y tiene algo que mostrar al final del día. Pero lo más importante es planificar, al comienzo del día, cuál será la tarea secundaria del día.
fuente
Supongo que podemos usar el tiempo de compilación para documentar el código, limpiar el código, alinear el código correctamente, para que no nos alejemos de nuestro IDE y sigamos mejorando la calidad del código.
fuente
Por lo general, solo intento buscar errores, errores tipográficos o formas de mejorar el estilo del código mientras tanto. Eso me mantiene mirando el código, pero no (siempre) me distraigo con algo interesante. Además, esto !
fuente
Es concebible que tengas un poco de TDAH. Mucha gente lo hace. Los mecanismos de afrontamiento son los que se dan en las otras respuestas (o posiblemente la medicación).
fuente
Durante esos 10-30 segundos ve y haz algo:
Durante ese tiempo, no haga cosas que sabe que le llevarán mucho tiempo (a menos que pueda permitirse el lujo de pasar algún tiempo) como:
Además, no instale alguna alarma de audio para indicar el final de la compilación. Tus colegas lo apreciarán.
fuente
Para la distracción de Internet durante el trabajo en general, sugiero The Pomodoro Plugin si está utilizando Google Chrome
¡Personalmente creo que no puedes ser productivo durante todo tu tiempo de trabajo! dado que está compilando, significa que hizo los esfuerzos suficientes para respirar ... para no abusar o salir del contexto, siga pensando en el siguiente paso si la compilación no genera errores ... O limpie su trabajo área: Escritorio, Pestañas, Explorador ...
fuente
Lo que estás describiendo es perfectamente normal.
Cuando estábamos haciendo estudios de usabilidad, observamos los retrasos por orden de magnitud. Cuando un usuario hace clic en un botón, ¿cuánto tiempo tienen que esperar?
Hay muchas excepciones, como operaciones compuestas, como escribir.
Cuando hacíamos trabajo de rendimiento, a menudo nos hacíamos la pregunta "¿qué tan rápido debería ser la operación X?" La respuesta es, mientras el usuario pueda percibir un retraso, más rápido sería mejor.
En su caso, está alcanzando ese umbral de 10 segundos y su atención se desvía. Lo mejor que puede hacer es reducir el retraso. Cuanto más corto sea el retraso, mayor será su productividad. Imagine que tiene el código en el lado izquierdo de su pantalla y la aplicación en ejecución a la derecha. A medida que edita el código, la aplicación cambia en tiempo real. Hasta que estés allí, tienes espacio para mejorar.
Consulte también la reciente publicación de blog de Jeff (las toneladas de buen contenido que lleva): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html
Si va a cambiar a otra cosa, elija algo que no involucre a su cerebro de la misma manera que el trabajo que estaba haciendo. Limpia tu escritorio, medita, estira, flexiones, arte, mira por la ventana.
fuente
Cuando hago trabajo ad-hoc en SAS, encuentro la siguiente línea muy útil:
Esto produce un cuadro de diálogo emergente una vez que todo el código anterior ha terminado de ejecutarse. Estoy seguro de que hay equivalentes en otros idiomas. Hubiera publicado esto como un comentario para retractar la respuesta, pero no tengo suficiente reputación.
fuente