Depende del proyecto, si está trabajando solo en un proyecto pequeño, podría tener mucho sentido realizar su investigación e investigación tecnológica como parte del desarrollo. Y aunque no es parte de Agile, por supuesto, se podría usar una metodología Agile para agregar algo de control a esto. Sin embargo, esto hace que el proceso sea muy difícil de predecir / o caja de tiempo. Podría estar bien, incluso más rápido, si trabaja solo en un pequeño proyecto que es totalmente suyo, deje que sus requisitos se desarrollen a medida que los aprende. Use buenos principios en el camino, y sea consistente y no debería necesitar re-factorizar tanto.
En el trabajo utilizamos Kanban, Scrum y otros enfoques de cascada más tradicionales. Dependiendo del proyecto, creo que los desarrollos complejos con requisitos iniciales bien definidos no son los más adecuados para ágil, aunque muchos estarán en desacuerdo.
Antes de comenzar a trabajar incluso en un proyecto ágil (todo menos el más simple), creamos algo de documentación. Tenemos una maqueta (si está enfocada en la interfaz de usuario), un conjunto de requisitos y una especificación funcional.
Se le pedirá al desarrollo que cree la especificación técnica a partir de la especificación funcional, y durante este proceso especificaremos la tecnología y realizaremos cualquier investigación inicial que necesitemos. Este proceso me parece muy importante, ya que brinda la oportunidad de ver lagunas en los requisitos / especificaciones funcionales, y brinda las grandes decisiones tecnológicas por adelantado a las personas con la experiencia y el conocimiento del sistema para tomar tales decisiones.
Sin embargo, lo importante es que la especificación funcional podría ser una lista de viñetas, y la especificación técnica generalmente será un modelo, con algunas viñetas y guías tecnológicas, tal vez solo 3 o 4 páginas en algunos casos.
Incluso cuando se ejecuta un proyecto ágil, creamos documentación:
- Toda la documentación tiene un costo.
- Desarrollar contra requisitos de alto nivel en movimiento y mal definidos tiene un costo.
- El equilibrio correcto de lo anterior depende de su proyecto, la cultura y las personas.
- Documentamos Justo a tiempo, los documentos no están actualizados.
- Documentamos apenas lo suficiente / lo suficiente.
- No mantenemos ni actualizamos estos documentos, no ponemos mucho esfuerzo en ellos. Ellos son pequeños. Esperamos tirarlos a la basura.
- Eliminamos las grandes incógnitas, como las decisiones tecnológicas, los requisitos confusos y la arquitectura por adelantado.
- Sabemos lo que estamos desarrollando antes de comenzar.
- Confiamos en que los desarrolladores tomen decisiones informadas sobre la documentación y discutan cualquier problema.
- Valoramos la comunicación sobre la documentación, por lo que esperamos que todos los involucrados se comuniquen a menudo.
- Documentamos sistemas (descripción general) después del desarrollo, no durante ni antes.
Usted ve que hay una pequeña cascada en nuestro proceso ágil.
Si trabaja solo, cree un modelo inicial (¡diagrama!), Juegue y elija la tecnología, y luego, cuando tenga este concepto de los requisitos de alto nivel, avance y desarrolle de manera ágil e iterativa, pero considere buenos principios y consistencia a medida que avanza y necesitará re-factorizar menos, más re-factorizar a medida que avanza.
Pero en general, si hay un costo real involucrado (no un pasatiempo), sepa lo que está desarrollando antes de escribir el código, pero no pierda demasiado tiempo escribiendo documentación que se volverá redundante rápidamente, ya que cambiará de opinión y debería cambie de opinión durante el desarrollo a medida que se informa mejor. Y su proyecto podría cambiar enormemente de rumbo, pero comenzar desde una base buena y bien definida.