Bienvenido, soy Luis y hoy les traigo un post.
Escribir código de calidad es un arte, un arte que requiere períodos de paciencia y concentración. Cuando se trabaja en un código complejo, un desarrollador tiene que tener muchas cosas en la cabeza, desde los requisitos hasta el estado de bajo nivel, y para llegar a ese estado productivo se necesita tiempo.
Desafortunadamente para la mayoría, perder ese enfoque no requiere mucho. Tener que responder un mensaje rápido de Slack, aunque puede llevar solo unos segundos, puede ser un cambio de contexto suficiente para afectar la eficiencia.
La comunicación es vital entre todos en un equipo, pero la forma en que la mayoría de las organizaciones la manejan no funciona bien para los desarrolladores. La solución es la comunicación asincrónica.
Índice
¿Qué es la comunicación asincrónica?
La mayor parte de la comunicación en línea en una organización se realiza de forma sincrónica, lo que refleja cómo hacemos la comunicación en persona, como las reuniones. La comunicación sincrónica es cuando espera una respuesta a su comunicación de inmediato.
Alternativamente, La comunicación asincrónica espera obtener una respuesta en algún momento en el futuro.. Por ejemplo, envía un correo electrónico; Abro y respondo al correo electrónico varias horas después.
Para cualquier desarrollador, estos conceptos sonarán muy familiares, ya que se utilizan como una forma de describir cómo se manejan ciertas acciones en el código.
Antes de ver cómo podemos avanzar hacia la comunicación asíncrona, debemos comprender por qué la comunicación sincrónica tiene sus desventajas.
Si bien la comunicación sincrónica tiene muchos beneficios y es algo que hacemos todos los días, no es la mejor forma de comunicación para todo.
Trabajar en un equipo grande, con muchas personas y muchos de ellos moviéndose, se vuelve difícil escalar la comunicación, especialmente para las personas clave que tienen que estar en comunicación con muchos grupos diferentes.
La llegada de herramientas modernas, como las aplicaciones de correo electrónico y chat, lo hace más fácil, pero aún existe un límite en la cantidad de chats en tiempo real que una persona puede administrar de manera efectiva.
Junto con la tarea de codificación, una gran cantidad de comunicaciones sincronizadas puede causar una serie de efectos negativos:
- Tiempo de desarrollo reducido: Como mencioné en la introducción, el cambio de contexto necesario para responder a los mensajes reduce aún más la ya limitada cantidad de tiempo que los desarrolladores tienen para concentrarse en sus tareas.
- Código de baja calidad: El enfoque interrumpido cuando se trabaja en código complejo, combinado con menos tiempo de desarrollo, puede llevar a la introducción de errores y vulnerabilidades.
- Mayor estrés: Los desarrolladores pueden preocuparse de que los gerentes piensen que no están trabajando o se pierden discusiones importantes si no reaccionan rápidamente a los mensajes. El estrés realmente puede afectar la concentración y el enfoque.
- Las discusiones apresuradas dan como resultado malas soluciones: Cuando restringe las discusiones sobre un tema a reuniones / conversaciones de chat en tiempo real relativamente breves, reduce la cantidad de tiempo para que las personas hagan contribuciones bien consideradas y bien investigadas.
Una notificación por correo electrónico puede distraer tanto como si alguien se acerca a ti e inicia una conversación.
¿Cómo puede ayudar async?
Avanzar hacia un proceso más asincrónico puede tener grandes beneficios, tanto para un proyecto como para los desarrolladores.
Mejor experiencia de desarrollador
Los desarrolladores tienen tiempo para hacer lo que mejor saben… escribir código. Se salvan de algunos de los malabarismos de entregar su trabajo y estar en comunicación constante.
Se les da el espacio para abordar su trabajo de la manera que sientan que funciona mejor para ellos. Esto no solo los hace más productivos, sino que también hace que su trabajo diario sea más agradable.
Planificación mejorada
Async no solo ayuda a mejorar el resultado de los desarrolladores, sino que también puede mejorar su planificación.
A diferencia de la comunicación sincronizada, cuando se trabaja de forma asincrónica, no puede depender de los chats apresurados de última hora para tomar decisiones o hacer preguntas. Esto lo obliga a planificar con anticipación y hacer las preguntas correctas con suficiente anticipación para permitir que las personas respondan.
Ejemplo: Es el primer día de un sprint y estás planificando el sprint, pero a algunas de tus historias les falta información. Si está trabajando sincrónicamente, puede pedirles a las personas relevantes que se unan para obtener la información necesaria … En async no puede pedirles que se unan; tienes que planificar con anticipación. Esas preguntas deberían haberse formulado de antemano para que la información ya estuviera disponible cuando se necesitaba.
El ejemplo anterior no solo reduce las personas necesarias para la sesión de planificación y reduce el riesgo si no están disponibles, sino que también reduce el tiempo necesario para la sesión. Esto deja más tiempo para que el equipo trabaje en las historias.
Reduce los puntos de falla
No importa cuánto lo intente, es muy probable que haya una serie de personas clave que sean necesarias para responder ciertas preguntas o tomar ciertas decisiones. En una organización más grande, estas personas pueden ser necesarias en muchas reuniones diferentes, por lo que si necesita tenerlas en su reunión de sincronización, tendrá que encontrar un momento que les funcione.
Con un proceso asincrónico, personas así no se convierten en cuellos de botella para los demás. La mayoría de las preguntas para las que son necesarios se les puede hacer en una pregunta más larga y bien pensada, y luego pueden tomarse su tiempo para responder.
Mejores discusiones
A diferencia de las respuestas apresuradas o las respuestas de ‘Necesitaría verificar eso’ que provienen de reuniones en tiempo real, async permite a los participantes en una discusión pensar adecuadamente en sus respuestas. Permite tiempo para hacer una investigación más profunda y considerar adecuadamente todos los elementos de la discusión.
Equilibrio entre los dos
Async es excelente y efectivo, pero en realidad necesitas una combinación de ambos para una comunicación óptima. Los siguientes son momentos en los que probablemente debería seguir con la comunicación sincronizada la mayor parte del tiempo:
- Debates de ida y vuelta: Algunas discusiones requieren un poco más de comunicación en tiempo real para argumentar efectivamente su punto o explicar ciertos temas. A veces, las discusiones que involucran muchas preguntas se pueden hacer mejor en tiempo real. Este tipo de discusión idealmente se haría como un precursor de algo más formal.
- Entrevistas de etapa final: Determinar si un empleado potencial es adecuado para un equipo es algo que no se puede hacer fácilmente sin una charla informal de persona a persona.
- Discusiones creativas: Los conceptos creativos y exploratorios pueden ser difíciles de comunicar a través del texto.
- Temas sensibles: Ciertas discusiones necesitan un lado más personal. Recibir elogios o información sobre una promoción tiene mucho más impacto cuando se hace de manera personal. (A tener en cuenta: al margen: algunas discusiones delicadas pueden incomodar a las personas y pueden preferir que no sean en persona o por teléfono. Considere a la persona individual cuando sea posible).
- Construcción de equipos: Los equipos funcionan mejor cuando se llevan bien y disfrutan trabajando juntos. Los hackerthons, las comidas fuera de casa y otros eventos no laborales pueden ser excelentes para ayudar a los equipos a colaborar mejor y para la salud mental.
También es necesario que haya alguna estructura en torno al tiempo para responder a una consulta, ya que no es práctico esperar una eternidad. Una buena idea sería esperar que 48 horas sea el tiempo máximo esperado para una respuesta. Esto, junto con un sistema para determinar la prioridad, funcionaría bien.
Cómo implementar async
Ir asincrónico puede parecer un cambio abrumador, especialmente para organizaciones muy tradicionales. Afortunadamente, se puede adoptar gradualmente con bastante facilidad.
Lo esencial
Empiece por ser consciente de la cantidad de comunicación en tiempo real que está utilizando para hacer preguntas o tener discusiones. Cada vez que esté a punto de usar uno de estos, tómese un minuto para pensar si hay alguna manera de hacer esto asíncrono. Un par de ejemplos de esto son:
- Si está a punto de enviar un mensaje para iniciar una conversación sobre el estado de algunas historias, escriba un mensaje con todas las preguntas que desea que se respondan.
- Si está a punto de programar una reunión y sabe que necesita algunas personas solo para responder un par de preguntas, agregue esas preguntas en las notas de la reunión para que esas personas puedan agregar sus respuestas y luego ya no sean necesarias para la reunión real.
Hágale saber a su equipo que sus preguntas regulares no necesitan una respuesta inmediata, pero busque una manera de señalar que una consulta es urgente. Slack y otras herramientas similares brindan una forma de silenciar las notificaciones, pero aún las muestran si el remitente las marca como urgentes.
Adopción adicional
Para adoptar por completo la asincronía, deberá definir un proceso estructurado para las formas de trabajar y comunicarse que pueda ser fácilmente referenciado por cualquier persona que no esté segura de si debe usar la comunicación sincronizada o asíncrona. A medida que se utiliza, obtenga comentarios constantes y observe qué áreas funcionan bien y cuáles necesitan mejoras adicionales.
Utilice herramientas como problemas, rastreadores, sistemas de chat y correo electrónico que tienen muchas funciones excelentes para permitir la comunicación asíncrona. Defina el papel que juega cada uno en la documentación de su proceso y trate de ceñirse a él lo más cerca posible, señalando cualquier necesidad de divergencia como un punto de fricción que necesita mejorar.
Específico para desarrolladores
Anime a los desarrolladores a reservar tiempo para concentrarse en el desarrollo o tener una hora determinada del día / sprint en la que programe la mayoría de las reuniones que requieren la participación de los desarrolladores.
Si trabaja en equipo, use a sus desarrolladores principales / principales para que sean el representante de su equipo, quien luego puede pasar la información al resto del equipo.
Trabajo remoto
Cuando se combina con el trabajo remoto, async desbloquea beneficios aún más sorprendentes. Esta no es una lista completa …
- Permite a los desarrolladores trabajar en el momento en que se sientan más productivos. Ya no tendrás que esforzarte por encajar en 9 o 5 días laborales.
- Permite una mayor distribución. Puede contratar personas de lugares que normalmente tendrían demasiada diferencia horaria.
- Permite a los desarrolladores adaptar fácilmente el trabajo a su vida personal.
Conclusión
Puede ser difícil cambiar las ideas tradicionales de las personas sobre las formas de trabajar y sus procesos, pero la comunicación asincrónica puede ser una excelente manera de mejorar la productividad, especialmente cuando se trabaja con desarrolladores.
Gracias por leer este artículo.
Añadir comentario