Cuando uno inicia una tarea, siempre nos salen más tareas en el camino, la cual nos desvía desde el fin de haber iniciado una determinada acción dentro del flujo de nuestro trabajo. Esto es común y siempre es frustrante no saber por donde comenzar cuando tienes un flujo de tareas constante. Si quieres ir acabando una tarea grande, quizás este comentario te sea útil para ordenar un poco las ideas.


Pobre Hal, así mismo nos sentimos muchas veces

Para ayudar un poco en las tareas, antes de iniciar una tarea o la codificación de una idea, hago lo siguiente (cuestión que me ha dado resultado el 90% de las veces):

  • Escribo la idea o el objetivo de la función.
  • Divido la tarea en pequeñas tareas que debe tener la función a programar.
  • Escribo las restricciones de cada tarea pequeña.
  • Escribo cómo compruebo que la tarea está terminada.
  • Priorizo de 0 a 3 (muy urgente a opcional) cada tarea.
  • ¡Vamos a producir!.

Este ordenamiento, que es algo básico, permite seguir el patrón de divide y vencerás, pero cuenta con un apoyo adicional que hago al análisis previo de las restricciones de cada tarea antes de iniciar a codificar y no se busca lograr el objetivo completo, sino que en pequeñas porciones.

Una recomendación que siempre hago a nuevos programadores es que tengas un trozo de papel a mano. En este caso, es para escribir la tarea y el cómo lo harás, así, a medida que vas avanzando vas tachando o haciendo un tick (o check) a la tarea, su subtarea y sus restricciones de validación. esto te evita distraerte en buscar el gestor de tareas en tu PC y te permite releer la lista cuando quieras.

¿Qué sucede si una subtarea es más compleja?, simplemente rescribe esa tarea con el mismo nivel de profundidad para que no pierdas el cómo venías trabajando.

Un ejemplo

Supongamos tenemos que hacer un pantalla de ingreso a una página web. A pesar que tenemos los casos de usos -que es una buena base de inicio-, podemos centrarnos en las tareas que vienen desde él. Por ejemplo, pensemos en el ingreso al portal, el cual requiere de un usuario y una contraseña. Por tanto podemos decir lo siguiente:

  • Objetivo: Algoritmo de autenticación
  • Tareas
  • Crear los campos de ingresos.
  • Crear el botón de iniciar sesión.
  • Crear las validaciones con javascript.
  • Mostrar mensajes de error.
  • Restricciones
  • Crear los campos de ingresos: Nombre de usuario en texto plano, Contraseña con campo de contraseña, Nombre de usuario debe soportar solamente email, Contraseña tiene un largo mínimo de 3 caracteres, Contraseña tiene un largo máximo de 10 caracteres.
  • Crear el botón de iniciar sesión: debe estar desactivado hasta que el usuario llene el mensaje, debe ejecutar una validación asíncronica, debe mostrar rojo si el ingreso falla.
  • Crear las validaciones con javascript: Debe validar que exista un nombre de usuario ingresado, debe validar que exista una contraseña ingresada.
  • Mostrar mensajes de error, debe mostrar mensaje de errores para eventos analizados, debe mostrar mensajes de errores desde el backend (error de BBDD).
  • Comprobación
  • Crear los campos de ingresos: formulario creado en pantalla con las validaciones impuestas.
  • Crear el botón de iniciar sesión: crear el botón, realizar los cambios por CSS manualmente, ejecutar las funciones de validaciones manualmente.
  • Crear las validaciones con javascript: pruebas unitarias
  • Mostrar mensajes de error: probar diferentes tipos de error.

Este listado es algo breve, ya que enfaticé el cómo separó algunas tareas, obviamente hay miles de supuestos por detrás, pero esto quiere mostrar que esta lista te puede ser útil para otros fines, como crear las pruebas unitarias necesarias para tu código (cumplir el largo de un cuadro de texto, mostrar mensajes de error, etc.), así como tu control de tareas de la tarea asignada.

¿Es un mecanismo del éxito?. En mi caso sí, en el tuyo, quizás no… todo depende del orden que estés siguiendo y cómo ordenas tu trabajo.