07/12/2018 | Consejos tecnológicos,Desarrollo de software

¿Cómo eliges la próxima tarea a acometer?

¡Hola a todos!

En estos tiempos de agilidad, productividad y gestión inteligente del tiempo, me encuentro de manera recurrente con una cuestión sobre la que suele haber diferencias de criterio dentro de un equipo de trabajo: esta es la manera de decidir cuál es la siguiente tarea que un individuo debe realizar. Por ello, relacionado con anteriores entradas (concretamente «El método científico aplicado al desarrollo de software«), voy a exponer un método muy simple con el que una persona puede trabajar sucesivamente en diferentes tareas.

Este método se basa en los siguientes supuestos:

  • El individuo dispone de una lista de tareas («task pool») que puede consultar y modificar (añadir, eliminar tareas).
  • El individuo conoce o puede conocer la urgencia de cada una de las tareas. La definición de la urgencia de una tarea es un tema aparte que creo que en sí mismo tiene suficiente sustancia para otra entrada del blog. Por ello, sin llegar a profundizar en el tema, podemos modelar la urgencia como una propiedad de una tarea que sabemos que es dinámica en el tiempo, suele estar asociada a una fecha límite («deadline» definido) y/o deriva de la importancia de los resultados producidos por la tarea en cuestión (prioridad).
  • El individuo conoce o puede conocer la demora que tiene cada una de las tareas. Este aspecto se refiere al tiempo que lleva una tarea en la lista de tareas sin resolverse. También se podría pensar como el número de veces que el método se ha realizado sin que la tarea fuera resuelta.
  • El individuo puede estimar el tiempo necesario para completar cada una de las tareas.
  • El individuo es capaz de analizar las dependencias de las tareas, y descomponer las tareas en tareas más reducidas.
  • Se trata de un método iterativo, cuya esencia es que el individuo lo lleve a cabo una vez tras otra.
  • Cuantas más veces se itera en el método, el propio método se ejecuta con mayor fluidez.

El siguiente diagrama de flujo muestra (en inglés) el funcionamiento del método:

De manera similar a un planificador de tareas de un sistema operativo, siguiendo este algoritmo o método deberíamos ser capaces de determinar la siguiente tarea a realizar, y resolverla. Al tener en cuenta la urgencia, asociada a la prioridad de la tarea, los resultados deberían de ser satisfactorios, y al tener en cuenta la demora, se deberían evitar situaciones de inanición en la ejecución de procesos.

Una característica de este método, presente de manera deliberada, es que no tiene en cuenta conceptos como la «dificultad de la tarea», la apetencia por realizarla o la naturaleza de la misma (por ejemplo si se trata de una acción física o solamente cognitiva), sino que se centra en analizar la urgencia de la misma (en línea con la importancia que se da a la priorización de elementos en metodologías y marcos de trabajo ágiles), y estimar el tiempo que se requiere para resolverla.

Tomando el planteamiento aquí expuesto como punto de partida, estoy seguro de que podemos pensar en añadir mejoras a este método, como por ejemplo tener en cuenta la multi-tarea humana, casos especiales, imprevistos, etc.

Y a ti, ¿se te ocurre alguna mejora al método planteado? ¡Esperamos tu comentarios!

Compartir en:

Relacionados