[Gestion de projet] Changement de cap en cours de projet

Bonsoir,

Dans le cadre scolaire j’ai été amené à faire un projet en groupe (4 personnes) afin d’utiliser des outils de gestion de projet (Gantt et compagnie). Le but est principalement de nous confronter à une situation réelle, avec un diagramme de Gantt et un cahier des charges réalisé en début de projet.

Tout ne s’est pas passé comme prévu, la partie programmation a été relativement plus “hardcore” que nous le pension. En plein milieu du projet nous avons donc tentés de réagir, avec un changement d’équipes (affectations par rapport aux compétences et non plus par rapport aux envies) et une nouvelle planification à la clef.

A l’heure actuelle, le rapport est en cours de rédaction et le projet est loin d’être terminé. D’un point de vue gestion de projet je trouve qu’il est plus intéressent de s’être retrouvé face à une situation semi-catastrophique plutôt qu’à une situation linéaire : plus de choses à dire pour le rapport et plus de changements pour essayer de tenir les délais.

Existe-t-il des outils relatifs à l’organisation/gestion qui permettent de modéliser clairement les changements de cap effectués sur un projet ?

Salut,

Quand tout est perdu, il reste la méthode infaillible.

La-rache.
(pardon)

En plus constructif, et on va surement me cracher dessus, si en cours de route tu dois changer plus que de raison ton appli, autant tout jeter et passer dans une méthode a cycle court type Extreme Programming ou Agile, qui seront plus adaptés a finir l’appli sans avoir a refaire tout un cahier des charges.

Je crois que Square Enix est en train d’en développer un, il sortira dès qu’ils en seront contents.

heu. On parle bien de l’éditeur de jeux ou c’est de l’humour ? :blink: :smiley:

Je te sens joueur aujourd’hui genji :slight_smile:

En même temps, gantt et la gestion de projet classique a tendance a être un peu mise de coté par des méthodes plus adaptées au développement logiciel.
Jettes un �?il du coté des méthodes Agile et Scrum, qui permettent d’avoir une plus grande réactivité en cas de soucis de ce genre.
Dans tout les cas, je comprends pas trop ce que tu demandes quand tu dis

Si tu pouvais développer un peu plus ce que tu cherches, on pourrait ptet mieux t’orienter :slight_smile:

En gros je voulais savoir comment opérer un changement radical dans une planification qui était quasi-certaine d’être respectée d’après un cahier des charges relativement détaillé, et l’Extreme Programming a l’air de coller à la situation.

Questions justifications du passage d’une méthode à une autre, citer les signes de gros retard prévisible peut être suffisant ?

Ya des tonnes de justifications evidentes. Pour moi, c’est l’integration du retour utilisateur le plus tot possible, la reactivité et la flexibilité du developpement. Sans compter effectivement un potentielle meilleure planification, un temps de developpement raccourci et une meilleure gestion des couts. Entre autres, toujours. Apres, pour operer un changement radical comme ca, je sais pas si ya une seule maniere de proceder. Ca va dependre du job, de l’equipe, du milieu, des delais, des couts, etc.

Si j ai compris, tu ne cherches pas a rattraper ton projet mais à representer le cours du projet pour tenter d expliquer le pb. Le mieux pour moi est de representer le planning initial en mettant en avant les zones avec effet tunnel (longue periode sans visibilite sur l avancement de la tâche), et tout ce qui est chemin critique, marge totale etc…
Concenant les methodes agile, elles permettent effectivement une meilleure visibilite le long du projet, par contre, elles demandent une rigueur qui me semble bien plus forte.

Ce que tu cherches s’appelle un “tableau de bord”.
On y expose le périmètre du projet, les dépenses en charges, les courbes d’avancement, les actions à prises ou à prendre, les risques liés à tel ou tel point du périmètre …
PM moi si tu veux qu’on en parle.

Sur un diagramme de Gantt tu représentes ta dérive par le chemin critique : si tu as un chemin critique réel plus long que le chemin critique théorique, tu as débordé.

Les mauvaises solutions pour récupérer un projet en dérive :

  • ajouter du monde (ça porte un nom dont je ne me souviens plus, ça fait une courbe efficacité = f(nb. de ressources) qui stagne assez vite puis commence même à descendre) : plus il y a de monde, plus la gestion des ressources et des conflits et de l’intégration prend du temps ;
  • repousser les deadlines (tu le fais une fois, tu le fais deux fois… et tu n’en vois jamais la fin) ;
  • vouloir garder toutes les fonctionnalités à tout prix : plutôt que d’avoir une vraie base d’application fonctionnelle, tu vas avoir un truc très très buggé.

Les solutions envisageables en monde réel :

  • passer en méthodologie Agile, récupérer les spécifications comme un backlog de tâches et les prioriser pour aller le plus vite possible à l’essentiel et à quelque chose qui fonctionne (même si ça n’est pas l’usine à gaz qui était prévue) ;
  • sans passer en Agile, refaire le diagramme de gantt pour vérifier quel est le nouveau chemin critique si des fonctionnalités sont abandonnées (pour valider un nouveau planning qui soit tenable cette fois-ci) ;
  • prendre une ou deux ressources en plus mais qui ne travailleront que sur la rédaction des tests unitaires et sur l’intégration technique, càd compilation, déploiement d’environnements, lancement des tests dans l’usine d’intégration, snapshots de base de données etc. (pas besoin de trop monter en compétence sur le fonctionnel, mais ça décharge beaucoup les développeurs).

AMHA.

Le grand nom du libre en tableau de bord machin, c’est redmine qui possède plusieurs plugins, dont certains trucs qui collent plus aux méthodes agiles. (sauf que ce que j’ai testé ne marchait pas).

Pour revenir aux méthodes agiles, tu mets juste le client face à ses responsabilités. Grosso modo tu fais des itérations courtes pour réaliser une fonctionnalité et tu as un retour très tôt en faisant tester la petite partie rapidement.

Après il y a pleins de pratiques plus ou moins loufoques comme le poker planning game (je crois). En gros, au lieu de ne réunir que le chef de projet qui n’a pas compris le problème, tu réunis tout le monde et tu listes les points un par un. Et chaqu’un doit lever une carte pour noter l’importance du point. Comme en patin à glace. Ce qui permet de définir les priorités effectives.

Après le débat persiste entre “je dérange pleins de monde souvent” vs “je dérange un gars une fois”, la fréquence des réunions, des conversations téléphoniques. Mais les gens apparentent ça à la construction d’une maison, avec plusieurs acteurs, et plusieurs meetings pour des éléments différents.

Redmine c’est caca. Ultra buggé, lent, inefficace, pas toujours super stable, sans compter les plugins codés avec les pieds, qui sont la uniquement pour te faire miroiter plein de choses et qui finissent uniquement par te rajouter des problemes. C’est pas evolutif, c’est codé dans un langage de merde, avec une archi pas top et limite imbitable. Perso, a fuire comme la peste. (Pour info, on est 15 dessus depuis 2ans, et la, on change parce qu’on en peut plus). Et ca fait quand meme plus bugtracking que planning et co.

Le meilleur tableau de bord qui soit reste un bon tableau blanc et des bristols/post-it. La flexibilité, la facilité d’utilisation et le côté systématiquement disponible et visible de l’info peut que souffrir d’un passage à un outil informatique.

La fameuse réalité que décrit tes profs à base de diagramme de Gantt n’existe tout simplement pas, et ça me fait penser à ce billet qu’à écrit un de mes collègues il y a peu
Refaire/faire un diagramme de Gantt semble être un gaspillage au sens ratio valeur/effort, car on passe beaucoup trop de temps à ne pas produire de valeur dans le logiciel final. On veut avoir un logiciel qui fonctionne à la fin, pas une pile de documentation. C’est pourquoi les méthodes agiles proposent un modèle qui s’adapte au changement plutôt que de vouloir suivre un plan obsolète dès son impression. Pour accepter le changement régulièrement, il faut plusieurs choses:

  • énormément de communication et de feedback
  • des pratiques de développement en béton
  • des valeurs partagées

Dans cette approche, l’équipe de développement chiffre, car elle seule peut connaître le coût de chaque fonctionnalités, et le client priorise en fonction de la vélocité.
Du coup ce n’est pas qu’on en fait pas de plan, c’est qu’on le met à jour tout le temps en fonction des aléas du projet, pour ainsi avoir une vision le plus juste possible de ce que le client pourra avoir et quand. Des pratiques comme le planning poker est a ce jour la meilleurs façon qui soit d’obtenir une estimation juste issue de l’équipe.

Le développement d’un logiciel est un problème complexe par définition, à savoir qu’il est impossible de connaître la meilleure solution avant de l’avoir implémentée. Face à ce genre de cas, une méthode empirique comme l’agilité est la plus adaptée. Les méthodes prédictives ne sont pas mauvaises, c’est juste qu’elles ne sont juste pas du tout adaptées au développement d’un logiciel, et vice-versa, les méthodes empiriques ne sont pas du tout adaptées dans d’autres circonstances. Une bonne vidéo là dessus (en anglais) ici et un résumé en français lui,

Pour avoir une solide base sur ces questions, sans se baser sur des “j’ai entendu dire que”, je conseil vivement la lecture pour commencer d’eXtreme Programming explained. Je suis assez d’accord d’ailleurs avec une des premières phrases du livre : “XP is about social change”. L’agilité va au delà de simplement réussir ou pas un projet. Il s’agit de proposer un modèle qui fonctionne non seulement mieux, mais qui en plus se base sur le respect et la communication. C’est une réponse réaliste et viable à la crise du logiciel, qui touche non seulement les clients qui ont des logiciels trop chers et trop tard , mais aussi les développeurs et les dérives des SSII.

Haha j’adore :). Bienvenue dans le monde reel! Regarde bien comment tu rames et comment t’as pas assez de resources pour finir ton projet et comment les resources que tu croyais avoir se sont lamentablement plantees dans leur prediction de temps et de couts, c’est probablement l’experience de tes etudes qui sera la plus constructive pour ton futur! Lit aussi http://en.wikipedia.org/wiki/The_Mythical_Man-Month tout est pas a prendre comme la bible mais y a du bon, surtout pour 1975…

Ha ouai et aussi: Gantt c’est de la merde en barre, commencer n’importe quel projet par un diagrame de Gantt ou autre methodes “waterfall” (surtout utilise naïvement ou encore pire après avoir communique le diagramme au client) c’est la methode la plus sure pour shipper en retard un truc a moitie fini qui marche mal… Y a plus que les dinosaures qui ont jamais bosse en vrai ou qui en ont rien a battre de doubler le cout de n’importe quel projet qui font encore du waterfall. Et les idiots aussi, parce que y en a quand meme plein des idiots (special dédicace a certains collègues, ils se reconnaîtront…).

C’est sur que le gantt c’est le meilleur moyen de se planter et de finir en retard. Mais comment estimes tu ton temps quand le client te demande un délai?

[center][/center]
:wink:

Je rigole un peu quand je vous lis. Sorry mais un gant c’est rien d’autre qu’un diagramme… Pas une métho… C’est un peu comme de dire qu’UML est une méthode.

Passer à une méthode agile (qui ressemble un peu à un waterfall miniature, hein faut pas non plus croire que ça réinvente tout), ca n’empêche pas de planifier au contraire. Une méthode agile sans une rigueur quotidienne c’est aller dans le mur… Sauf que tu le sais encore plus tard parce que tu espères (du fait du manque de planification) toujours te refaire sur l’itération (sprint) suivant.

Perso je commence a avoir vu passé pas mal de projet dans la boite. Je plussois que le waterfall (dit cycle en V en bon français) est inadapté pour une réactivité sans faille. Maintenant si le client d’appliquer cette métho, pas trop le choix hélas. Un moyen de s’en sortir est de passer sur une logique incrémentale avec livraison progressive des features… A la différence de l’extreme programming, le cahier des charge ne bouge pas trop.

Je comprend pas trop la question. Modéliser un changement de cap ? Y’a pas à modéliser, suffit juste de l’expliquer. Ensuite que tu le fasses par un tableau de bord (ahhh le dashboard avec les ouates milles indicateurs) ou par quelques planches, libres à toi. Le tout est de mettre les infos essentielles. Vu que tu fais un rapport, finalement voit le comme ce que l’on appelle dans ma boite un bilan de fin de lot… En gros tu y fait l’historique de ce qu’y s’est passé, les bonnes méthodes, les erreurs… L’objectif étant de capitaliser l’expérience acquise.

[quote=“Oshimura, post:7, topic: 52039”]
En gros je voulais savoir comment opérer un changement radical dans une planification qui était quasi-certaine d’être respectée d’après un cahier des charges relativement détaillé, et l’Extreme Programming a l’air de coller à la situation.

Questions justifications du passage d’une méthode à une autre, citer les signes de gros retard prévisible peut être suffisant ?
[/quote]

Ahhh je complète puisque j’ai la réponse à ma question (/me apprendra à lire le fil correctement).

Franchement l’XP ne t’assureras rien… Si l’XP était LA solution à tous les problèmes il y aurait longtemps que tout le monde y serait passé. Il n’en est rien. l’XP est une approche qui permet notamment de donner une certaine flexibilité pour s’adapter à des specs changeantes. Visiblement ce n’est pas ton cas. Donc vu de loin, pas d’intérêt.

Perso déjà si tu sors un planning sans marge, laisse tomber c’est mort. Pour qu’une équipe soit motivée à atteindre son objectif il faut qu’elle y croit. Et un planning sans marge c’est s’assurer dès le moindre écart d’une démotivation de l’équipe car les jalons vont à nouveau se perdre dans les couloirs du temps.

A mon avis justifier le changement de méthode par un signe de gros retard n’est pas suffisant. Si le projet est en retard il faut prendre un peu de temps pour analyser les causes du retard (qui n’est qu’une conséquence). Un planning c’est pas fait uniquement pour organiser, c’est aussi pour mesurer et piloter.

Le retard peut être du à plusieurs causes, quelques exemples parmi les grands classiques :

  • mise en place tardive des ressources (la personne prévue pour une tâche n’était pas dispo)
  • difficultés techniques (==> besoins de formation qui n’étaient pas identifiées)
  • entrées critiques en retard (moyens, documents)
  • spécifications pas claires ou insuffisantes engendrant des allers retours incessants avec le client, voire l’injection de nouvelles specs non prévues.

Une fois que tu aura compris à quoi est du le retard, il sera plus facile de justifier le changement de cap. Attention, la question piège pourrait être aussi de savoir pourquoi le retard n’a pas été tout simplement annoncé… Car changer de cap a un coût sur un projet… Il faut donc jongler entre la priorité au délais ou aux coûts.

Bienvenue en enfer :devil:

de ma propre experience quand un projet diverge trop il n’y a qu’une seule methode qui marche :

  1. cloture du projet en cours
  2. reattribution des objectifs d’equipes chacune sur son retex
  3. analyse du retex sur les causes d’echecs (equipe , gestion, objectifs, marché, etc…)
  4. redefinition des objectifs en fonction du retex pour le nouveau projet
  5. Reaffectation des taches des equipes ( recrutement si necessaire sur ressources manquantes identifié d’apres le retex)
  6. Reemision du nouveau cahier des charges du nouveau projet ainsi que le planning.
  7. ca repart comme en quarante.

Cela dit je reponds peut etre pas à ta question , car un projet qui diverge est un projet echoué à mon sens.

Merci pour vos réponses, j’ai maintenant les idées un peu plus claires (et pas mal de lecture :P) !