Principe n°3 – Les besoins évoluent, mais les délais sont fixes.

août 16
2008

Ceci est un des contrastes frappant avec un projet de développement traditionnel, où un des premiers objectifs est de capturer toutes les exigences connues et leur champ d’application et que toute modification doit être suivie d’une conduite du changement.

Traditionnellement, les utilisateurs sont éduqués qu’il est beaucoup plus coûteux de changer ou d’ajouter des exigences pendant ou après la phase de développement du logiciel. Certaines sociétés citent quelques statistiques impressionnantes destinées à effrayer les utilisateurs. Il devient donc impératif d’inclure tout ce qu’ils peuvent penser – en fait tout ce qu’ils ont toujours rêvé !

Et qui plus est, il est important de le faire lors de la première version du logiciel, parce que nous savons tous que la phase 2 est toujours difficile à obtenir, une fois approuvée 80% des dépenses ont été réalisés de la phase 1.

Ironiquement, les utilisateurs utilisent seulement une infime partie de tout logiciel, plus ou moins 20%. Mais de nombreux projets commencent leur vie avec une portée pléthorique. En partie, parce que personne ne sait réellement qu’elles seront les 20% du produit qui seront réellement utilisés par l’usager. De même, même si les exigences sont soigneusement analysées et traitées en priorité, il est impossible de penser à tout, les choses changent, et les choses sont comprises différemment par des personnes différentes.

Le développement Agile travaille sur un principe complètement différent. Le développement Agile fonctionne sur le principe que les besoins apparaissent et évoluent. Quelques que soient les analyses et conceptions que vous faites, ce sera toujours le cas parce que vous ne pouvez pas vraiment être sûr de vous jusqu’à ce que vous utilisez le logiciel. Et le temps que vous avez passé en phase d’analyse des besoins et de conception, les conditions extérieures ont peut-être changé.

Donc, si vous pensez que personne ne peut réellement imaginer ce que sera la solution finale en début de projet – il est intrinsèquement difficile, voire pratiquement impossible, de construire la bonne solution en utilisant une approche traditionnelle de développement.

Les méthodes de projet traditionnelles combattent le changement, avec des processus de contrôle du changement visant à minimiser et à résister au changement dans la mesure du possible. En revanche, les projets de développement Agile acceptent le changement, en fait, ils l’attendent et l’évaluent. Parce que la seule chose qui est certaine dans une vie, c’est le changement.

Il existe différents mécanismes dans le développement Agile pour gérer cette réalité. Dans les projets de développement Agile, les besoins sont autorisés à évoluer, mais le calendrier est fixe. Donc, pour inclure un nouveau besoin, ou pour modifier une exigence, l’utilisateur ou le directeur de produit doit retirer du projet une charge de travail comparable afin de tenir compte de ce changement.

Ainsi, l’équipe peut continuer à se concentrer sur les délais, et le produit permet d’évoluer dans la bonne direction. Toutefois, il faut aussi présupposer qu’il y a suffisamment de fonctions optionnelles prévues dans le projet pour permettre ces changements, cela doit se faire sans compromettre fondamentalement le produit final.

Mais qu’est ce que l’entreprise pour attendre de ses équipes de développement ? Délivrer le logiciel dans les délais et le budget prévus dans le contrat, et bien sûr avec une qualité acceptable. Tous les professionnels du développement sont bien conscients que vous ne pouvez pas de manière réaliste résoudre tous ces facteurs et espérer répondre aux attentes. Quelque chose doit être variable pour la réussite du projet. En développement Agile, il existe toujours un champ d’application (ou des caractéristiques du produit) qui est variable, le coût et le calendrier ne doivent pas l’être.

Bien que la portée d’un projet de développement Agile est variable, il est reconnu que seule une fraction d’un produit est réellement utilisée par ses utilisateurs et donc une partie des fonctionnalités d’un produit n’est pas vraiment indispensable. Pour pratiquer cette philosophie de travail, il est impératif de commencer le développement par le noyau, et par la suite avec les cas d’utilisation qui ont la priorité la plus élevée, en s’assurant qu’ils sont livrés dans les temps.

Dans cette méthode, nous favorisons le CRI (Conception – réalisation – Intégration) par itérations. Chaque itération terminée, peut-être livrée pour que le client final puisse valider le contenu de l’itération. Cette méthode permet rapidement d’avoir un état des lieux de la charge consommée et celle restant pour satisfaire au besoin.

Principe n°2 – L’équipe Agile doit être responsabilisée

août 16
2008

Une équipe de projet de développement Agile doit inclure tous les membres de l’équipe qui doivent prendre des décisions, et les rendre dans les temps.

La participation active des utilisateurs est un des principes clés. L’utilisateur ou le représentant de l’entreprise doit être étroitement associé sur une base quotidienne.

L’équipe de projet doit être habilitée à prendre des décisions afin de s’assurer qu’il est de leur responsabilité de livrer le produit et qu’ils en ont la propriété. Toute interférence avec l’équipe du projet est perturbatrice et réduit leur motivation à livrer.

L’équipe doit travailler ensemble à établir et préciser clairement les exigences, définir les priorités, être d’accord avec les tâches nécessaires pour fournir les besoins, et estimer les charges.

Il peut sembler opportun de se passer d’un niveau de l’équipe au début du projet. Il est tentant d’avoir seulement un sous-ensemble de l’équipe pour commencer (genre le directeur de produit et l’architecte) , car cela est beaucoup plus efficace.

Toutefois, il s’agit d’un principe-clé pour moi ! Faire participer l’ensemble de l’équipe dès le début du projet. Cette méthode assure la participation et l’engagement de toute l’équipe de projet dès le départ, quelque chose qui paie par la suite.

Lorsqu’un défi se pose tout au long du projet, l’équipe se sent un réel sentiment d’appartenance. Si cela peut sembler couteux. Il faut y penser dès la négociation avec le client et lui faire comprendre l’importance.

Un projet c’est avant tous des hommes avant même les méthodes, une équipe soudée est souvent plus importante qu’une méthode de projet, car elle se sent impliquée.

Principe n°1 – La participation des utilisateurs de manière active est impérative

août 16
2008

Dans la suite de mon billet sur « 10 principes clés pour le développement Agile ». voici le premier principe. Bonne lecture !

Principe Agile 1: La participation active des usagers est un impératif

Le premier principe est la participation active des usagers dans le développement agile.

Il n’est pas toujours possible que les usagers soient directement impliqués dans les projets de développement, en particulier si le projet de développement Agile est de créer un produit où les utilisateurs seront des clients externes ou des consommateurs.

Dans ce cas, il est impératif d’avoir un sénior qui a une très bonne connaissance du besoin métier et qui agit comme le représentant des utilisateurs.

Vous n’êtes pas convaincu ? Voici 16 raisons :

  • Les exigences sont clairement communiquées et comprises (à un niveau macroscopique) dès le début du projet.
  • Les exigences sont positionnées en priorités selon les besoins de l’utilisateur et du marché.
  • Les exigences peuvent être clarifiées sur une base quotidienne avec l’ensemble de l’équipe de projet, plutôt que de recourir à de longs documents qui sont difficiles à lire ou qui seront mal compris.
  • Les nouveaux besoins peuvent être pris en compte dans le calendrier de développement de manière appropriée, en vérifiant l’impact et avec un arbitrage des décisions qui soit clairement compris par tous.
  • Le produit est livré.
  • Le produit à livrer à la fin de chaque itération, et les itérations répondent bien aux attentes des utilisateurs.
  • Le produit est intuitif et facile à utiliser.
  • L’utilisateur ou l’entreprise est considéré comme un acteur intéressé par le développement sur un plan quotidien – L’utilisateur ou l’entreprise voit l’engagement de l’équipe.
  • Les développeurs sont responsables, tous les jours, il partage les avancées de manières transparentes avec l’utilisateur ou l’entreprise.
  • Il est d’une transparence totale, car il n’y a rien à cacher.
  • L’utilisateur ou l’entreprise partage les responsabilités pour les questions qui se posent dans le développement, ce n’est pas une relation client-fournisseur, mais un travail d’équipe.
  • En temps voulu les décisions peuvent être prises, concernant les fonctions, les priorités, les questions, et en relation avec les utilisateurs ou l’entreprise.
  • La responsabilité est partagée, l’équipe dans son ensemble est responsable de la livraison du produit.
  • Les individus doivent rendre des comptes, ils doivent faire un point sur leur travail et sur eux-mêmes lors des réunions quotidiennes
  • Dans les moments difficiles, toute l’équipe – commerciales et techniques – travaille ensemble!

10 principes clés pour le développement Agile.

août 16
2008

Après diverses discussions au sujet d’Agile au sein de LINAGORA, j’ai décidé d’écrire un petit billet pour expliquer les principes du développement Agile. Pour ce faire, je me base sur les 10 principes du développement Agile. Par la suite, je pourrais détailler chaque principe dans des billets différents.

Qu’est-ce qu’Agile ? À part une nouvelle méthode pour faire de la gestion de projet de développement ! Tout d’abord, Agile est fondamentalement différent des méthodes de projets de développements traditionnelles sur les points suivants :

  1. La participation des utilisateurs de manière active est impérative
  2. L’équipe doit être autorisée à prendre des décisions
  3. Les besoins évoluent, mais les délais sont fixes
  4. Des besoins macro, léger et visuel
  5. Des petits développements, itératifs et des livraisons incrémentales
  6. Concentrez-vous sur la livraison fréquente des fonctionnalités
  7. Compléter une fonction avant de commencer une autre
  8. Appliquer la règle du 80/20
  9. Les tests sont intégrés dans tout le cycle de vie de projet – Tester très tôt et souvent
  10. Une approche en collaboration et coopération entre tous les collaborateurs est essentielle

Il y a diverses méthodes et standards qui adressent les divers aspects du développement logiciel, par exemple PRINCE2 pour la Gestion de projet, utiliser UML pour l’analyse et la conception, ISEB pour les tests, etc. Bien que ceux-ci soient typiquement appliqués aux projets de développement en cascade, les éléments de ces méthodes peuvent aussi être appliqués dans une approche de développement Agile.

Il y a aussi les méthodes qui sont spécifiquement conçues autour du Développement Agile :

DSDM : est probablement la méthode originelle du développement Agile. DSDM (Dynamic systems development method) était présent avant que le terme le Développement Agile est été même inventé, il est basé sur tous les principes qui sont connus dans le développement Agile

SCRUM : est aussi une méthode de développement Agile qui se concentre notamment sur la façon de gérer les tâches au sein d’une équipe axée sur l’environnement de développement.

XP (eXtreme Programming) est la plus radicale des méthodes Agile, en se concentrant sur le processus de développement logiciel et l’analyse, le développement et les phases de test avec de nouvelles approches en vue d’apporter une différence substantielle à la qualité du produit final.

DSDM est probablement la plus complète des méthodes Agile, alors que SCRUM et XP sont plus faciles à mettre en œuvre et sont complémentaires, car elles abordent différents aspects des projets de développement et sont à la fois fondées sur les mêmes principes de développement agile.

En réalité, il n’y a pas de méthode magique pour le développement logiciel. La meilleure approche est de connaitre un tas de techniques provenant des méthodes en cascade et des méthodes de développement Agile et de choisir un mélange des meilleures techniques qui sont les plus appropriées pour n’importe quelle situation donnée. La réussite exige un très bon niveau d’expérience et de compétences.

Dans des projets de développement Agile, la gestion de projet prend une forme légèrement différente, comptant plus sur les compétences du chef de projet pour la communication, la facilitation et la coordination et en soulignant moins la planification et le contrôle. Le développement agile peut être très passionnant et excitant, bien que certains projets conviennent mieux au développement Agile plus que d’autres. La collaboration et la visibilité peuvent fournir une expérience beaucoup plus riche et plus utile pour les équipes qui développent des grands logiciels. Le développement Agile peut être beaucoup plus agréable que l’approche en cascade qui exige beaucoup plus de documentation et est moins souple par sa nature. Et quand les gens aiment leur travail, c’est incroyable ce qu’ils peuvent réaliser.

Attention : les prochains billets expliqueront un par un les 10 points clés du développement Agile.

Investir dans le PMO

août 16
2008

Déjà entendu parler de PMO ? du Project Management Office ou de la cellule de pilotage projet ?

Vous en avez compris que c’était tout juste un groupe de personne qui contrôle les chefs de projet en terme de budget, délai et respect des divers autres processus mis en place par l’organisation pour sa gestion de projet.

Les structures projets françaises ont pour défaut de ne pas avoir, encore une fois, pris la mesure du rapport investissement stratégique / bénéfice long terme. Il est pourtant simple d’investir dans de bonnes pratiques, dans des procédures fiables, de les faire appliquer, mesurer leur efficacité et les aménager pour augmenter leur portée !

En gestion de projet le Standish Group nous apprend dans son étude « Chaos Study » que les projets au niveau mondial dépassent en moyenne leur budget de 43%. Voila, l’investissement annuel que pourrait faire une entreprise (enlevons une petite marge de sécurité parce que même avec un PMO il y a toujours des surprises).

Or dans les PMO que j’ai côtoyé je constate que :

  • Les intervenants ont peu d’expérience en gestion de projet et beaucoup sont des juniors qui cherchent une première approche de l’activité projet
  • Les référentiels n’existent que rarement, et souvent à des fins de certification affichable face au client qu’il soit interne ou externe, quasiment jamais pour unifier les pratiques
  • La visibilité et le partage de pratiques sont dépréciés par le pré carré et l’individualisme politique de chaque petit chef (c’est mon truc, ça fait 20 ans que je fais comme ça, c’est mon avancement…)
  • L’intervention du PMO n’apporte pas de valeur ajoutée et se contente d’être comptable (respect du budget et des délais) ; pas de retour d’expérience, peu d’analyse et de recherche d’amélioration ; du pilotage au rétroviseur !

L’investissement premier c’est la compréhension de ce que peut amener un PMO :

  • Une assurance qu’une méthode est appliquée rationnellement, de manière unifiée dans l’entreprise,
  • Ensuite, une analyse fiable et cohérente du portefeuille projet (délais, qualité, coûts et risques),
  • Puis une vigilance par rapport à la stratégie d’entreprise : les délais, les coûts, le périmètre sont-ils toujours dans la norme fixée ?
  • Enfin, une amélioration constante des pratiques, de la sécurisation du taux de succès.

Dans ce que peut amener un PMO il n’y a jamais le flicage et la dénonciation. Dans un PMO on se doit de penser maîtrise, support, valeur ajouté au service de la stratégie et des projets. Le vrai PMO se construit à la Deming : Plan Do Act Check, une élaboration itérative de la performance et de la maitrise.

Buts recherchés d’une organisation institutionnalisant le PMO :

  1. . Modèle de gouvernance et processus définis : 44%
  2. . Alignement stratégique (projet/entreprise) : 32%
  3. . Utilisation des métriques pour l’amélioration et la croissance : 14%
  4. . Accroissement de la performance de l’équipe : 11%

Le second investissement c’est l’homme, la compétence. Pour surveiller un projet il suffit d’être espion, délateur, calculateur. Pour maîtriser un projet et aider à son succès il faut avoir vécu le projet, ses ambiguïtés, ses difficultés, la psychologie inhérente. Il faut savoir partir de rien, se référer à des analyses, à des exemples, tester, revenir en arrière et recommencer. J’irai même plus loin : contourner les règles établies pour s’assurer le succès et faire parvenir à les transformer pour améliorer l’avenir.

Seules des ressources formées, conscientes, sachant, expérimentées peuvent tirer les projets vers le haut et conférer au PMO une activité à valeur ajouté. Vous avez fait un peu de Java à l’école ? Est-ce que pour autant vous êtes intervenus en expertise sur un code dans ce langage ? A 99% non ! Vous avez d’abord « pissé du code », transpiré sur votre environnement de développement, acquis des réflexes et affronté des difficultés !

En gestion de projet c’est pareil ! Il ne faut pas maîtriser que la gestion (i.e. les chiffres), mais aussi le mode projet. Et là c’est l’expérience qui compte.

Un project Management Officer ne peut aider à l’atteinte de la stratégie que s’il la comprend, s’il sait la modéliser en actions avec les chefs de projet. Mais il doit aussi comprendre le mode de fonctionnement psychologique du chef de projet : gagner coûte que coûte le succès du projet et ne pas hésiter sur les moyens à mettre en œuvre, préserver ses ressources…

Le troisième investissement c’est l’outillage. Un bon PMO, après être rentré dans ses critères de bénéfices doit s’améliorer, faire de la qualité. A la façon de CMMI : une montée en qualité itérative, par brique.

Ce qui doit être rodé ce sont les processus, le système d’information (au sens partage de l’information). L’outillage vient en complement pour automatiser les processus, favoriser la mutalisation des méthodes.

Un processus doit être unique et accepté par tous. Par exemple l’un des PMO que j’ai connu avait un cycle de planification commun à tous les projets : Une macro-planification, basée sur des méthodes d’estimation gravées dans le marbre et des modèles de plannings, un affinage du périmètre-charges-délais à horizon 3 mois, une ré-évaluation à mi année.

Même processus pour tous, identicité des pratiques, des outils et des modèles, d’où une compréhension générale, un arbitrage facilité, un maîtrise du portefeuille.

Ce troisième investissement est au gout du jour : qui ne parle pas de Clarity (système global de gestion de projet successeur de Niku) ? de EPM (Enterprise Project Management ? de PS-Next ? Ces systèmes, appelés SRM (pour Services Relationship Management) sont les équivalents des ERP pour gérer les projets dans l’alignement stratégique de l’entreprise. Et cette dimension globalisante, cette volonté d’aller de la stratégie du Top Management à la gestion d’un projet est clairement affichée par les noms même de ces produits : Clarity (visibilité), Enterprise (le projet n’est plus un monde à part dans l’organisation), Next (transversalité).

Les deux premiers investissements sont pourtant prioritaires. Autant qu’une phase de conception dans un développement logiciel. Avant la course à l’outil, c’est la course à l’organisation qu’il faut gagner. Et celle-ci coûte plus cher, bouleverse les habitudes et les cultures professionnelles, provoque donc plus de résistance et de difficulté, mais est un préalable nécessaire !

A lire !

Nos recommandations.

Liste des pages

Information générale à propos de ce blog...