Evaluations : faire du pifométrage précis
Quoi de plus difficile que d'évaluer quelque chose que l'on n'a jamais fait !
Autant ça peut être assez simple d'évaluer le temps de construction d'une maison ou d'une voiture qu'on a déjà construit en X exemplaires, autant un projet complexe et nouveau peut conduire à d'importantes dérives.
Voici quelques règles que j'applique et qui permettent de limiter les dégâts :
Le facteur exponentiel :
- Le développement d'une fenêtre de gestion d'un fichier de base peut prendre une heure. On peut en faire 5 ou 6 sur une journée sans trop forcer.
- Le développement d'une gestion "intermédiaire" simple, de type gestion des modes de réglement, peut prendre 1 jour.
- Le développement d'une gestion "avancée", de type gestion clients peut prendre 5 jours.
- Le développement d'une gestion "complexe", de type gestion de facture peut prendre 20 jours.
- Etc ...
Il ne suffit pas d'additionner le nombre de zones et/ou le nombre de fichiers pour obtenir un chiffre cohérent, il faut prendre en compte la complexité. Le codage de cette complexité croit de manière exponentielle. Et plus on va vers des traitements compliqués, plus ce facteur exponentiel est difficilement maitrisable !
Mes pratiques :
Je commence par découper le projet en modules, par exemple : gestion des articles, liste des clients, écriture du fichier pour la comptabilité, etc....
Ensuite j'essaie de voir ce qui peut être réutilisable dans plusieurs contextes et je les transforme aussi en modules : par exemple des listes de recherche, des fenêtres internes de sélection, des requêtes, des traitements, etc...
NOTE : En fait il s'agit de mettre en place la structure du projet découpé en composants. Ce découpage suppose que le Chef de Projets ait une vision globale du projet ainsi qu'une bonne connaissance du langage et de ses possibilités ... ce qui n'est pas toujours le cas.
Puis j'applique à chacun de ces modules une note de complexité allant de 1 à 10 : par exemple 1 pour la gestion d'un fichier de base "tout bête", 2 pour une liste de recherche avec quelques conditions de sélection, 5 pour un module de gestion de clients, 2 pour une requête compliquée, etc...
Ensuite pour chaque note de compexité j'applique une durée (en heures) un peu pifométrique mais basée sur mon expérience d'autres projets, par exemple 5 heures pour une complexité 3.
Puis lorsque l'on commence à développer les modules je reporte ces temps sur les traitements ayant la même note : par exemple 4 heures pour un traitement de complexité 3.
Par la suite si un autre traitement de complexité 3 a pris seulement 3 heures, je fais une moyenne pour les traitements de niveau 3 restant à développer, soit dans ce cas : (3 heures + 4 heures ) / 2 = 3 heures 30. Je reporte ces 3 heures 30 sur les modules de complexité 3 restant à développer.
Je module également ce temps en fonction de la rapidité des développeurs en appliquant un coefficient (par exemple 1,5 pour un développeur débutant ou 0,8 pour Machintruc qui code très vite).
Reste les traitements de complexités élevées dont il est nécessaire de détailler le contenu. Par exemple pour une gestion de facture on aura besoin de 3 listes de recherche (déjà développées), d'une gestion de table pour les articles et d'une procédure un peu complexe de vérification utilisant une requête déjà conçue. Pour chacun de ces éléments on mettra une note, chaque note ayant une durée calculée à partir des modules ayant déjà été développés.
Plus on avancera dans le projet, plus on aura ainsi une idée précise de sa date de livraison.
Il est illusoire de vouloir donner des délais de livraison raisonnables sans avoir même commencé à analyser et détailler quoi que ce soit ... ou alors ce sont des estimations bidons qui ne servent qu'à faire plaisir aux clients et à la direction !