¿Cómo puede lograr y mantener el flujo mientras programa la pareja?

17

Flow es un concepto introducido por Mihaly Csikszentmihalyi; en resumen, significa entrar en la "zona". Te sientes inmerso en tu tarea, concentrado; La tarea puede ser difícil pero desafiante al mismo tiempo. Cuando las personas alcanzan el flujo, su productividad se dispara. La programación requiere una gran cantidad de enfoque mental porque a menudo necesitamos hacer malabares con varias cosas en nuestras mentes a la vez. A muchos les gusta trabajar en un ambiente tranquilo donde pueden dirigir toda su atención a la tarea. Si se interrumpen, puede llevar varios minutos o incluso horas volver a fluir.

Entiendo que hay una práctica en desarrollo ágil y programación extrema llamada programación de pares. Significa que pone a todo el equipo de desarrollo de software en una habitación para que la comunicación sea fluida. Escribes código con tu par porque de esta manera obtienes revisiones de código instantáneas y menos errores pasan.

Siempre he tenido problemas para lograr el flujo al hacer programación de pares debido a interrupciones constantes. Estoy pensando profundamente en un problema y de repente alguien me hace una pregunta de otro par. Mi tren de pensamiento está perdido.

¿Cómo puede lograr y mantener el flujo mientras programa la pareja?

siamii
fuente
44
No estoy de acuerdo en que otros pares puedan interrumpirse en cualquier momento.
JeffO
3
Una alternativa a Flow es identificar y mantener la posición en el pico Ballmer . Esto puede requerir una buena cantidad de experimentación, tiempo y escocés para lograrlo.
Aerodeslizador lleno de anguilas
Estoy distraído leyendo esta pregunta cuando debería escribir código. Si estuviera programando en pareja con alguien, no habría abierto esta pregunta para leerla, y presumiblemente estaría haciendo más cosas.
TehShrike

Respuestas:

15

Editar: Descargo de responsabilidad: así es como yo defino "la zona": A state of extreme focus, in which one is able to understand how many intricate details connect together, regardless of whether these do so elegantly (or simply) or not.

Intento evitar este estado porque, si bien puedo producir el código correcto en la zona, a mí y a otros desarrolladores nos costará entenderlo más adelante. En pocas palabras: leer el código escrito en la zona a menudo puede requerir que el lector esté en la zona. Esa restricción es mi problema.

Hay un capítulo encantador en The Clean Coder donde el tío Bob explica persuasivamente por qué "entrar en la zona" es una idea delirantemente mala.

Aquí hay una alternativa posiblemente mejor que "entrar en la zona": piense con claridad y considere con calma y profesionalidad lo que está haciendo. Comunicar. Comparta pensamientos con su (s) pareja (s). Identifica los problemas reales. Discuta posibles soluciones. Es posible que no se sienta enfocado de manera sobrenatural, pero es probable que tome buenas decisiones y diseños accesibles.

Si usted y su pareja pueden discutir el problema sin que ambos estén extremadamente concentrados, entonces es probable que haya reducido el problema a su naturaleza más simple. Eso sugiere que podrás comprenderlo nuevamente cuando lo necesites.

Por otro lado ... Si solo necesita un poco de tiempo solo para aclarar la cabeza (todos lo hacemos a veces), tómelo. Pon tus pensamientos juntos. Primero resuelve el problema en tu cabeza.

Pero la cuestión es que si lo hace, no use ese tiempo para escribir código de producción. En cambio, juegue con código de muestra y prototipos. Intente comprender el problema, sin pensar en soluciones todavía. Una vez que tenga todo claro y escrito, discútalo con su equipo y su pareja, o incluso con el pato de goma en su escritorio. Si aún no puede articularlo, o ellos no pueden entenderlo, refine sus ideas. Una vez que haya aclarado todo eso, integre todo ese pensamiento y código de muestra en una solución real y funcional.

Ñame Marcovic
fuente
2
Votaría un millón de veces si pudiera, los profesionales aprenden a trabajar si están "en la zona" o no. Los profesionales pueden trabajar con personas que los interrumpen para hacer preguntas, con ruido a su alrededor, y junto con otras personas que realmente tienen conversaciones sobre cómo hacer cualquier tarea en la que estén trabajando juntos. No estoy interesado en trabajar con prima donnas que tienen que tener condiciones de trabajo especiales para concentrarse.
HLGEM
77
@HLGEM: no creo que tener acceso a un lugar tranquilo para trabajar cuando sea necesario sea demasiado pedir.
JeffO
2
@HLGEM: Por supuesto, se supone que un profesional tiene una productividad promedio en condiciones de trabajo promedio. Pero, por otro lado, sería de interés para el empleador dejar que el mismo profesional trabaje de manera muy focalizada, ya que esto puede aumentar enormemente la productividad y la calidad.
Giorgio
2
"Me parece que la gente trata" la zona "como si fuera una solución rápida mágica para resolver bien los problemas, como un sombrero de pensamiento": No, más trivialmente, la zona es un estado de concentración en el que eres más productivo porque estás enfocado en tu tarea sin distracciones. La zona no te hace todopoderoso, solo te hace más productivo.
Giorgio
2
@Yam Marcovic: Este no es el tipo de productividad que tenía en mente (producir más código de menor calidad): si uno usa el aislamiento como una excusa para hacer lo que quiere, no está siendo más productivo. Para mí, el flujo no significa perder el tiempo y luego escribir mucho código, sino más bien trabajar sistemáticamente en una tarea específica sin ser interrumpido por otras tareas no relacionadas.
Giorgio
5

La programación en pareja a veces requiere períodos de aislamiento de su pareja.

Ejemplo

Están trabajando juntos en una clase en particular, y se dan cuenta de que necesitan escribir un método que requiera una reflexión profunda sobre una lógica compleja, pero que, de lo contrario, arroje un resultado mundano. Trabajan juntos para crear pruebas unitarias para ese método y difieren la escritura de ese método a un período de tiempo en el que trabajen de forma aislada. Cuando se completa el método, vuelven a estar juntos y evalúan los resultados.

Robert Harvey
fuente
¿Por qué la implementación no debe hacerse en programación de pares?
try-catch-finally
5

Descubrí que hay una pequeña clase de problemas para los que funciona la programación de pares. Por ejemplo, si está trabajando en un producto multiplataforma y el tipo Winders ha implementado una función que requiere un código específico del sistema operativo, puede ayudar al tipo Mac a implementar la misma función en el código Mac mientras el tipo Mac conduce.

Sin embargo, en mi experiencia, la programación de pares resulta inusualmente en una pérdida neta de productividad. Muy a menudo parece que estamos pagando a dos desarrolladores para que hagan el trabajo de uno.

Sí, reduce la horrible posibilidad de que un desarrollador tome un descanso de intercambio de pila durante la jornada laboral.

En mi humilde opinión, sería más barato para aquellas compañías que quieren vigilar a sus desarrolladores simplemente emparejar a cada desarrollador con un guardia de seguridad privado para respaldar al desarrollador y golpear al desarrollador con una porra si alguna vez se ralentiza o trata de alcanzar un pico no esencial página web.

Jim en Texas
fuente
1
El punto de la programación de pares no se detiene entre sí; eso ni siquiera sería efectivo. El punto es tener una revisión de código en tiempo real.
Lev
3
@Lev: Tener una revisión de código antes de comprometerse es mucho más eficiente: la revisión lleva de unos minutos a media hora, en lugar de una jornada laboral completa.
Giorgio
@Giorgio No del todo. Por ejemplo, puede suceder que cometas un error, luego pierdas el tiempo para detectarlo y solo luego revises y confirmes tu código. Si hubiera programado el par, su compañero habría notado el error y habría ahorrado el tiempo de depuración.
Lev
1
@Lev: "Si hubiera programado un par, su pareja habría notado el error y ahorrado el tiempo de depuración". Por ejemplo, después de seis horas de programación de pares, uno puede estar tan cansado que fácilmente pasa por alto los errores.
Giorgio
Obviamente no hay garantía, pero puede ayudar.
Lev
3

Como desarrollador que intenta ingresar a la zona, intentará aislarse lo mejor que pueda para sentirse cómodo y despejar su mente. ¿Por qué la programación de pares debería ser diferente?

Usted y su pareja deben encontrar un entorno que induzca zonas que funcione para ambos. Esto posiblemente requerirá un compromiso en algunas cosas, pero mi punto principal es que el entorno de pareja debería ser similar al solo. Apaga el mundo externo. El par está programando juntos; otros pares (otros compañeros de trabajo en general) no deberían interrumpir (excepto los problemas críticos de dejar lo que estás haciendo).

sarumont
fuente
0

Flow es un excelente estado cuando conoce los pasos exactos para resolver un problema. es decir, pocas incógnitas desconocidas. Te sientas en un rincón tranquilo y discutes la solución. Sin embargo, la mayoría de los problemas / historias / características no son muy claras cuando comienzas a programarlas. Siempre habrá una "brecha" entre el estado final esperado y cómo su cerebro lo "planeó". Aprendes muchas cosas cuando realmente "lo haces". Tu cerebro hace malabares

  • Diseño de código

  • Mecanografía

  • Aprender cosas nuevas sobre el dominio y el código.

Cuando programo solo, lucho por equilibrar estas cosas. Tiendo a meterme en "agujeros de conejos" donde mi falacia de costo hundido me impide dar un paso atrás y mirar el panorama general y cambiar mi diseño. También es difícil para mí hablar con un pato de goma imaginario o uno real para el caso. Después de todo, estoy en "flujo".

Sin embargo, cuando emparejo productivamente la programación, obtengo períodos alternativos de escritura seguidos de períodos de pensamiento y reflexión. Aquí es donde se revelan muchas cosas ocultas y puede surgir un diseño diferente. Si voy a una madriguera de conejos, mi pareja puede sacarme de ella. Hablar / explicarle algo a un ser humano real tiene el maravilloso efecto de aclarar tus pensamientos de alguna manera. A veces, extraño estar en el "flujo", pero creo que contribuyo mucho más a mi equipo cuando emparejo el programa que cuando programo solo. Después de toda la programación! = Escribiendo. La programación ocurre en el cerebro y una mejor programación ocurre cuando dos cerebros colaboran y se critican entre sí.

uttamkini
fuente