Las técnicas generales son de sentido común, lo importante es saber que no requieren mucha experiencia técnica.
El punto de partida con la planificación es identificar el problema exacto que debe resolverse y tener un requisito claro e inequívoco. Si no tiene eso, sus estimaciones serán incorrectas. Tener esto documentado en algún tipo de especificación de características antes de que alguien comience a escribir código significará que cualquier pregunta que deba hacerse se habrá hecho antes de que comience la codificación. Este es un ahorro de tiempo sorprendentemente efectivo. Retroceder y aclarar los requisitos interrumpe el flujo de uno como programador y esperar respuestas puede bloquear el progreso.
Una vez que haya identificado el requisito, debe identificar las tareas de trabajo involucradas en su resolución. Este es un ejercicio clásico de divide y vencerás: cualquier tarea que pueda desglosarse aún más debe desglosarse aún más.
En un equipo más grande, puede usar el póker de estimación para obtener una estimación basada en la experiencia de todos los involucrados. Eso no funciona tan bien en un equipo más pequeño, pero sigue siendo útil obtener una estimación independiente de sus desarrolladores y tal vez incluir una de usted también; su falta de experiencia específica puede ser útil aquí porque al explicarle lo que La tarea implica desde su perspectiva, el equipo de desarrollo probablemente comprenderá mejor el problema.
Con un equipo más pequeño puede ayudar a obtener una estimación del mejor / esperado / peor de los casos para cada tarea, eso le da un rango de valores, pero si está obteniendo muchas estimaciones desbordadas, puede inclinarse hacia el peor de los casos hasta que sus desarrolladores aprende a estimar con mayor precisión.
En una tienda pequeña, los desarrolladores a menudo terminan doblándose como administradores de sistemas, equipo de soporte e incluso probadores (aunque de todas las cosas que podrían estar haciendo, las pruebas son las que debe intentar evitar a toda costa), por lo que debe tener en cuenta eso. Calcule cuánto tiempo dedican sus desarrolladores a trabajar en nuevas funciones y tómelo en sus estimaciones. Si una tarea se estima en 2 días, pero sus desarrolladores solo pueden trabajar en un nuevo desarrollo el 60% del tiempo, entonces necesitará 4 días para que se complete. Es posible que también pueda ayudar con esto controlando el flujo de otras tareas que deben manejar para que las tareas de administración o soporte no urgentes se puedan agrupar en lugar de ser manejadas de manera ad-hoc. Muchos programadores (ciertamente incluyéndome a mí en este caso) no son buenos administradores de tiempo, así que cualquier cosa que puedas hacer para echar una mano a ese respecto te ayudará La tarea única siempre es más fácil para los programadores que la multitarea. Bloquear el tiempo durante el día también puede ayudar con esto.
Mantenga un registro : cada vez que tenga una sesión de planificación, registre las estimaciones y los datos reales. Luego puede usar esto a) como una guía sobre cuánto inflar sus estimaciones durante la planificación yb) para ayudarlos a refinar sus habilidades de estimación. Al final de cada iteración (o cualquier equivalente que tenga), todo el equipo debería revisar el trabajo realizado y descubrir por qué tardó más de lo esperado para que esto pueda incorporarse en estimaciones futuras. Esto debe ser una tarea irreprochable: parece que tiene la actitud correcta aquí, pero esta respuesta puede demorar un tiempo, así que haré la observación. Si alguien dice "Cometí un error aquí", puede convertir eso en "qué podría haber hecho mejor", pero decirle a la gente que fueron demasiado lentos o que hicieron las cosas mal solo empeorará las cosas.
Soy consciente de que no hay una bala de plata para este tipo de problema, pero el factor más importante es la comunicación, que en realidad es más fácil con un equipo más pequeño, y el uso de comentarios para refinar sus habilidades colectivas.