Acorde a las nuevas tendencias en el desarrollo de software, frecuentemente se adopta el enfoque de especialización diferenciándose así entre desarrolladores frontend y backend. El enfoque de un desarrollador frontend está dirigido principalmente a la Interfaz del Usuario, en tanto un desarrollador backend tiene su foco en las acciones que realiza el sistema, ya sea como respuesta a una interacción del usuario u otros estímulos o condiciones (por ejemplo, la ejecución de tareas periódicas programables).
A pesar de esta especialización, que aparentemente divide las aguas, para agregar una nueva característica a un producto es importante que ambos roles interactúen, creándose así tareas interdependientes en los tiempos ajustados que siguiendo la metodología ágil de Scrum involucran sprints que suelen durar de dos a tres semanas.
Para destrabar posibles estancamientos o conflictos en las tareas y cumplir los objetivos de un sprint se pueden considerar las siguientes técnicas para coordinar a los sub-equipos frontend y backend.
Aplicar el CPM
CPM es una técnica de investigación operativa que permite distribuir las tareas en un grafo que posibilita identificar la ruta crítica que determina la duración del proyecto y las tareas cuyo encadenamiento tiene que estar perfectamente sincronizado para no retrasar el tiempo total de ejecución.
En este caso,el CPM estaría aplicado a controlar la interdependencia de tareas de un sprint y por lo tanto la duración del camino crítico no debería superar su duración. A la vez se puede analizar que cuanto mayor es el número de tareas que forman el camino crítico, aumenta la probabilidad de que un retraso afecte el cumplimiento del objetivo.
Una forma de reducir esta ruta crítica es paralelizando al máximo posible las tareas de frontend y backend aplicando técnicas como "Mocks" e "interfaces contractuales".
Técnicas de programación para optimizar la planificación
En el contexto de programación se llama "Mock" al objeto que se utiliza para simular el comportamiento de partes del sistema aún no implementadas. Mediante la aplicación de mockeado se podría romper la dependencia entre algunas tareas ya que no sería necesario esperar a que se implementen en forma completa partes que pueden ser simuladas.El diseño contractual, por otro lado, permite establecer acuerdos entre subequipos, especificando las interfaces de componentes que establecen las condiciones de uso e implementación y permitiendo así un avance paralelo guiado por el diseño.
Stock vs JIT
Nuevamente, tomando conceptos ya introducidos hace años por Investigación Operativa, se puede plantear un desarrollo “Just In Time” interpretado como la coordinación de tareas de frontend (por ejemplo maquetar una pantalla) con tareas de backend (por ejemplo implementar un nuevo endpoint en un microservicio) para que mediante la integración de ambas se llegue a una nueva funcionalidad para la demo. Con sus raíces en administración de inventarios, el método JIT implica producir justo lo que se requiere, cuando se necesita y en el marco de un sprint puede implicar optimizar la relación “esfuerzo del equipo” - “nuevas funcionalidades para el usuario”.
Pero ocasionalmente este enfoque puede no resultar aplicable. Dependiendo de las circunstancias del proyecto uno de los dos subequipos puede tener mayor cantidad de temas en demanda: resolución de tickets de QA de un sprint anterior, las tareas en interdependencia pueden tener un nivel de dificultad diferente que requiere un mayor tiempo de elaboración, rotación de equipo que afecta la disponibilidad de recursos, etc
En estos casos, es útil considerar aplicar técnicas de “stock” para evitar que uno de los dos equipos quede ocioso, por ejemplo implementando pantallas maquetadas que queden listas para una futura integración con backend o microservicios listos para ser invocados por futuros desarrollos front end.
Como conclusión podemos reflexionar que Scrum ofrece el marco para realizar incrementos periódicos a un producto, pero resulta útil complementarlo con otras técnicas que permitan optimizar el desenvolvimiento del trabajo dentro de los sprints, tomando en cuenta las distribuciones y especializaciones de los equipos y las ventajas que ofrecen las técnicas de desarrollo y arquitecturas modernas.
Nota escrita por Victoria Pocladova, Líder Técnico de Desarrollo de Producto en Errepar.