El mundo consiste en objetos masivos y complejos que se pueden descomponer en sus partes componentes. Por ejemplo, nuestro globo se puede dividir en continentes que tienen componentes de países que tienen estados y provincias, y luego tienen ciudades, barrios, edificios. De manera similar, el autobús se puede dividir en partes, partes y partes.
En otras palabras, cada sistema complejo consta de pequeñas partes atómicas ensambladas.
En el mundo técnico, una pequeña pieza atómica es una «tarea». Las tareas son pequeñas piezas de trabajo realizadas por un individuo para finalmente ensamblar un sistema técnico complejo. Son los principales bloques de construcción de cualquier forma de progreso del producto de software. Por lo tanto, son extremadamente importantes para la ejecución correcta: trabaje en las tareas incorrectas o hágalas mal, y puede encontrar que está retrocediendo en términos de su producto.
Dada la importancia de establecer las tareas correctamente, es un poco sorprendente que la mayoría de los equipos que he visto no dedican más tiempo a crear y dar forma a las tareas correctamente. Como resultado, se gasta mucho tiempo y energía en tareas mal definidas, sin sentido o que apuntan en la dirección equivocada.
Aquí cómo crear tareas correctamente.
¿Qué es una tarea?
Comencemos definiendo lo que quiero decir con «tarea» en este artículo. Primero, la «tarea» tiene un significado específico en Scrum ágilque muchos desarrolladores utilizan para crear su software. Esta definición de tarea no es la que se utiliza en este artículo, aunque son muy similares. En Scrum, las tareas son pequeñas piezas de trabajo que se unen para formar una historia. Una persona está trabajando en la tarea, y la historia es la cooperación de las personas.
En cambio, uso «tarea» en un sentido más general: cualquier pequeña parte del trabajo específico que debe realizarse para progresar en el desarrollo de software. Esto puede ser corrección de errores, mejoras en la interfaz de usuario o parte de una gran serie de tareas necesarias para ejecutar algunas de las funciones. Puede hacerlo una sola persona o en equipo, y no tiene que ser un componente básico para una historia más grande.
La tarea suele llevar desde un par de minutos hasta la mayor parte de la hora. Algo más que eso es demasiado complicado para lo que estoy hablando aquí, aunque a menudo estas partes más grandes del trabajo se pueden dividir en tareas de componentes.
escribiendo una tarea
Ahora que estamos en la misma página, veamos algunas maneras de escribir buenas asignaciones.
Descriptividad
El aspecto más importante de la tarea es su naturaleza descriptiva: la medida en que explica el trabajo principal a realizar. En la mayoría de los casos, la descripción de la tarea es una oración simple que explica brevemente lo que se espera. Por ejemplo, «Procedimiento para reemplazar el botón A y el botón B». Desafortunadamente, esto a menudo no cumple con los requisitos del ingeniero o diseñador en el otro extremo de la tarea para tomar las decisiones correctas. Los botones A y B pueden aparecer en diferentes lugares del software y no es necesario cambiarlos en todos los contextos.
La tarea debe ser lo suficientemente descriptiva para que la persona que la realiza no adivine lo que debe hacer. Sin una descripción adecuada, el ejecutante tendrá que pasar un tiempo precioso buscando explicaciones o, peor aún, haciendo suposiciones (erróneas) sobre lo que realmente implica la tarea.
Según mi experiencia, la mayoría de las tareas deberían ser más descriptivas de lo que son. Una oración parcial de una descripción en realidad debe constar de dos o tres oraciones. Debe haber datos de respaldo (como ID de características) y capturas de pantalla. La descripción debe incluir una parte del «por qué» de la tarea, no solo un «qué». Por ejemplo, la tarea del botón anterior se describe mejor como «El procedimiento para reemplazar el botón A y el botón B en la pantalla X. Los usuarios informaron que el botón B es la acción principal».
El problema de la descripción insuficiente es doblemente cierto cuando se trata de tareas de depuración. Muchos errores son el producto de un conjunto muy específico de acciones de contexto del sistema. Es importante documentar cuidadosamente estas acciones y el contexto en la descripción de la tarea. De lo contrario, cuando el ingeniero comience a resolver el problema, no podrá crear el error original y girar las ruedas sin ningún progreso.
receptividad
Un nivel más alto que la descripción de la tarea es qué tan obligatoria es o cómo la tarea determina el camino hacia la solución. En contraste con lo descriptivo, muchas tareas en la práctica son demasiado directivas: hacer suposiciones sobre la forma «correcta» de resolver el problema, cuando en realidad debería dejarse a la discreción del ejecutante.
Uno de los lugares donde esto es más común es la tarea UX. Un periodista de tareas (a menudo propietario de un producto) puede determinar correctamente que las funciones de UX son subóptimas, pero luego ir demasiado lejos al describir la solución específica para esta mala UX en la descripción de la tarea. El problema es que el registrador de tareas no está en la mejor posición para tomar esta decisión. bastante el diseñador de UX debe tener independencia sobre cómo quiere crear soluciones.
Otro error común es cuando el registrador ofrece una solución de arquitectura específica (por ejemplo, «Agregar atributo de base de datos para X»). Nuevamente, el registrador simplemente no está en la mejor posición para hacer esta llamada. En cambio, el ingeniero de implementación debe tener la flexibilidad para comprender la mejor manera de resolver el problema subyacente.
Por otro lado, delegar más autonomía a un desarrollador puede tener costos de eficiencia. El gerente de una revista puede pensar que la forma más efectiva de resolver un problema es seguir adelante y encontrar una solución, porque ya lo está pensando y puede tener una perspectiva sólida. Esta tensión es real, pero el gerente reflexivo generalmente admite que darle más autonomía al implementador es un pequeño golpe a la eficiencia.
Cooperación en la tarea
Por supuesto, escribir una tarea no surge de la nada. Prácticamente toda la creación y gestión de tareas podría mejorarse mediante una mayor colaboración en tiempo real entre las partes interesadas.
¿El gerente de producto registra una solicitud de una nueva característica? Organice una reunión para explicar el contexto de la solicitud a los diseñadores e ingenieros relevantes. ¿El probador de control de calidad registra un error? Pase esto al ingeniero que crea que es más probable que complete la tarea y vea si puede proporcionar contexto adicional para ayudarlo a resolverlo eventualmente.
De hecho, se podrían evitar muchos malentendidos al transferir la mayor parte de la responsabilidad de escribir la tarea a la persona que eventualmente la completará. En la práctica, esto significa que el gerente de producto o probador de control de calidad mencionado anteriormente debe comunicarse con el ingeniero o diseñador antes de escribir la tarea, explique qué hacer y luego dejar el implementador escribe una tarea para sí mismo con una descripción auxiliar y un contexto.
Combinado con buenas prácticas en la redacción de tareas, la colaboración puede ser lo mejor, asegurando que las tareas tengan toda la información que necesitan, así como asegurando el nivel adecuado de autonomía en la ejecución.