Si solo considera la segunda parte de mi pregunta, "¿Por qué un desarrollador no debe ser interrumpido mientras se codifica?", Eso ha sido discutido varias veces por personas inteligentes. Heck, incluso el cofundador de SO, Joel Spolsky, escribió una publicación en el blog sobre "entrar en la zona" y "ser expulsado de la zona" y por qué toma un promedio de 15 minutos alcanzar la productividad cuando se participa en complejos, tareas relacionadas con el desarrollo de software. Así que creo que se ha establecido el por qué.
Lo que me interesa es cómo explicar todo eso a alguien que no conoce los beans sobre Beans (khmm me refiero al desarrollo de software). ¿Cómo decirle a la esposa, o al tipo gracioso de la contabilidad en el lugar de trabajo, o al viejo amigo que te llama por Skype cada 30 minutos con un "Wazzzzzzup ?!", que todas las interrupciones tienen un impacto mucho más profundo en tu trabajo que los obvios 30 segundos que tomaron de tu tiempo. Obviamente no puedes explicarlo con oraciones como "Tengo que hacer malabarismos con muchos nombres de variables en mi memoria a corto plazo" a menos que quieras ser blanco de miradas en blanco o abuso amistoso.
Me gustaría poder explicar todo eso a los que no son desarrolladores de una manera que los haga comprender claramente, sin ser ofensivos, elitistas o demasiado técnicos.
EDITAR: Gracias a todos por sus excelentes ideas. He aceptado la respuesta de EpsilonVector como su analogía era el más cercano a mis necesidades originales. La explicación de "quedarse dormido" no es ofensiva ni técnica, casi cualquier persona puede relacionarse con ella, y las consecuencias de ser molestado mientras se duerme o mientras está en la zona son muy similares: experimenta frustración y "pierde" 15-20 minutos de tiempo.
fuente
Respuestas:
Pruebe las siguientes analogías: Primero: "¿Cuánto tiempo le toma quedarse dormido?" "X minutos" "Ahora imagina que cuando estás a punto de quedarte dormido, alguien entra y te interrumpe, ¿cuánto tiempo te tomará quedarte dormido ahora? Esos pocos segundos que te quedan, o tendrás que comenzar de nuevo para ' hundirse 'a donde estabas? " "Tendré que comenzar de nuevo" "Genial. Lo mismo. Al igual que conciliar el sueño, me lleva un tiempo 'hundirme' en el modo de enfoque, y me toma un tiempo volver a hacerlo una vez que me interrumpen, excepto que también olvido la mitad de lo que estaba haciendo ".
Segundo: "Sabes cómo cuando estás leyendo un libro te 'hundes en él'; después de un tiempo ya ni siquiera notas las palabras, bloqueas todo lo que te rodea y estás totalmente inmerso en las imágenes mentales. Lo ves." "Si." "¿Cuánto tiempo te toma llegar allí?" "Aproximadamente X minutos" "Ahora imagina que cuando estás tan inmerso en el libro que alguien entra y te interrumpe, ¿cuánto tiempo te llevará volver a eso? ¿Sucederá de inmediato o tendrás que comenzar de nuevo para ' hundirse 'a donde estabas? " "Tendré que comenzar de nuevo" "Genial. Lo mismo. Al igual que con la lectura, me lleva un tiempo 'hundirme' en el modo de enfoque, es tan molesto cuando alguien me saca de allí,
fuente
No creo que el estado de ensueño que describe Joel sea técnico. Es el mismo cambio en el cerebro derecho que cualquiera experimenta cuando dibuja o cae bajo el hechizo de un libro realmente bueno. ("Dibujo en el lado derecho del cerebro" de Betty Edwards lo describe perfectamente.) Todos han experimentado esa sensación de concentración en la que desconocen el paso del tiempo.
Creo que es condescendiente desde el principio imaginar que esto es algo que solo las personas técnicas entienden, que el concepto debe ser simplificado para que los no desarrolladores lo entiendan. Simplemente explíquelo en un lenguaje sencillo: lo entenderán.
fuente
Vuelva a enrutar su hilo interno a IO verbal, es decir, gire cuando lo interrumpan y siga murmurando código y mirando a la distancia media hasta que se den por vencidos y se vayan. Si hablan, solo murmuren más fuerte.
fuente
Dígales que la codificación (o inserte otra actividad de alta concentración aquí) es como ser un artista de circo que hace las placas giratorias .
Primero comienzas girando un plato en un palo, hazlo funcionar, luego comienza a girar un segundo plato, sigue así, regresa al primer plato, dale un poco de giro adicional para que siga funcionando, luego comienza a girar un tercer plato , póngalo en marcha, luego regrese al segundo plato, un pequeño giro adicional, un primer giro adicional del plato, un tercer giro adicional del plato, luego comience a girar cuarto, etc.
Entonces suena el teléfono y todos los platos se caen.
El estado de flujo se ha ido. Ahora tienes que empezar de nuevo. Haz girar un plato ...
Me gusta pensar que cada placa es una porción de datos, variables, conceptos, estados, etc. que debe tener en mente.
fuente
Hace unos meses hice que alguien entrara a mi cubo y sacara mis auriculares mientras codificaba. Dejando de lado la furia interna, mi enfoque consistía en explicar que a menudo los programadores están inmersos en un pensamiento lógico que requiere un enfoque diferente y concentrado del pensamiento y que la interrupción repentina realmente puede arruinar el proceso de pensamiento. No ha sucedido de esa persona otra vez, así que tal vez funcionó. Otra cosa que puede considerar es la señal de ocupado / libre. Tengo un amigo que hace algoritmos y tiene un signo de dos lados que dice "Codificación - No interrumpir" en un lado y "Free to Chat" en el otro. Eliminar la ambigüedad es la clave aquí.
fuente
Ok, estoy agregando mi propia respuesta (sé que esto es un poco tonto, pero tal vez arroja algo de luz adicional sobre lo que estaba apuntando).
Le dije lo siguiente a alguien que me interrumpió recientemente en un mal momento: "Desarrollar software es como conducir un automóvil en una carretera muy transitada por primera vez en su vida. Toda su atención se centra en el volante, los pedales y los automóviles. apresurándose a su alrededor, y simplemente no tiene un poco de atención extra para una buena conversación. Si comienza a enfocarse en lo que trata la conversación, seguramente perderá el control sobre el automóvil y terminará en un accidente".
Esto era algo con lo que la persona podía relacionarse, pero está lejos de ser una buena analogía. Si me interrumpen, la consecuencia será muy diferente de un accidente. He estado desarrollando SW durante 2 décadas, entonces, ¿por qué comparo esto con algo que se está haciendo por primera vez? Y así.
fuente
" Mihaly Csikszentmihalyi on flow " es una buena charla TED sobre esta idea de ser realmente productivo bajo ciertas condiciones que pueden o no atraer a las personas. No olvides que para algunas personas tal vez nunca quieran entender la explicación y, por lo tanto, es como golpear al caballo muerto recursivamente hasta el infinito.
fuente
Lo llamo un trance de programadores. Hay muchas buenas analogías aquí, entonces, ¿cuál es una más, eh? Como se ha dicho anteriormente, un programador navegará mentalmente por varios flujos lógicos diferentes hasta que se presente el correcto. ENTONCES se escribe en código y se guarda en la computadora.
Entonces, digamos que está escribiendo un documento final o un documento importante. Los pensamientos fluyen en palabras hacia la computadora, pero aún no ha guardado los cambios. Luego poof, se va la energía o la computadora se bloquea. Recuperar todo eso llevará tanto o más tiempo y nunca será lo mismo que el original. (¿Cuántos de nosotros, veteranos, hemos tenido ESO que sucedió?)
Esto es lo que le sucede al código en tu cabeza cuando se interrumpe. Los pensamientos son tan frágiles como el humo. Si aún no se han guardado y aparece algo para interrumpirlos, se han ido.
fuente
Estimado y distinguido compañero de trabajo: En un esfuerzo por ser más eficiente, me estoy centrando en mi trabajo y estoy respondiendo preguntas por correo electrónico en momentos entre trabajos para mantener la interrupción al mínimo para servirle mejor a usted y al nombre de la empresa _ . Por favor envíeme un correo electrónico y me pondré en contacto con usted lo antes posible. Gracias.
fuente
Si escuchas música, coloca un letrero que diga algo parecido a
Esto solo es efectivo si alguien lee y no siempre tiene los auriculares puestos.
fuente
Lo considero como una gran red de conexiones complejas que tengo que construir en mi mente, una estructura de relaciones entrelazadas que se afectan entre sí de formas diferentes, no siempre obvias, todas las cuales deben entenderse y mantenerse claramente en foco mientras escribo el código. La creación de esta web lleva de 5 a 15 minutos en un proyecto con el que estoy bastante familiarizado, y varias veces menos en un proyecto menos íntimo.
Cuando se interrumpe mi concentración, la red comienza a colapsar, y si la interrupción dura más de unos segundos o tengo que pensar en otra cosa incluso un poco compleja ("Cuando el servidor se cayó la semana pasada, ¿qué hiciste? decirle al cliente? "), la web colapsa por completo. Cuando termina la interrupción, tengo que volver a construir toda la web, en gran medida desde cero.
Si me toma 10 minutos construir la web y me interrumpen por solo 2 minutos tres veces por hora, debe comprender que en lugar de codificar durante 50 minutos de la hora, solo estoy haciendo 24 minutos de trabajo. Esas 3 pequeñas interrupciones reducen mi productividad a la mitad .
fuente
Neil Ford lo contó el último Devoxx. Escribió un libro al respecto: El programador productivo. Explica consejos sobre los interruptores de 'flujo'. Si estás en el flujo, estás en tu punto de concentración más alto. Pero si te interrumpen, demoras más de -20 minutos en recuperar tu flujo.
Es posible que desee explicarlos si sale de su flujo, la memoria de acceso aleatorio en su cerebro pierde los datos sobre lo que está trabajando y necesita 20 minutos para recuperar los datos en su RAM;)
fuente
Normalmente pongo el siguiente estado en mis clientes de mensajería instantánea:
Al menos parece hacer el truco con el
fuente
Podría intentar explicar, pero también podría intentar esto:
Usted interrumpe ellos , mientras que están haciendo algo que requiere una profunda concentración, si se está leyendo, viendo una película, el cálculo o mejor aún contando algo. Entonces, todo lo que tienes que explicar es que es exactamente así cuando te interrumpen. Debería hacer el truco. Solo por favor no los moleste mientras conducen o algo así :).
fuente
No te explico. Les informo amablemente que la interrupción solo agregó 6 semanas para programar.
fuente
Lo que hago en la oficina es encontrar lugares de hotdesk (escondites) en diferentes departamentos de la oficina, de esta manera nadie sabe dónde está y no puede molestarlo, pero si esto no es una opción, solo obtenga una señal y explique que a menos que sea de vital importancia, no molestar!
fuente
No sé sobre el resto, pero para Skype al menos sugeriría usar el modo "No molestar". Y si debe usarlo para comunicarse en el trabajo, tener una segunda cuenta solo de trabajo que no comparta con nadie que no quiera molestarlo en el trabajo :)
fuente
No tiene que ser complicado. Algo tan simple y no hostil como "Estoy trabajando en algo que requiere mucha concentración. ¿Se puede poner esto en un correo electrónico? Prometo verlo tan pronto como termine aquí".
fuente