¿Cuál es la mejor manera de documentar las discusiones técnicas y el diseño en el desarrollo ágil?

He trabajado con muchos equipos que manejan servicios y sistemas web de back-end. He descubierto que una buena manera de manejar nuestras historias y documentación técnica y discusiones es crear un diagrama de alto nivel. Todos necesitan una imagen de lo que estamos tratando de construir. Luego pondré los números de las historias y los enlaces a las historias reales directamente en el diagrama. Al comienzo del esfuerzo, es posible que solo tengamos algunas historias definidas y que estén mal definidas. A medida que el equipo trabaja a través del trabajo atrasado y obtiene una mayor comprensión, agregamos más historias al diagrama. Los codificamos por colores para indicar si no se iniciaron, están en progreso o terminados.

Durante la revisión de Sprint, esta es una excelente herramienta para mostrar a los interesados ​​dónde estamos, dónde planeamos ir y nuestro progreso hacia la (s) gran (s) meta (s). Necesita algo para ayudar a todos los involucrados con su producto / proyecto a visualizar lo que está sucediendo. Si puede usar la misma imagen para todos, entonces todos deberían tener una comprensión compartida del producto / proyecto. No tiene que ser algo muy detallado o elegante. Solo lo suficiente para ayudar a todos a entender lo que estamos haciendo y hacia dónde vamos. Es importante que mantengas esto actualizado cada sprint. También puede ser útil mostrarles a todos cómo esta imagen ha cambiado con el tiempo. Como una foto de lapso de tiempo de un sitio de construcción, es sorprendente ver cómo se unen.

Utilizo los registros de decisiones arquitectónicas en el control de versiones para “por qué” se hizo alguna elección. Son ligeros y se pueden consultar fácilmente en su archivo Léame, si lo desea.

Radar Tecnológico | Tendencias tecnológicas emergentes para 2017 | ThoughtWorks

Utilizo un script bash simple para crearlos y mantenerlos en Markdown.

npryce / adr-tools

Para el diseño, utilizo diagramas de contexto de diseño impulsado por dominio y diagramas de flujo para documentar la estructura.

Recuerde documentar solo cosas que no pueden explicarse en el código y mantenerlo al mínimo. Solo documente cosas que sean relativamente estáticas.

Muchas respuestas geniales aquí. Lo único que puede agregar es NO mantenerlos en las historias mismas. Los equipos piensan que pueden regresar y encontrar las historias con las pruebas, la documentación, etc. No. Es como si se hubiera ido para siempre. Debe estar separado del sistema de gestión del trabajo.

Primero, visualícese: haga un dibujo o diagrama que capture las decisiones que ha tomado. De hecho, probablemente ya haya dibujado un diagrama en una pizarra, y si es legible, simplemente puede tomar una foto.

En segundo lugar, es útil escribir un documento corto (1 – 2 páginas de tamaño carta) que capture la justificación de la decisión:

Meta de diseño o problema a resolver
Lo que hiciste para aprender
Lo que decidió (su diagrama iría aquí)
Por qué decidió (la razón de su decisión, especialmente para aquellos aspectos de la decisión que no serían obvios para otra persona).

No es algo en lo que deba pasar mucho tiempo, tal vez una hora, tal vez dos horas si anticipa que mucha gente cuestionará la decisión más adelante.

Es posible que pueda adaptar lo que esté utilizando para las Historias de usuarios, pero necesitará información diferente que capture mejor la decisión y su fundamento detrás de la decisión.

De esa manera, cuando alguien plantee una pregunta más tarde sobre las decisiones técnicas / opciones de diseño, podrá señalarlo en lugar de discutir con ellos de nuevo.

Escriba una historia que resuma la discusión técnica y el diseño.

En algún momento de la sutura, preparará la historia y pronto la acelerará para su implementación y seguirá otros pasos familiares del ciclo de vida.

La mejor manera de capturarlo como prueba. Porque querías validar todo después de escribir el código. Documente como prueba de unidad, prueba de integración y prueba de sistema, etc.

More Interesting

Cómo calcular el caso de negocio para realizar la gestión de la configuración en un proyecto de desarrollo de software

¿Cuál es la diferencia entre un lenguaje como javascript y un lenguaje como c ++?

¿Cuáles son los proyectos interesantes de Apache con los que todos los desarrolladores deberían estar familiarizados?

¿Cuáles son las ventajas y desventajas de mudarse a Seattle desde San José como ingeniero de software?

¿En qué casos son útiles las permutaciones / combinaciones en la programación? ¿Cuáles son algunos problemas que ocurren cuando estas ecuaciones serían útiles para resolverlas?

¿Cómo se comunica el software con el hardware mecánico?

¿Qué hacen las diferentes carpetas de un programa en Windows?

¿Habrá una tercera edición del libro "Code Complete" de Steve McConnell?

Como ingeniero senior sin una educación CS o SE significativa, ¿cómo puede dar forma a su camino profesional para seguir subiendo la cuesta de grandes y desafiantes problemas técnicos?

¿Con qué frecuencia se utilizan las pruebas basadas en propiedades (a la QuickCheck) para desarrollar productos reales?

¿Por qué los desarrolladores full-stack obtienen salarios bajos en comparación con otros graduados de MBA o desarrolladores de software?

¿Cómo hago cumplir automáticamente la revisión de código en Git?

¿Qué cualidades debo adoptar como desarrollador de Java?

¿Quiénes son los principales actores de Agile Software? (Empresas que venden software para el desarrollo de software Agile)

¿Fue un error la programación orientada a objetos?