Archive

Author Archive

Kanban vs Scrum de Henrik Kniberg

April 27th, 2009 mathieu boisvert posts profile 3 comments

Je suis en mandat avec une équipe de développement qui ne peut d’emblée adopter toutes les pratiques de Scrum. Le domaine d’affaire de l’application est si complexe qu’il est difficile pour le PO de présenter à l’équipe l’équivalent de quelques semaines de travail. Pour le moment, nous avons décidé de contourner le problème sans se priver des valeurs d’amélioration et de collaboration de l’Agilité en adoptant la méthode Kanban. Isabelle Therrien m’a référé un très bon article de Henrik Kniberg à propos du Kanban versus Scrum. C’est la meilleure vulgarisation de la méthode que j’ai lu à ce jour. Contrairement à d’autres articles, il explique bien le Kanban comme une méthode Agile à part entière, et pas seulement une adaptation de Scrum.

L’article explique notamment que: – Scrum est dirigé par l’engagement et les boîtes de temps alors que le Kanban est dirigé par un flux tendu et le périmètre. – Kanban permet la ré-introduction de spécialités impossibles à diffuser au sein d’une équipe pluri-disciplinaire – Kanban permet au PO de planifier les items à développer à l’unité alors que Scrum permet la planification d’items en lot

Attention! Kanban est moins restrictif que le Scrum. Il faut prendre garde de respecter l’esprit Agile.

Avez-vous des mises en garde ou des opinions à propos de Kanban?

  • Share/Bookmark
Categories: Uncategorized Tags:

Les compétences techniques qu’un développeur devrait améliorer selon Justin James

April 3rd, 2009 mathieu boisvert posts profile 2 comments

J’aime bien cet article qui liste les compétences passe-partout que les développeurs devraient chercher à améliorer. Voici la liste des thèmes, lire l’article pour le détail.

  1. : Connaître un langage majeur (ex: .NET, Java, PHP)
  2. : Connaître une technologie de client riche (RIAs)
  3. : Connaître le développement web
  4. : Connaître les services web
  5. : Avoir des compétences humaines (Soft skills)
  6. : Connaître les langages dynamiques
  7. : Connaître les méthodes Agile
  8. : Avoir de l’intérêt pour les domaines d’affaire
  9. : Avoir une bonne hygiène de développement
  10. : Connaître le développement embarqué (Mobile)

Les temps changent; il me semble qu’à mes débuts, la liste aurait aussi inclus des connaissances du SQL avec un SGBD, et au moins un langage script (utile entre autres pour faire des scripts de build et des batchs).

Dans tout les cas, je vois d’un bon œil d’avoir une liste d’axes de compétences avec laquelle je peux me mesurer dans mon processus d’amélioration continue.

  • Share/Bookmark
Categories: Uncategorized Tags:

Quand la mêlée quotidienne sonne faux.

March 20th, 2009 mathieu boisvert posts profile 3 comments

- Hier j’ai travaillé sur l’import/export et je vais continuer aujourd’hui. Je n’ai pas de difficultés…”

Entendez-vous les violons stridents qui annoncent un meurtre? Ils annoncent la mort de la mêlée quotidienne. Même si on a déjà posté sur ce sujet sur le blog de Pyxis, j’en rajoute une couche.

Le problème avec l’intervention citée plus haut, c’est qu’elle n’a aucune valeur ajoutée; j’aurais pu obtenir la même information en regardant le tableau des tâches. Si vous tenez votre mêlée en face de votre tableau des tâches et de votre graphique d’avancement, et que les participants continuent de tenir de mêlées aussi insipides, vous gaspillez tous les jours 15 minutes de temps de travail. Au moins, vous aurez réduit à 15 minutes le massacre quotidien.

Quel est le contexte d’une mêlée? Ça ressemble un peu à un article de journal; je veux savoir ce qui a progressé depuis hier à propos des élections américaines. Si rien n’a changé, je ne tiens pas à le savoir. Dans le cadre d’une itération, en tant que membre impliqué, je veux savoir où nous en sommes et je veux partager avec mes coéquipiers mes contributions, mes observations et les risques que j’ai identifiés. Ce n’est pas moi le sujet de cette rencontre, mais notre engagement. En quoi ma journée a contribué au projet? En quoi j’ai affecté NOTRE itération? En quoi j’ai amélioré la qualité de NOTRE produit? Qu’est-ce qu’ON peut faire pour adresser un obstacle?

- Mais Mathieu, je n’ai rien fais sinon de modifier les scripts d’import pour tenir en compte les accents qui n’étaient pas supportés. C’est un travail qui n’était pas prévu et a été vite réglé. Maintenant je dois finir l’import.

Voilà!

Si vous avez de la difficulté à secouer vos troupes, changez la formulation de vos questions ou jetez-les par la fenêtre! Préférez une question qui s’adresse à tous le groupe sur la progression de votre itération.

  • Share/Bookmark
Categories: Agile Tags:

Les Dojos de Développement (Coding Dojo)

March 10th, 2009 mathieu boisvert posts profile 2 comments

L’amélioration continue est un concept clé des pratiques agiles. Les livres, les blogues et les formations sont de bonnes façons de se perfectionner. La tenue de dojos est une autre façon ludique et motivante de partager et se perfectionner sur le développement logiciel.

Les Dojos

Si je veux apprendre le Judo, je vais m’inscrire au dojo du coin et y passer une heure par semaine pendant deux ans, au bout de quoi j’aurai peut-être envie de pratiquer plus assidûment.

Si je veux apprendre la programmation objet, mon employeur va me trouver une formation de trois jours à Java dans le catalogue 2004.

Cherchez l’erreur.

Laurent Bossavit

Se donner des périodes pour pratiquer la programmation nous éveille à de nouvelles techniques et nous fait découvrir de nouveaux langages sans amputer sur nos mandats professionnelles. De le faire en groupe nous encourage et nous aide à nous défaire de nos pratiques routinières.

Références

Statégies

  • Recommencer à zéro: on ne cherche pas vraiment à résoudre un problème, mais plutôt à pratiquer. Les problèmes rencontrés dans un cas simple réalisable en une heure seront similaires à ceux que l’on rencontre dans la réalisation de plus gros projets.
  • Prévoir une courte pause au milieu de l’atelier pour inspecter et ajuster l’exercice en cas de besoin. On pourra y définir de nouvelles règles ou s’entendre sur la ligne directrice de conception.

Foire aux questions

  • Où peut-on trouver des exemples de défis?

Un défi populaire dans la communauté, c’est le fameux pointage du jeu de quilles . Le catalogue du site Coding Dojo  est une bonne source d’inspiration. Pragmatic Dave propose également d’autres katas .

Le défi se doit de rester simple et réalisable dans un court laps de temps. Écrire un convertisseur de chiffres romains est un bon exemple de défi raisonnable.

  • Quel est le but du dojo si ce n’est pas la résolution du défi?

Le but est de se perfectionner dans une discipline du développement logiciel. On peut perfectionner une pratique comme le TDD ou l’orienté-objet, un langage comme Ruby, ou encore l’utilisation d’un framework comme Rails.

  • A quel moment on doit changer le binôme au commandes d’un randori?

Une boîte de temps est sûrement la technique la plus simple (ex. entre 5 et 7 minutes). On aussi peut utiliser le cycle normal du TDD; chaque binôme est responsable de faire passer un nouveau test.

Le Coding Dojo de Pittsburg a une autre approche; tous les participants binôment simultanément sur le défi et l’atelier se termine par une rétrospective de groupe.

  • Share/Bookmark
Categories: Agile Tags:

Réactions au fameux article de James Shore sur le déclin de l’agilité.

March 5th, 2009 mathieu boisvert posts profile 17 comments

En parcourant les archives pyxissiennes, nous avons retrouvé une intéressante discussion à propos de l’article The Decline and Fall of Agile de James Shore.

Je la retranscris pour votre bon plaisir! :)

  • Share/Bookmark
Categories: Agile Tags:

Est-ce que les sprints/itérations sont pertinents?

January 16th, 2009 mathieu boisvert posts profile No comments

Dans mon précédent billet, j’avais mentionné que chez OLM les sprints étaient un frein dans nos planifications: certaines stories avaient des pré-requis qui allaient se résoudre pendant le sprint, mais qui ne pouvaient pas attendre la fin du prochain sprint pour être sélectionnées. On ajoutait consciemment des facteurs de risque à nos sprints.

Dans quelques billets, Naresh Jain critique les sprints de Scrum et les itérations de XP:

Lorsqu’elle remplace les sprints avec une gestion par flux-tiré (go!, Scrum-Ban, go!), ses équipes n’ont pas de regrets. Elle explique que la planification et le suivi des sprints sont coûteux en effort et en temps et n’ajoute pas réellement de valeur. Pour elle, l’utilisation des sprints est un artifice qu’une équipe se donne pour corriger un dysfonctionnement, en citant Sutherland qui explique la raison d’être des itérations:

Jeff Sutherland about why he decided to have Sprints as fixed time boxes, he will tell you that at that point the developers were constantly being interrupted by their customers/managers, leading to a context switch. This was yielding very poor productivity and lack of focus.The time box addressed this issue by keeping the customers and managers “out of the room” for the time box duration and also helped the developers to set a clear focus on what needs to be achieved.

Un billet sur InfoQ leur reconnait tout de même quelques qualités:

  • les sprints apportent une cadence et établissent la capacité des équipes. Ceci ajoute de la visibilité et de la prévisibilité pour le client et l’entreprise.
  • les sprints définissent des points de synchronisation. Ceci donne des occasions pour s’intégrer avec d’autres équipes, des occassions au client d’exprimer sa satisfaction et des occasions pour changer l’affectation des ressources.
  • les sprints régularisent la période sur laquelle une équipe doit s’engager.

Sans recommander les sprints, on conseille dans le même billet d’être prudent à ne pas perdre les bienfaits qu’apportent les sprints:

  • Une période de célébration
  • Un moment d’introspection
  • Une granularité utile à la haute direction
  • Une cadence durable.
  • Un instant pour mesurer le succès (ou l’insuccès) d’une équipe.

J’ai l’impression que l’utilisation des sprints soit un passage obligé que l’on peut abondonner qu’après avoir atteint un certain dégré de maturité. Pensez vous que votre entreprise/équipe bénificie vraiment de l’utilisation des sprints? Etes-vous prêts pour la gestion par flux tendu?

  • Share/Bookmark
Categories: Agile Tags:

Pourquoi estime-t-on?

January 5th, 2009 mathieu boisvert posts profile 1 comment

Tous s’accorde sur la pertinence d’une estimation “just bare enough”. Mais après avoir lu cet article et ses références je serais à l’aise à travailler dans une équipe qui ne veut plus faire d’estimation. A tout le moins, plus d’estimation numérique.

Quelle est l’utilité du poids d’une story? Le poids estimé nous sert à:

  • Connaître la charge de travail disponible dans le backlog, pour vérifier la progression du projet.
  • Mesurer la vélocité d’une équipe à un moment t, pour servir d’argument au calcul de la capacité.
  • Évaluer la capacité, pour nous aider à déterminer la prochaine charge de travail sur laquelle l’équipe peut s’engager.

La finalité de l’estimation, c’est d’évaluer la capacité, dans le but de préparer le prochain sprint. La qualité de l’estimation n’augmente pas la productivité de l’équipe et n’ajoute pas de valeur au produit livré. Pire, tenter d’obtenir un estimé juste risque d’amputer sur le temps de développement. Et un estimé faux incite à la ré-estimation: une autre source d’effort et de temps.

Si on décide de ne plus baliser les sprints dans une boîte de temps, avons-nous encore besoin dévaluer la capacité d’une équipe pour planifier un sprint? Avons-nous encore besoin d’estimer les stories?

Réalisation d’un sprint et cadence de l’équipe

La notion de sprint ajoute la notion de cadence à une équipe: elle peut mesurer ses réalisations à la fin de tous les sprints. Même si le but n’est pas de rapporter le travail des développeurs, on peut quand même l’observer pour évaluer la santé et la maturité d’une équipe lors de la rétrospective. On peut aussi informer le client de la capacité de l’équipe lors de la séance de planification.

En supprimant les estimés, on ne supprime pas la notion de cadence de développement: au lieu de mesurer des points/heures, on peut mesurer des features/heures. Par exemple, une équipe de 6 développeurs pourrait avoir une vélocité de 2 features pour 2 jours. On pourrait alors prévoir que dans deux semaines, l’équipe réalisera 15 features. Inversement, si le client priorise le backlog et sélectionne les 10 premières features, l’équipe prévoira environ 7 jours pour les réaliser. Au lieu de se fixer une date de réalisation, on a fixé un périmètre avec une date approximative de livraison.

Avec un sprint limité dans le temps, trois cas de figure se présentent:

  1. l’équipe a réalisé le sprint en utilisant tout le temps prévu: Dans ce cas, le temps et la charge de travail sont équivalent.
  2. l’équipe a réalisé le sprint plus tôt que prévu: Ici, le périmètre a été sous évalué. L’équipe peut en profiter pour réduire de la dette technique (je ne relance pas le débat du pourquoi il existe une dette). Sinon, l’équipe pourrait prendre un nouvel item priorisé dans le backlog. Il n’est pas certain que l’item choisi soit le plus prioritaire. Ce choix dépendra du poids des stories et du temps disponible avant la fin du sprint. Avec un sprint balisé par le périmètre, l’équipe aurait terminé avec le dernier item planifié. Du coup, elle serait prête à démontrer leur réalisation et à planifier le prochain sprint.
  3. l’équipe n’a pas terminé le sprint parce que l’un de ses items était sous-évalué ou une contrainte inconnue est apparue: Mis à part le fait que l’équipe ne gagne pas ses points et qu’ils ne peuvent pas démontrer la story, il reste le problème de terminer le travail. De mon expérience, le product owner choisi habituellement de finir la story au sprint suivant. Mais pas toujours. Du coup, le projet s’endette avec un lot de “in-progress”. Si le sprint était balisé par le périmètre, l’équipe aurait terminé l’item avant de passer au prochain sprint.

Le but d’un sprint balisé par le périmètre n’est pas de réussir le lot en temps, mais de réussir le lot. Et pour mesurer la vélocité, on n’utilise plus l’unité du sprint, mais plutôt les features.

La séance de planification

En adoptant des sprints balisés par un périmètre, la séance de planification se modifie. Le but n’est plus de “remplir” des semaines de travail avec des items prioritaires mais plutôt de déterminer le prochain lot d’items prioritaires. Le résultat est semblable, parce qu’on se base sur des critères similaires: une charge de travail prévisible et réalisable que l’on puise dans un backlog priorisé.

Le client perdra l’impression d’avoir à combler tout le temps disponible du sprint. De mon expérience, lorsqu’il reste quelques points à planifier dans un sprint, le PO cherche à les combler avec de plus petite stories, parfois moins prioritaires. Même dans le cas où l’on offre une tranche de points (e.x. 35 à 45 points), le client est tenté de s’approcher le plus possible de la borne supérieure. C’est normal, puisqu’on lui présente le sprint comme un récipient à remplir d’items. En retirant la contrainte de temps, je pense qu’il est plus facile pour le PO de se limiter à ses priorités.

ROI

En balisant les sprints par le périmètre, l’estimation ne sert plus à mesurer la capacité de l’équipe ou à mesurer la progression d’un projet. Mais pour planifier son sprint, le client a toujours besoin de stories estimées pour faire ses choix en fonction de la priorité et du coût de développement. Cette estimation doit provenir d’une lecture des stories par l’équipe de développement.

La séance d’estimation semble donc toujours nécessaire pour la planification. De plus, elle est un bon moment pour augmenter le lien de collaboration entre lui et les développeurs et donner une vision à ces derniers des prochains travaux, pour leur permettre de réussir le sprint courant, avec l’objectif de réussir le prochain.

Comment réduire le coût tout en gardant les avantages de ces séances. Une solution est d’éliminer l’échelle numérique. Le problème avec une échelle numérique, c’est qu’elle permet toujours de faire des calculs et amène forcément à la planification chiffrée. C’est la même argumentation lorsqu’une équipe choisi d’évaluer en jour idéal ou en story points.

Certaines équipes utilisent plutôt un échelle T-Shirt pour évaluer les stories (e.g. S, M, L, XL). A priori, c’est suffisant pour informer le client, et assez précis pour générer des discussions entre les membres de l’équipe et le client. C’est Fibonnacci sans les chifffres!

Pour aller plus loin: le Kanban

Sans entrer dans le détail, cet article explique comment le taskboard de la méthode Scrum est une simplification du kanban.

There is a strict discipline of running Kanban, called “six rules of Kanban”:

1. Customer(Downstream) processes withdraw items in the precise amounts specified on the Kanban.

2. Supplier(Upstream) produces items in the precise amounts and sequences specified by the Kanban

3. No items are made or moved without a Kanban.

4. A Kanban should accompany each item, every time.

5. Defects and incorrect amounts are never sent to the next downstream process.

6. The number of Kanbans is reduced carefully to lower inventories and to reveal problems.

En résumé, le kanban est un modèle “pull”. Dans un contexte de développement, l’entrée dans la chaine peut être le client qui a un besoin de features. Le client (Downstream) “pull” de l’équipe de développement (Upstream) un lot de feature à livrer (Withdraw). Ensuite, l’équipe fait un “pull” dans le backlog pour obtenir les specifications des items du kanban. La granularité du kanban pourrait être un sprint ou tout simplement une feature.

C’est étrange de considérer le Scrum comme une chaîne puisque le responsable des entrées et sorties de l’équipe de développement dépendent de la même personne: le PO. Mais nous répondons quand même au grand principle: le PO tire un sprint planifié de l’équipe de développement, qui elle même tire ses spécifications d’un backlog en amont de la chaîne. Lorsque le lot est terminé, on en tire un nouveau sprint de l’équipe de développement.

La différence entre le Scrum et le Kanban, c’est que le withdraw (kanban) n’est pas timeboxé et que le sprint (scrum) est timeboxé. En retirant la notion d’estimation et de sprint balisé par le temps, on s’approche beaucoup plus du modèle Kanban: produire à la demande au lieu de pousser des sprints à terminer. Au final, c’est le même logiciel, mais la mentalité lors de sa réalisation et la collaboration avec le client est différente.

Si on pousse plus loin, on peut même supprimer la notion de sprint et alimenter l’équipe directement avec le backlog. Avec 6 développeurs travaillant en paires, on peut considérer qu’on a trois boîtes de travail. Par sa priorisation, le client demande la livraison de 3 features. L’équipe vide ses boîtes au fur et à mesure qu’elles se remplissent. Pour éviter les temps d’attente à la livraison d’une feature, on peut prévoir une queue un peu plus grande, maintenue en continue par le PO.

La vélocité se mesure par la moyenne de temps nécessaire pour qu’un item du backlog traverse la chaîne de livraison. On peut vérifier la progression du projet en comparant à un moment t les items restant du backlog avec la vélocité.

Chez OLM, ce modèle aurait pu nous aider à mieux satisfaire le client: des stories avaient souvent des pré-requis dépendant d’entités externes, qui allaient se résoudre pendant le sprint, mais qui ne peuvaient pas attendre les trois semaines prévues par le sprint pour être commencées. Avec un modèle “pull”, une fiche aurait été élligible au développement dès que sa spécification aurait été complète et ses pré-requis résolus.

En résumé

L’estimation est un processus coûteux qui peut prendre une forme plus légère, par exemple en estimant sur une échelle T-Shirt. Comme l’estimé ne peut plus servir à mesurer la capacité d’une équipe dans le temps, on peut remettre en question la durée du sprint: pourquoi ne pas se limiter au périmètre au lieu de baliser le sprint dans le temps.

En théorie, l’équipe ne travaillera pas plus vite. Mais en réduisant le temps des séances d’estimations, elle aura plus de temps disponible au développement. Les séances de planification seront axé sur le livrable, en retirant la notion de combler la boîte de temps

Pour faire le suivi d’un projet, on mesurera le temps moyen de réalisation des features pour faire des prévisions avec les items restant du backlog.

En poussant plus loin, on peut réduire la planification à une queue de production, au lieu d’utiliser le sprint comme unité d’entrée à l’équipe de développement.

  • Share/Bookmark
Categories: Agile Tags: