À quoi ressemble une bonne «définition du fait» pour une équipe mature?

9

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?

Tobias
la source
10
Lorsque le client l'appelle, c'est fait.
Matt S
7
Personne ne va jamais sauter la mise à jour de la documentation?
JeffO
1
Votre organisation dans son ensemble a-t-elle un problème avec certaines personnes qui pensent que les choses sont faites alors que d'autres pensent qu'il y a encore des choses à faire? Sinon, vous n'avez pas vraiment besoin de passer du temps ici. S'ils le font , eh bien, vous avez un point de départ pour votre liste
AakashM
@MattS: Si vous devez attendre que le client l'appelle terminé, vous avez beaucoup d'histoires en attente de finalisation. Il doit y avoir une sorte de "développement terminé" ou "prêt pour l'UAT" pour une histoire qui, dans le colloque, est "faite à la connaissance de l'équipe".
KeithS
Choisissez un système et respectez-le. Kaizan à l'occasion. Il s'agit d'un cas où la cohérence améliore la productivité. La partie difficile est d'être le processus (dictateur pour la vie) au début jusqu'à ce que tout le monde voit les avantages (oui, oui, vendez-le).
Paul

Réponses:

9

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.

Nasir
la source
Excellent point que vous faites à propos des nouveaux membres de l'équipe, Nasir.
Carson63000
Merci. Nous faisons face à cette situation assez régulièrement, et les vieux comme moi oublient parfois aussi.
Nasir
7

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:

  • Tous les tests unitaires, d'intégration, de système et d'acceptation associés ont-ils été mis à jour?
  • Le produit de travail a-t-il été transformé dans sa forme libérable? Par exemple, code construit, documentation au format de fichier exportable, etc.
  • Tous les produits de travail associés ont-ils été évalués par des pairs? Les exemples de produits de travail comprennent le code source (production et test), les commentaires, les documents de conception, les procédures de test et les manuels d'utilisation.
  • Tous les tests associés (à tous les niveaux de test) ont-ils été exécutés et réussis?
  • Le code a-t-il été fusionné dans le référentiel d'intégration?

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.

Thomas Owens
la source
Tout cela semble très bien en théorie, mais comment trouvez-vous celui qui est pertinent? Par exemple, je n'ai pas besoin d'une liste de contrôle pour me brosser les dents tous les matins, mais je le fais toujours. Les points que vous énumérez (tests réussis, examen par les pairs ...) ressemblent à un brossage des dents, alors où est la valeur ajoutée?
Tobias
@Tobias La valeur vient de la répétabilité. Vous pouvez maintenant visualiser votre processus et le partager avec d'autres. Vous pouvez également le visualiser pour identifier les domaines à améliorer (les choses que les gens font qui ne sont pas sur la liste, les choses qui n'ont pas besoin d'être sur la liste, les choses que les gens ne font pas qui sont sur la liste).
Thomas Owens
1

En fait, cela ressemble à un chanceux:

Dans notre équipe, nous avons une liste similaire, mais personne ne la regarde jamais parce que ces points semblent si manifestement évidents

Votre équipe est déjà "mature" ;-). Mais il y a toujours place à amélioration!

A votre question:

Alors, quels sont les exemples de définitions solides de fait d'une équipe mature? Quels types de points incluent-ils généralement?

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

Wizard Of Tech
la source
Les mesures de qualité du code sont une idée intéressante à laquelle nous n'avons pas encore pensé. Le reste (style de codage, CI vert après fusion) fait déjà partie des "parties évidentes".
Tobias
1

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:

  • Tous les tests automatisés réussissent (ces tests automatisés doivent inclure de nouveaux écrits pour l'histoire en question afin de vérifier que la fonctionnalité ou le comportement requis existe et fonctionne)
  • Examen du code réussi (au moins un développeur senior de l'équipe se contente de laisser votre travail faire partie de la base de code, et que vous n'avez pas "triché" ou "piraté" votre chemin à travers l'histoire)
  • Validation réussie (y compris le bot de construction réussissant tous les tests automatisés, les mesures de couverture de code, les vérifications de style par les flics, etc.)

À 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.

KeithS
la source