Question

Je travaille sur une équipe qui étudie la possibilité d'adopter des pratiques de développement agile.

Une question que nous courons contre est de décider quand une itération (sprint) devrait compléter.

Disons que nous avons défini notre carnet de commandes de fonction, et produit des estimations histoire points pour eux, et nous avons décidé que le premier sprint de 30 jours comprendra des caractéristiques A, B, D et F. Que devez-vous faire si à vous atteindre la fin du sprint et vous avez terminé A, D et F - mais B est complète seulement 80%. Si vous:

  1. Remplissez le sprint à l'heure, mais ne comprennent pas la caractéristique B (reporter le reste à un sprint futur)

  2. Étendre le sprint par le temps nécessaire pour compléter fonction B, mais pas démarrer le prochain sprint.

  3. Prolonger le sprint par le temps nécessaire pour compléter fonction B et commencer à travailler sur le prochain sprint.

  4. trahissons le sprint entier, et le faisceau tout le travail à faire partie d'une future version.

Le problème que je vois avec l'option 1 est que l'équipe ne fournit pas ce qu'il est engagé à. Dans certains cas, vous ne pouvez pas être en mesure d'exclure la caractéristique B sans la libération inutile toute (ou au moins sensiblement moins de valeur). Il peut rendre difficile de guider la direction du prochain sprint sans fonction B.

Le problème avec l'option 2 est que certains membres de l'équipe peuvent être inactif pendant une période de temps significative - qui mange dans la productivité globale. Vous pourrez peut-être ajouter plus de tests unitaires ou longs métrages polonais, mais il ne pas ajouter de la valeur proportionnelle. Il est aussi politiquement difficile à expliquer à la direction pour laquelle la plupart de votre équipe est au repos.

L'option 3 semble être contraire à l'esprit agile - vous mettez le prochain sprint à risque en ne permettant pas les résultats de la précédente pour guider la prochaine itération du développement

.

L'option 4 semble sévère et a la plupart des mêmes problèmes de l'option 1 et 3. Tout d'abord, vous n'y êtes pas un engagement. D'autre part, le regroupement plus de fonctionnalités dans une version ultérieure, il est plus difficile de tester et de vérifier avec les clients -. Et empêche à nouveau la capacité de guider l'avenir itération en fonction des commentaires de ceux antérieurs

Était-ce utile?

La solution

Option 1 bien sûr. Votre vitesse pour la prochaine itération va être moins, car il est basé sur Yesterdays temps , donc l'itération suivante vous avez une meilleure chance d'être complète.

Dans scrum vous êtes time-boxing . Et vous livrer uniquement des fonctionnalités qui fonctionnent.

Dans le la planification de sprint vous avez fait une estimation de ce que vous pourriez offrir. Le client doit accepter un certain degré d'incertitude dans l'estimation, ou être prêts à avoir trop de ressources de l'équipe.

Si vous manquez la prochaine itération de nouveau, passer à une longueur d'itération plus courte, et assurez-vous que la taille des caractéristiques individuelles est plus petite.

Autres conseils

Vous le feriez normalement l'option 1 - terminer le sprint . Utilisez le travail accompli, que le travail inachevé se reflète dans la vitesse du projet -. La planification ainsi que futurs tient compte des difficultés que vous avez rencontrés

Oui, l'option 1 signifie que nous n'avons pas fini ce que nous nous sommes engagés à -. Mais si c'est ce qui est arrivé, alors il est préférable de l'admettre et d'apprendre à mieux faire face la prochaine fois que de le cacher choses Bad arrive à tout le monde -. la chose essentielle est de savoir comment nous améliorons d'où nous sommes

Vous pouvez faire l'option 2 - continuer à terminer le travail remarquable en étendant le sprint. Seulement faire si le travail est une priorité très haute pour le client et ils choisissent explicitement de le faire L'extension de la longueur des sprints les rend plus difficiles à comparer les uns aux autres -.. Parce qu'ils sont longueurs différentes

Absolument jamais jamais laisser un sprint se fondre dans la prochaine - soit vous l'extension du vieux sprint, ou vous commencez un tout nouveau. Si vous laissez deux sprints se confondent alors vous ne faites pas vraiment sprints plus et les pauses de planification vers le bas ...

Puis-je répondre « Cela dépend »? De plus, je voudrais jeter dans un « Définir complet ».

Nous avons eu cette situation deux fois et résignées différemment selon les circonstances.

Pour autant que je me rappelle dans deux cas, nous laissons le sprint échouer. Il était en fait plus d'une démo rejeté genre d'échec. Les caractéristiques elles-mêmes ont été considérées comme complètes par l'équipe, mais il y avait trop de questions ouvertes, bouts et petits détails qui ont sauté pendant la démonstration. Il aurait fallu quelques jours pour envelopper le tout, donc nous laisser le sprint échouer et a pris tous les éléments ouverts dans le prochain sprint. Nous avions encore une planification rétrospective et le sprint de nouvelles histoires d'utilisateurs, mais il n'y avait pas d'intégration de lignes de code et le sprint a été officiellement marqué comme ayant échoué.

Dans un autre cas, nous avions seulement quelques bugs qui s'en dernière minute, plus un certain nombre de choses de l'histoire de l'utilisateur. Nous avons estimé le travail total à trois jours sommets et vient de prolonger le sprint. Cela a suffi pour nous pour résoudre le bug, faire quelques changements et faire une deuxième démo de sprint environ trois jours plus tard.

Alors, il était soit l'option 4 ou l'option 2 pour nous quand il a été nécessaire.

Il y a quelques choses à considérer ici. Tout d'abord, (et je parle ici terminologie Scrum, parce que je suis habitué, alors ne hésitez pas à le remplacer par ce qui convient le mieux) obtenir le ScrumMaster, propriétaire du produit et l'équipe et discuter des options ouvertement. Je ne pense pas qu'il y ait un chemin à parcourir. Vous pouvez coller à la méthodologie pure, mais dans la vie réelle qui est pas toujours la meilleure façon d'aller. flexion Parfois, les règles un peu aide beaucoup et rend la vie plus facile pour tout le monde.

Si vous travaillez bien ensemble, vous devriez trouver une option qui fonctionne pour tout le monde. (Si vous ne pouvez pas vous pouvez avoir des problèmes sous-jacents de toute façon.) Ne vous contentez pas laisser tomber quelque chose sur l'équipe sans au moins en discuter ou du moins expliquer les raisons pour lesquelles.

L'option 3 ressemble le plus à moi désordre, donc je règle cela.

Beaucoup de gens ici ont fait valoir que l'option 2 va à l'encontre des règles de base agile (Scrum ou), mais je serais en désaccord. Scrum dit explicitement que vous pouvez prolonger le sprint si appelé, la même chose que vous pouvez réduire ou ajouter des ressources histoires. Vous ne devriez pas le faire jusqu'à absolument nécessaire, mais pour autant que je sache, ce n'est pas strictement contre le livre. Dans la base lorsque nous l'avons fait, il était la meilleure solution pour tout le monde, parce que nous avons encore le sprint fait, seulement trois jours plus tard et tout le monde était très heureux avec les résultats. Si nous parlons d'une semaine ou plus l'option 2 n'aurait pas été le cas.

Je ne aime pas vraiment l'option 1. Prendre des choses à moitié fait une mise en œuvre de travail peut être vraiment désordre. Vous perdez le contact avec le code qui a été fait et l'intégration, franchement, peut être une douleur. Il peut être différent en fonction de votre façon de travailler, mais de mon expérience, en prenant le code d'un codeline n'est pas quelque chose que vous voulez faire.

En ce qui concerne l'option 4, il est assez dur, mais là encore, lorsqu'il est correctement communiqué, il devrait être correct. L'équipe sait généralement quand il foiré et ne sera pas en mesure de fournir, donc il est pas comme vous casser des nouvelles pour eux.

Alors, il y a quelques choses à considérer.

  • Combien de temps il faudra pour le faire faire? Si c'est seulement un ou deux jours, l'extension de votre sprint pourrait être la meilleure option.
  • Quel effort sera-il pour supprimer le code qui est déjà là? Si elle est en désordre et prend le temps, la résolution de l'option 2 ou 4. S'il est facile, peut-être l'option 1 est la voie à suivre.
  • Que pense l'équipe? Que pense le propriétaire du produit? Qu'est-ce que les autres pensent? A défaut d'un ressort peut avoir un impact sur le moral de l'équipe, mais il ne pourrait pas.

Pour un projet agile, il est important d'avoir une « définition done ». Ceci est une petite liste de contrôle des choses qui doivent être fait pour quelque chose de classe complète. Il est pas rare d'avoir différents niveaux de fait:

  • Histoire de l'utilisateur -. Cela pourrait inclure des choses telles que toutes les tâches associées aux États-Unis doivent être complets, tout le code est vérifié et la construction avec succès des tests unitaires de passage, les tests d'acceptation est terminée

  • Sprint - Cela pourrait inclure des choses telles que toutes les histoires pour le sprint sont « fait » (voir ci-dessus, une rétrospective est prévue, le propriétaire du produit a assisté à une démonstration de la fonctionnalité, etc. etc

  • sprint de sortie -. Le développement de la série précédente de sprints a été intégré avec succès et les tests de régression, la fonctionnalité a été libéré dans l'environnement direct

En ce qui concerne les 4 options, il est moins clair. Beaucoup est dit et a été écrit au sujet de ce qui devrait et ne devrait pas être fait autour de ne pas le sprint, l'extension du sprint et ne contenant pas une caractéristique ou une autre. Je trouve que le avec des projets agiles beaucoup de pragmatisme est nécessaire, surtout dans les premiers sprints.

La chose importante est de ne pas vous attardez il. Il suffit de tirer des leçons, d'adapter et de progresser.

Je prendrais une variation sur l'option 1. Si la fonction B peut être décomposé en ce qui est terminé et ce qui est pas terminé, cela devrait conduire à un ensemble révisé de tâches à accomplir pour le prochain sprint. Ce qui est fini est livré, et alors que la livraison est parfaite, l'idée devrait être d'essayer un meilleurs et ensuite travailler sur ce qui est à côté selon la priorité.

L'extension du sprint est une recette pour un désastre à mon esprit. Est-ce que l'achèvement de la fonction signifie résoudre tous les bugs sur elle aussi? Vous avez déjà vu un logiciel qui avait zéro des bugs?

A défaut le sprint introduit trop perfectionnisme dans les choses. Est-ce quelque chose qui est de 99% fait sans valeur? Je ne le pense pas, mais il y a des gens qui ont vraiment haut de gamme et peut être assez exigeant.

EDIT: Parfois, une caractéristique est donnée aux exigences vagues qui s'explicitées au cours du sprint. Par exemple, une demande de fonctionnalité de « En tant qu'utilisateur, je voudrais passer une commande, » peut soit être ventilé dans le cadre de la planification du sprint ou pendant le sprint. Dans les deux cas, si certaines histoires impliquant une fonctionnalité sont faites, celles-ci peuvent et doivent être présentés à la démo si l'on est fait. Le point est de pouvoir dire: «C'est là que nous sommes. Dans quelle mesure une priorité est là sur la finition ça? » comme ce qui aurait pu être urgent avant ne peut l'être à la fin du sprint.

Tout d'abord, la règle: les itérations sont des boîtes de temps-longueur fixe et ils sont complets à la fin du temps-box. Donc, ce qui élimine l'option 2 et l'option 3. En ce qui concerne l'option 4, itération fin anormale peut se produire dans des circonstances très particulières (la certitude que l'objectif ne peut être atteint, événement extérieur invalident l'objectif, ...), mais cela doit rester un événement exceptionnel. Et avant d'abandonner, il y a en général d'autres options: 1. Est-ce quelque chose d'autre / innovent 2. Obtenir de l'aide / sous-traiter 3. Réduire la portée. Et cela vous laisse avec l'option 1, le choix évident.

  

Le problème que je vois avec l'option 1 est que l'équipe ne fournit pas ce qu'il est engagé à. Dans certains cas, vous ne pouvez pas être en mesure d'exclure la caractéristique B sans la libération inutile toute (ou au moins sensiblement moins de valeur). Il peut rendre difficile de guider la direction du prochain sprint sans fonction B.

Si cela est vrai, alors soit B était plus important que A, D et F et que vous ne fonctionne pas sur les éléments les plus importants d'abord ce qui est faux, il ne devrait pas se produire ou ... A, D et F sont en fait très utile dans ce cas, votre hypothèse est en fait pas vrai et remettre à plus tard B est donc pas un gros problème. Donc, il suffit de faire dès que vous vous rendez compte qu'il ne sera pas fait et voyez si vous pouvez le remplacer par un élément plus petit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top