Traducción de https://shiftmag.dev/fighting-distractions-as-a-software-developer-3175/

👉 Recomendado en la newsletter con 🧨 dinamita para developers: Web Reactiva.

Luchando contra las distracciones como desarrollador de software

Dalibor Schön

Este artículo es una distracción. ¡Deberías volver a tu trabajo! ¿O no?

  1. Distractions
    En ingeniería de software, generalmente llamamos a los asesinos de la productividad distracciones. Yo las enfrento, tú las enfrentas, todos las enfrentan. Nuestro principal hábito de trabajo es centrarnos en un problema que estamos resolviendo y convertirlo en código. Mantener el enfoque es crucial, y alejar las distracciones es bienvenido. Pero, ¿reconocerías todos los tipos de distracciones que podrían venir hacia ti? Vamos a desglosarlas un poco.

1.1 Distracciones obvias

  • Llamadas personales / DM / conversaciones en persona
  • Llamadas grupales / llamadas ad hoc / reuniones rápidas

Los teléfonos y el software de mensajería están diseñados para avisarte que alguien te está llamando, y por eso los usamos. Puedes apagarlos o silenciarlos, pero puede haber un compromiso de responder a llamadas urgentes. Este es un tipo de distracción a la que acordamos responder. Los teléfonos y software modernos te permiten organizar tus contactos en grupos prioritarios, marcar horas de no molestia para esos grupos o facilitar las llamadas entrantes a varios niveles de señalización.

  • Suena: llama tu mamá — ¡ni se te ocurra no contestar!
  • Vibra: llama tu jefe — “disfruta” la vibración
  • Redirigir a buzón de voz, SMS automático, etc.: llamadas de amigos, compañeros de cerveza

El lugar de trabajo es una fuente obvia de distracciones en persona. Trabajamos en grupos y equipos, y la cooperación es bienvenida. Pero puedes señalar a tus compañeros que estás en modo DND. Los auriculares grandes son una señal de que estás cancelando el entorno y enfocándote en algo. Y sí, usa juguetes tecnológicos: los auriculares con cancelación de ruido son tan efectivos que para llamar tu atención, la persona necesita entrar en tu campo visual. O dispararte con una pistola Nerf en la espalda.

En cuanto a Slack y MS Teams, hay una regla simple: Fuera de vista = fuera de la mente. No hay notificaciones audibles, solo visuales. Así que minimiza ese maldito enjambre de distracciones durante las horas productivas.

1.1.1 #siemprehayalgo*

Durante mi larga y próspera vida como desarrollador de software, descubrí que en entornos basados en equipos, la carga de trabajo diaria se puede dividir en tres partes principales:

  • Codificación — tu trabajo planificado en tareas
  • Trabajo en equipo — revisiones de código, sesiones de lluvia de ideas, ayudarse mutuamente, reuniones, ceremonias ágiles, personal de la empresa y la oficina
  • siemprehayalgo — también es codificación (u otra ingeniería) — tareas ad hoc, errores de producción, apagar incendios, tareas de “¿podemos ayudar con…?”, etc.

La idea de que los desarrolladores están codificando durante todo el día laboral es un pensamiento ilusorio. Aproximadamente un tercio del tiempo se dedica a actividades no relacionadas con la codificación. La principal diferencia es la mentalidad de la empresa.

  • Mentalidad de startup — #siemprehayalgo se considera un deber laboral regular. Conoces la frase “equipo joven, ágil y dinámico.”
  • Mentalidad corporativa — #siemprehayalgo se considera una anomalía: tienes equipos de mantenimiento dedicados que filtran esas tareas de los equipos de desarrollo. Los equipos de mantenimiento piden cooperación solo cuando es necesario y principalmente en forma de tareas planificadas.

¿Por qué comparo esto? Porque las tareas #siemprehayalgo pueden ser reconocidas como distracciones por algunos equipos o desarrolladores individuales. Es maestría del PO/PM identificar cuándo y a quién abordar con esas tareas para minimizar las distracciones. Lanzarlas al canal del equipo en cualquier momento con las palabras “¿Podemos ayudar con eso…?” es una mala idea y una distracción. Acuerda con el equipo cuándo y cómo es el lugar adecuado para anunciar tareas #siemprehayalgo. Mi consejo: solo en reuniones diarias.

  • es una palabra de moda y meme en Eslovaquia — #furtDačo — literalmente “siempre algo” — taza y origen en el programa de televisión. Cita completa: ¡Siempre algo! Siempre algo. Siempre. ¡Y sería un trabajo tan bueno si no siempre hubiera algo que hacer! Siempre, siempre, siempre.

1.2 Área gris
También hay un área gris de distracciones. Para algunas personas en organizaciones, es su trabajo empujarlas, pero para muchos desarrolladores, puede ser visto como una distracción o una pérdida de tiempo.

  • Reuniones — los gerentes te persuadirán de que son beneficiosas, y los desarrolladores las verán como una pérdida de tiempo. Negocia si tu presencia es necesaria.
  • Ceremonias ágiles — algunas de ellas pueden ser vistas como distracciones, las más odiadas son las retrospectivas periódicas — acuerda cuándo las necesitamos.
  • Basura corporativa — correos electrónicos, encuestas, reconocimientos, hojas de tiempo, etc.
  • Impedimentos internos — cortes de energía/red/servidores.
  • Actualizaciones de computadora/software — ¡las palabras no pueden explicar cuánto odio este banner!

Afortunadamente, casi todas esas distracciones pueden ser dominadas planificándolas en horas no productivas, pospuestas o incluso evitadas. En cuanto a los correos electrónicos, usa filtros y redirige a carpetas.

1.3 Distracciones no obvias
1.3.1 Buscar información en línea o en documentos internos

Recopilar información durante la codificación o buscar algo en la documentación te distrae de codificar. Es una pendiente resbaladiza que fácilmente puede alejarte por una cantidad significativa de tiempo, y puedes perder el enfoque o el flujo de codificación. Intenta identificar esas antes de codificar. Recopila tanta información y documentos como puedas de antemano y márcalos.

1.3.2 No usar herramientas efectivas o que ahorren tiempo

Hacer tipeo repetitivo y aburrido en lugar de usar atajos de teclado y herramientas de formateo de código puede agotarte y perturbar tu tren de pensamiento y codificación. Sí, tienes que aprenderlos y acostumbrarte a usarlos, pero esos impulsores de productividad son las mejores herramientas para luchar contra distracciones inesperadas. Lo mismo aplica a técnicas que no usas tan a menudo — un ejemplo típico es regex. Usa herramientas especializadas de regex y generadores; la IA también es útil aquí.

1.3.3 Esperar algún proceso de desarrollo

  • Provisionar dependencias lleva tiempo — puedes ser tentado a alejarte.
  • Construir el proyecto lleva tiempo — puedes ser tentado a alejarte.
  • Desplegar proyectos lleva mucho tiempo — definitivamente serás tentado a alejarte.

Algunos de los anteriores pueden afectarte durante la codificación, especialmente cuando necesitas probar alguna versión temprana del código. Pero esos son predecibles. Planifica esas acciones con anticipación, idealmente al final de tu ciclo de trabajo o antes de tomar un descanso. Un descanso también te ayudará a pensar y entender qué salió mal cuando algunos pasos fallaron.

  1. Medidas Correctivas
    2.1 Acostúmbrate a priorizar
    Nunca tendrás un entorno libre de distracciones. Siempre llegan nuevas tareas. Aprende a priorizarlas. Un excelente gráfico (tomado de aquí) divide las tareas que puedes considerar distracciones (pero a los ojos de un gerente o compañero de trabajo pueden ser vistas como una cuestión de vida o muerte). Podemos dividirlas desde dos perspectivas:
  • Urgente/no urgente
  • Importante/no importante

Mis dos centavos para este gráfico: he añadido una quinta acción en amarillo. A veces, hacer nada es válido (“déjalos pudrirse”, como decimos). Te sorprenderá cuántos “problemas” resultan no ser problemas en absoluto y se resuelven “automágicamente.” Si el problema persiste, te volverán a llamar.

Priorizar tareas distractoras es una habilidad social. Recuerda que no eres la única persona en la empresa que puede resolverlas. Negocia, y aprende a decir no si no te sientes seguro con las distracciones entrantes durante tu trabajo actual. Por otro lado, no seas arrogante; trata de entender por qué otros consideran la tarea urgente. Y, sorpresa: una tarea que consideraste una distracción a primera vista puede resultar un agradable paseo que te da un descanso de tu tarea actual.

2.2 Rutina diaria
La mejor manera de manejar las distracciones es tener una rutina diaria (de trabajo).

2.2.1 Encuentra tus horas más productivas
Identifica las horas en las que tu cerebro funciona mejor y correlaciónalas con las rutinas y deberes del equipo. Mis horas más productivas son de 10 am a 1 pm y de 3 a 6 pm. Configura tu entorno para minimizar posibles distracciones: auriculares, modo silencioso de notificaciones, modo ausente/DND en Slack, etc.

2.2.2 Planea tu procrastinación
En lugar de ser tentado por alguna distracción al azar, ¡planealas! Los ingenieros de software son estudiantes eternos; aprenden todos los días. Consume los tweets y blogs, lee las noticias y canales de Slack durante tus horas no productivas. Lo hago cuando llego al trabajo y generalmente termino cuando comienza la reunión diaria. Luego, la siguiente fase es relajarse un poco después del almuerzo y revisarlos de nuevo. No vives solo

para trabajar: es una herramienta de equilibrio de vida, pero úsala sabiamente.

2.3 Recomendaciones adicionales
2.3.1 Toma un descanso
Programar puede ser agotador, principalmente porque los desarrolladores de software a menudo enfrentan largas horas sentados frente a sus computadoras y codificando. Puede ser poco saludable. Necesitamos tomar pausas regulares entre tareas. Tomo un pequeño descanso de 1–2 minutos cada 30 minutos y un descanso más largo de 5–7 minutos cada hora. Un descanso significa levantarse y caminar un poco. Al baño, merienda, café, revisar el teléfono, etc. Un descanso más largo es bienvenido al aire libre si es posible. Puedes usar la popular “técnica Pomodoro” de trabajar durante 25 minutos y tomar descansos de 5 minutos.

2.3.2 Día de no hacer nada
A veces, sabes que no harás nada creativo ese día. Acepta esos días y úsalos para hacer tareas simples y rutinarias: limpiar los archivos del escritorio, reorganizar carpetas de trabajo, actualizar software, limpiar tu hardware, actualizar documentación, añadir pruebas unitarias, etc. Nadie necesita saberlo.

2.3.3 Día(s) de flujo
A veces, sabes que 24 horas serán demasiado cortas ese día, y te sientes capaz de codificar mucho más de 8 horas. Lo llamamos flujo de codificación. Generalmente sucede al comienzo de una nueva parte creativa del proyecto cuando estás lleno de ideas y quieres convertirlas en código. Nuevamente, aprovecha esa oportunidad, rompe todas las reglas y rutinas: codifica durante la noche, los fines de semana, y siente el flujo. Ahora eres un artista.

2.3.4 Buenos hábitos al codificar

  • Codifica primero las partes más emocionantes o desafiantes.
  • Simplifica las piezas aburridas como MVP o funciones simuladas, márcalas como TODO y vuelve a ellas más tarde.

// @TODO - hay 3 lugares donde encontrarlo y 2 posibles alternativas...
function generateConversationTopic(/conversationId: string/): string {
return 'Talking with ???';
}

  • Roba y/o refactoriza código similar; no reinventes la rueda.
  • Escribir funciones de propósito único y menos complejas es más rápido y genera menos fatiga. Tres funciones de propósito único son mejores que una universal, incluso si ocupan más líneas de código.

Este artículo es una entrada de blog subjetiva sobre la identificación y lucha contra las distracciones. No todo funcionará para ti, y obviamente hay mucho más que decir, así que siéntete libre de añadir más trucos e ideas en los comentarios.

Edit
Pub: 06 Jul 2024 11:42 UTC
Views: 93