El trabajo asincrónico es una forma de organizar un proceso cuando las tareas se realizan en una tubería. Esto le permite controlar completamente el proceso y ajustarlo usted mismo. Al mismo tiempo, la presión y el estrés se reducen a cero, y las tareas se realizan de manera rápida y hábil.
Un transportador
suave y rápido proporciona exactamente la cantidad correcta de producción, todas sus etapas están equilibradas en términos de eficiencia y velocidad. Evita perder tiempo o recursos, siguiendo la
metodología 3M del sistema de producción Toyota.
La operación asincrónica se basa en tres principios básicos:
multiplexación ,
comunicación y
acción .
Multiplexación
La gente vive en un mundo sincrónico. El reloj está marcando exactamente un segundo. Pero la forma de organizar las tareas tiene un efecto loco en el resultado. Se trata de planificar.
Programación sincrónica
La planificación típica (síncrona) implica el inicio masivo simultáneo de tareas. Esto en sí mismo no da miedo, pero la velocidad general está limitada por la velocidad del elemento más lento. Cualquier retraso se extiende a lo largo de la tubería, ya que cada etapa depende completamente de la anterior.
Ejemplo 1Aquí vemos un flujo de desarrollo de software con tres terminales y programación síncrona. Para completar el desarrollo, debe completar las tareas A, B y C. Dado el método de planificación y la cola, se requiere un ciclo de nueve horas para completar el trabajo. El sistema es muy adecuado para tareas atómicas, pero es muy lento en otros proyectos, ya que implica implementaciones muy raras.
Programación asincrónica
La planificación asincrónica implica dividir las tareas en un número máximo de tareas más pequeñas con el lanzamiento más frecuente de "cambios mínimamente viables" (MVC). El método se basa en la hipótesis de que una liberación más frecuente de cambios mínimos ayudará a medir mejor el éxito y responder a los comentarios negativos lo más rápido posible. También le permite controlar mejor la distribución de recursos, porque al mismo tiempo realizamos más tareas (tamaño reducido).
Ejemplo 2Al dividir las tareas A, B y C (A1, A2, A3, B1, etc.), triplicamos la frecuencia de los despliegues. Después de nueve horas, podemos
tener tantas funciones preparadas, pero la multiplexación con distribución asincrónica le permite verificar el resultado y retroceder o cambiar los siguientes pasos. Redujimos el tiempo de iteración a
un tercio del original.
Esta técnica nos permite multiplexar tareas, combinándolas para obtener resultados más rápido.
Comunicación
La buena comunicación es la clave del éxito de cualquier sistema (persona o máquina).
Hay muchos tipos de comunicación: correo electrónico, mensajería instantánea, llamada de voz, videollamada o incluso "vamos a tomar un café". Cada uno de ellos tiene un efecto completamente diferente en el rendimiento, y elegir el correcto es tan importante para la tubería como elegir una tarea.
Comunicación sincrónica
Somos, por naturaleza, más propensos a la comunicación sincrónica, es más simple y más cómodo.
Un mínimo de dos generalmente participan en una conversación. Ocurre en diferentes formatos:
- Reunión
- Video / Llamada de voz
- Coffee break
- Conversación en la cena
- Enviar un mensaje esperando una respuesta inmediata
Todo esto es excelente si el tema es imposible o difícil de discutir en un formato asíncrono. Por ejemplo, una revisión de desempeño, discusión de una estrategia, una entrevista, una conversación uno a uno.
La mayoría de las reuniones se pueden reemplazar con la documentación correcta, correos electrónicos o mensajes bien escritos.
En general, las reuniones son la herramienta más cara de la empresa, úsela correctamente.
En el tercer ejemplo, dos desarrolladores están trabajando en sus propias tareas y deben completar las tareas A, B y C antes de la implementación:
Ejemplo 3Situación bastante típica. Ambos desarrolladores se distrajeron durante algún tiempo por una discusión sobre las especificaciones técnicas y pronto una reunión sobre lo que deberían hacer a continuación.
Claramente, esta no es la mejor opción para usar comunicaciones sincrónicas. Vemos que las interrupciones retrasaron todo el trabajo y el despliegue no tuvo lugar.
El rendimiento de un transportador de este tipo claramente no es uniforme, y no se puede llamar alto.
Comunicación asincrónica
La comunicación asincrónica da independencia. Ella está tratando de asegurarse de que la tarea y sus consecuencias no dependan de quién la planeó o completó.
La comunicación asincrónica proporciona algunas mejores prácticas comúnmente reconocidas, como:
- Buena documentación
- Instrucciones escritas
- Mensajería en lugar de llamadas
- Respeto al trabajo sin distracciones.
Ejemplo 4 con los mismos dos desarrolladores y tareas, pero comunicación asincrónica.
Ejemplo 4En este ejemplo, la comunicación se realiza a través de mensajes y documentación bien escrita. Incluso si la mensajería se extiende con el tiempo, el impacto en el flujo de trabajo es insignificante y, a menudo, ofrece un mejor rendimiento.
Pero por que?
Las personas no pasan muy bien de un estado de concentración total en la tarea A a concentración total en la tarea B (como se muestra en la siguiente figura). Por ejemplo, cuando estás profundamente inmerso en un libro y te distrae, te llevará un tiempo volver al texto.
En el ejemplo 5, vemos un diagrama en el que el
tiempo y el
rendimiento del desarrollador de back-end, que se distrae dos veces, se trazan a lo largo de los ejes: primero, el desarrollador frontend pregunta sobre la carga útil de la solicitud de API, y luego el recién llegado al equipo solicita ayuda para configurar la base de datos del proyecto localmente.
Ejemplo 5El desarrollador del backend pasó un tiempo concentrándose en la tarea actual (1), luego entró en un estado de concentración (2), donde su cerebro súper creativo y poderoso funciona de manera más eficiente. Luego se distrae y pasa un tiempo comunicándose con el desarrollador front-end (3), luego vuelve a la tarea (1) nuevamente. Desafortunadamente, cuando el desarrollador volvió a enfocarse (2), nuevamente se distrajo (3).
Si lees a este lugar, estoy seguro de que todo esto te es muy familiar.
La clave es el concepto de
flujo (2).
Definición de Wikipedia :
En psicología positiva, el estado de flujo es un estado mental en el que una persona que realiza una actividad está completamente inmersa en un sentimiento de concentración energética, plena participación y disfrute del proceso de la actividad. En esencia, el flujo se caracteriza por una absorción completa de atención y la pérdida resultante de una sensación de espacio y tiempo.
Si es difícil concentrarse solo, entrar en el flujo es aún más difícil. Cuanto mejor se concentre, mayor será la probabilidad de ingresar a la corriente, pero si tiene problemas para mantener la concentración, olvídese de la corriente.
La comunicación asincrónica es extremadamente importante aquí, ya que protege el tiempo y la concentración de cada empleado, reduciendo las distracciones sin sentido. Cuando te comunicas de forma asíncrona, este tipo de interrupciones son mucho menos comunes. Aumenta el tiempo de trabajo profundo y la probabilidad de llegar a una corriente.
Acción
Este es el último factor para cambiar al modo asíncrono. El punto no está en los procedimientos, sino en relación con uno mismo como profesional y sus objetivos profesionales.
A menudo se encuentra que la tarea no está preparada, los procesos no están planificados, las personas responsables no se ponen en contacto, etc. En tales circunstancias, los equipos exitosos hacen el trabajo, incluso si luego tienen que rehacerlo y adaptarlo, pero no pasan tiempo "esperando".
"Actuar siempre por defecto" es un mantra que seguimos repitiendo en Remote. Esto significa que si necesita hacer algo y nadie puede ayudarlo o indicarle qué hacer a continuación, use el sentido común y tome su propia decisión.
Imagine que hay tres tareas, de las cuales solo dos están bien descritas, por lo que debe esperar a que el gerente de producto determine con precisión los requisitos.
Ejemplo 6En este ejemplo, el primer desarrollador se predetermina a la acción y el segundo a la espera. El primero tomó otra tarea, aunque no tan importante. El segundo está esperando que el gerente ayude a describir los requisitos para dicha tarea.
Este es un ejemplo condicional, y me gustaría decir que es exagerado, pero no. Una situación muy común.
Si realmente necesita ayuda con la siguiente tarea y no puede encontrar nada más, bueno, es mejor usar este tiempo para el bien personal, por ejemplo, ir al gimnasio, pasear con el perro o ver un episodio de su serie favorita (sí, incluso durante el día laboral )
Por supuesto, algunas tareas son muy sutiles y, si no está seguro, puede elegir otra cosa. No se trata de ignorar el riesgo, sino de asumir la responsabilidad de manera controlada.
Resumen
El trabajo asincrónico es una forma de organizar el trabajo con menos interrupciones y mayor eficiencia, basado en varias ideas:
- La operación asincrónica debe usarse con más frecuencia que la operación sincrónica, proporciona una mejor gestión de recursos, reduce la pérdida de tiempo y, por lo tanto, optimiza el rendimiento.
- Las tareas de multiplexación de tamaño reducido le permiten completar tareas más rápido, probar hipótesis más rápido y lograr el éxito con mayor confianza.
- En la mayoría de los casos, la comunicación debe ser asíncrona, excepto en los casos que explícitamente requieren sincronización. Esto permite a las personas concentrarse en sus tareas por más tiempo y aplicar las mejores prácticas, como la documentación y la redacción de los procedimientos adecuados.
- Actuar siempre de manera predeterminada (dentro de lo razonable) ayuda a todo el equipo a moverse más rápido, reducir la pérdida de tiempo y aumentar la participación de cada empleado en una causa común.