Lorsque vous regardez des exemples de définitions de fait dans diverses sources, ils incluent généralement des points comme
- code terminé
- tests unitaires exécutés
- code révisé par des pairs ou apparié
- code enregistré
- documentation mise à jour
- …
Dans notre équipe, nous avons une liste similaire, mais personne ne la regarde jamais parce que ces points semblent si manifestement évidents qu'il ne viendrait à personne de sauter l'une de ces étapes. Nous nous demandions donc si c'était principalement un outil pour les équipes en transition vers un processus agile et si nous ne devrions pas simplement nous en débarrasser.
D'un autre côté, de nombreuses publications affirment que toutes les équipes hautement performantes ont une forte définition du fait. Ce genre d'indices que nous pourrions manquer une occasion d'améliorer ici.
Alors, quels sont les exemples de définitions solides de fait d'une équipe mature? Quels types de points incluent-ils généralement?
la source
Réponses:
Les directives sont là pour tout le monde. Dans une équipe mature, comme vous l'avez mentionné, tout le monde le fait, donc cela ne veut pas dire qu'il n'y a pas de place pour cela. Supposons qu'un nouveau membre se joigne, qui n'a jamais été exposé à cette méthodologie auparavant. La mise en place de la structure serait vitale pour lui. Il n'aurait pas à déranger les autres membres, ni à "oublier" un livrable.
À mon avis, énumérez tout, y compris l'évidence. Peut-être, ayez une "courte liste de triche" pour les non-évidents si cela aide ceux qui veulent une liste plus courte, mais considérez le cas des nouveaux membres qui sautent dessus.
C'est un processus itératif, chaque fois que vous voyez quelque chose que vous pouvez améliorer, ajoutez-le dans la définition de fait. Au fil du temps, vous élaborerez une liste pertinente pour votre entreprise. Anann en a déjà mentionné quelques-unes qui valent la peine.
la source
Ce n'est pas parce que les points sont manifestement évidents que les gens les réaliseront toujours. Prenons deux autres exemples - pilotes et chirurgiens. Un cockpit d'un avion de ligne commercial ou une salle d'opération a plusieurs personnes, avec beaucoup d'éducation et d'expérience entre eux. Cependant, les choses tournent mal - les étapes sont effectuées dans le désordre, quelque chose est oublié, quelque chose est mal fait. J'ai vu un certain nombre de sources site qu'un grand nombre (jusqu'à 70%) d'incidents d'aéronef attribués à une erreur de pilote auraient pu être évités grâce à une liste de contrôle . Dans le monde médical, jusqu'à 29% des poursuites pour faute professionnelle aux Pays-Bas auraient pu être évitées grâce à l'utilisation d'une liste de contrôle, selon les chercheurs. Bien que ces personnes aient été formées et, avec le recul, elles identifieraient probablement facilement ce qu'elles ont fait de mal, quelque chose s'est produit qui les a rendues caduques. Je ne l'ai pas encore lu, mais le manifeste de la liste de contrôle est censé être pertinent. Il est écrit à partir d'une profession médicale, mais les avantages de rendre visible une liste de contrôle ou un organigramme comme rappel de ce qu'il faut faire s'appliquent à toute profession.
Donc, la première étape serait de créer une liste de choses qui font partie de votre définition de fait et de la rendre visible. Peu importe à quel point cette tâche est évidente, si elle doit être complète pour que l'histoire soit considérée comme terminée, elle doit figurer sur cette liste. La liste doit être visible par l'équipe. Notez qu'il ne doit pas être quelque chose de fantaisiste ou formel - peut-être juste une série de questions que chacun doit se poser avant qu'une histoire puisse être considérée comme terminée.
La deuxième étape consiste à décider de ce qui se trouve sur cette liste de contrôle pour votre définition de fait. Tout ce que vous devez faire pour terminer une tâche doit être spécifique, sans ambiguïté, acceptable et réaliste. Elle doit également se situer dans un contexte de temps pour l'examen des résultats. Par exemple, vous n'avez pas besoin d'inclure "modifier le code" ou "modifier la conception" dans une définition de done - si vous n'aviez pas besoin de changer un produit de travail, il n'y avait pas besoin de l'histoire.
Je soupçonne qu'une bonne liste de contrôle pour servir de base à une définition du fait serait:
Bien sûr, vous devrez trouver une bonne définition du fait qui inclut toutes les autres activités que votre équipe et votre client ressentent comme une valeur ajoutée. Si c'est sur la liste de contrôle, cela devrait être quelque chose qui doit être fait pour ajouter de la valeur à quelqu'un (l'équipe, le client, l'utilisateur). En énumérant clairement ce que vous faites, vous pouvez également identifier et éliminer les activités étrangères pour améliorer le processus.
la source
En fait, cela ressemble à un chanceux:
Votre équipe est déjà "mature" ;-). Mais il y a toujours place à amélioration!
A votre question:
En plus de votre liste, vous pouvez ajouter:
Diverses métriques de qualité du code: - Instabilité, Abstraction - LOC vs DLOC (documenté) - etc ...
La règle d'or pourrait être que la métrique ne devrait pas empirer avec votre validation. En plus, vous pouvez formuler un "done: withExcellence" si quelqu'un améliore réellement les mesures. Bien que cela (les mesures s'améliorent) ne fait généralement pas partie des phases de développement (nouvelles fonctionnalités) mais des phases de refactorisation.
Dans l'une de mes anciennes entreprises, nous avions une définition de «terminé» qui disait que vos mesures doivent rester en dessous de certains seuils, si vous allez au-dessus, vous n'avez pas encore terminé. (La complexité cyclomatique ne doit jamais dépasser 15, sauf si vous avez une très très bonne excuse, comme des calculs compliqués.)
Il en va de même pour les violations de type Checkstyle, surtout si vous avez un ensemble de règles personnalisé pour vérifier le style de code de vos équipes. Si vous ne respectez pas la norme de codage, vous n'avez pas encore terminé.
Ensuite, vous pouvez non seulement exécuter UnitTest, mais également mesurer la couverture du code. Si au moins 50% sont couverts, vous n'avez pas terminé. Bien que ce soit une sorte de définition floconneuse de done, puisque vous devriez avoir des tests pour les méthodes core / main / critique, et pas nécessairement pour 100% de votre base de code.
Oh oui ... et si vous avez (vous devriez) un serveur CI avec intégration de branche automatisée ... vous n'avez terminé que si votre validation dans la branche DEV a fusionné avec la branche LIVE actuelle et ne provoque aucune erreur non plus. (Tests unitaires, etc.)
hmmm ... c'est tout ce dont je me souviens bien des entreprises / projets passés, qui n'ont pas été mentionnés dans votre liste.
J'espère que cela vous a donné quelques idées ;-)
À votre santé,
anann
la source
Dans un environnement TDD / BDD, la définition de "fait" (techniquement "Code complet", car la définition de Matt S de "vraiment" fait "" est correcte) est assez simple:
À ce stade, vous pouvez continuer. Ces trois points sont essentiels, mais c'est tout ce dont le codeur d'équipe moyen doit se préoccuper. Écrits ou non, ils sont inviolables dans un environnement TDD. La documentation, lorsque ce sont les codeurs qui font la documentation, est un point supplémentaire. Dans ma dernière équipe Agile, la documentation était gérée par les BA / QA; ils savaient ce que le client voulait, avaient exécuté les UAT et étaient donc mieux en mesure de documenter la nouvelle fonctionnalité d'une manière qui était significative pour le client, donc la documentation ne faisait pas partie de la définition du codeur de "fait", bien qu'elle fût partie de la définition de l'équipe.
la source