Dans notre équipe, depuis que nous sommes devenus agiles, nous avons également essayé de réduire et de comprendre la quantité de documentation réellement requise. Je peux partager avec vous ce que nous avons appris jusqu'à présent.
Avant toute chose, assurez-vous de lire cet article sur la documentation Agile / Lean . Très bonne lecture.
Deuxièmement, je vous conseillerais fortement de reconsidérer la production de documents de conception après un travail préliminaire sur les histoires. Nous avons déjà essayé cela et cela s'est avéré être un gaspillage. Au milieu de la dernière version, nous avons décidé de mettre à jour les documents de conception UNIQUEMENT APRÈS la livraison du code de l'histoire. Et maintenant je pense même que c'est trop tôt.
Vous devez vous demander pourquoi vous souhaitez créer des documents de conception avant de coder. Pour nous, ce sont les raisons:
- En tant qu'équipe, nous devons comprendre comment l'histoire affectera la conception.
- La possession de documents de conception s'est avérée utile lorsque de nouveaux membres (ou temporaires) se joignent à l'équipe ou lors du retour au code sur lequel personne n'a travaillé depuis plus d'un an. Ils sont donc utiles pour la mémoire organisationnelle pour aider à comprendre le fonctionnement du code.
- Les documents de conception sont utiles pour les ingénieurs de maintenance qui peuvent avoir besoin de dépanner le code après la publication.
Pour satisfaire (1), vous n'avez pas besoin de produire un document de conception réel. Votre équipe doit toujours avoir une phase de conception avant le codage, mais cette phase peut être aussi simple qu'une session de 15 minutes devant un tableau blanc ou une serviette. Vous n'avez pas besoin de produire un document réel qui prendra des heures (sinon des jours) à écrire juste pour discuter des changements de conception.
(2) ou (3) ne sont pas nécessaires pendant le développement de l'histoire actuelle et plus que probablement ils ne seront pas nécessaires pour plusieurs itérations ultérieures.
Gardez également à l'esprit que chaque fois qu'un membre de l'équipe écrit / met à jour des documents de conception, c'est le moment où le code n'est pas écrit. Lorsque vous écrivez des documents avant le code réel, il y a presque 100% de chances qu'ils nécessitent une mise à jour car une fois que vous commencez à coder, la conception finit toujours par être modifiée. Et même si vous écrivez des documents de conception après le code, comme notre équipe l'a appris, la refactorisation des histoires suivantes modifie toujours la conception.
Donc ce que je recommanderais:
- Produisez initialement suffisamment de conceptions / modèles temporaires pour que votre équipe puisse avoir une conversation intelligente avant de coder. Ne vous attendez pas à les conserver et ne perdez pas de temps à les formaliser.
- Produisez uniquement la documentation de conception officielle si quelqu'un en a besoin (c.-à-d. Que votre équipe a un réel besoin de mémoire organisationnelle)
- Produisez uniquement la documentation de conception sur le code qui a été stabilisé. Il est inutile d'essayer de documenter un module qui ne cesse d'être modifié à chaque itération.
- Produisez des documents de conception qui décrivent entièrement un module (ou une partie du produit). Dans le passé, nous écrivions des documents de conception qui documentaient les modifications à apporter. Ces documents étaient complètement sans valeur dès la sortie de la version.
- Gardez le document de très haut niveau. Si vous écrivez 20 pages couvrant l'architecture et la conception de très haut niveau, ce document a) sera lu par d'autres personnes et b) aidera les gens à se familiariser avec la mise en page générale de votre code. Pour plus de détails, les gens peuvent aller directement dans le code. Si vous écrivez 700 pages de spécifications détaillées, elles ne correspondront presque toujours pas à la réalité, c'est trop pour quiconque de lire et vous finirez par devoir maintenir et mettre à jour 700 pages au lieu de 20 chaque fois que de futures modifications seront apportées.