Es tedioso tomar una tarea y no saber por donde empezar, o tener en claro todo lo que se tiene que hacer, por eso es importante hacer tareas atómicas.

La verdad que herede esta palabra tanto del libro Hábitos Atómicos, como de Atomic Design para frontend, pero más allá de eso. ¿En qué consiste atomizar una tarea?

Básicamente, es cuando tengas una tarea compleja o grande romperla en tareítas más fáciles de hacer.

Boom fácil no?, ¿no?

Bueno, suele pasar que a pesar de dividir en tareas más fáciles, estas también requieren de un orden, como si de un mismo algoritmo hablaríamos.

Les pongo un ejemplo fácil, hacer un endpoint de usuarios. Dependiendo que tan tipado sea el lenguaje, vas a pensar bien si empezar por el controller, por el service o por las entidades.
Ya que no nos gustaría después andar haciendo mini refactors innecesarios.

  • Crear la entidad
  • Crear el Repository (si es que usaran uno)
  • Crear el Service Con el método que necesita el endpoint.
  • Crear el Controller

Entiendo que este flujo es muy simple, pero es para ejemplificar como una tarea de crear un endpoint significa hacer todo eso.

Créanme que por más que ya sepan que tienen que hacer eso, si lo escriben, es como si le quitaran la responsabilidad a la mente de saber cuál es el flujo de la tarea.

Ahora no se trata únicamente de dividir y listar, también de cuestionar el alcance y dependencia de la tarea en general.

Muchas veces se empiezan tareas y a mitad del proceso descubren que se depende de otra tarea, que puede o no estar bajo nuestro control.

También aplica para alguna lógica robusta que necesitemos, como alguna transacción de pago que se conecte a una api de terceros, por ejemplo.

Es mejor analizar el problema y dividirlo como tal en pasos más pequeños, acorde a lo que va a necesitar la lógica también, ya en este punto nos metemos con el principio de Responsabilidad Única.

Para dejar un resumen en limpio Atomizar las tareas nos va a permitir.

  • Visualizar y tener el flujo de la tarea.
  • Poder prevenir algunos contratiempos.
  • Organizar y mejorar la lógica que aplicamos al momento de desarrollar.