Le coût d’un copier-coller

Afin de donner un exemple concret de ce qu’il ne faut pas faire et pour vous montrer qu’il vous coûte plus cher de ne pas suivre vos développeurs que de les accompagner jour après jour, voici une histoire plus ou moins récente d’un de mes clients.

L’histoire est au présent pour plus de simplicité.

Mon client a un fournisseur de contenu que nous avons en charge de traiter. Ce contenu est envoyé de manière assez irrégulière mais demande à être traité avec soin. Il s’agit d’un fichier plat type csv classique. Les données sont séparées par un ; et informent sur un produit, des sections et sous-sections et autres codes.

Le processsus, même s’il est manuel, est plutôt bien rodé. Un développeur reçoit le fichier plat, le fait passer dans son programme « fait-maison », intègre les données dans une base de dev et vérifie que ca passe bien. Ensuite 2 ou 3 personnes sont chargées de vérifier l’ensemble des données pendant une petite semaine. Les données validées sont alors transférées dans une base de pré-prod.

Il se trouve qu’un jour,  le fichier change de format, un caractère : a été inséré pour ajouter une information. Le fournisseur prévient le développeur, celui modifie son programme et le relance pour intégrer les données. Une semaine se passe et les testeurs s’aperçoivent qu’une partie des données est corrompue car le caractère : n’a pas été pris en compte.

Nous entamons alors une réunion à 5 personnes, le chef de projet, le développeur, le responsable des données, le développeur SQL et le responsable des bases de données. Après examen des données corrompues, on s’aperçoit qu’un pan entier n’a pas été pris en compte, parce que la modification du programme a été faite sur les 4 premières parties du code, qui sont en fait 4 copier-coller identiques de gestion du format, mais que la 5ème partie n’a pas été modifiée. Dommage.

Coût du copier-coller

  • Une semaine de 2 testeurs, qui vont devoir tout retester,
  • 1 heure de réunion * 5 personnes pour identifier le problème,
  • 1 heure de développeur pour remettre à jour son programme et vérifier que ca tourne cette fois,
  • 4 heures de développeur SQL pour écrire une procédure stockée afin de corriger les données,
  • 1 heure de réunion * 5 personnes pour expliquer ce qui a été fait et vérifier que cela fonctionne correctement.
  • Combien de temps cela aurait-il pris au développeur de réfléchir à son programme afin de factoriser un maximum de code pour ne pas produire ce genre de problème ? 2 ou 3 heures.
  • Pourquoi ne l’a-t’il pas fait? Parce que factoriser demande à réfléchir. Et qu’un développeur suit souvent la devise « Quand ca marche, tu touches pas!« 

Maintenant lors de ces discussions, personne n’a parlé de modifier le programme afin de factoriser le code, ce qui veut dire qu’au prochain changement de format, vous pouvez être sur à 50% que la même erreur va se reproduire.

Imaginez maintenant que le développeur quitte la société, est malade ou en vacances. Quelqu’un va obligatoirement devoir le remplacer dans cette tâche. Le taux d’échec de la transformation va alors monter à 95%.

Si en plus vous ajoutez le fait qu’il est fort probable que le développeur a créé une nouvelle branche de source pour ce format, plutôt que de rajouter un test sur le type de format, le prochain développeur va même tout réécrire pour reproduire les mêmes erreurs.

Elle est pas belle la vie ?!!!

PS : Attention, je n’exagère absolument pas la réalité.

PS2 : Mais où sont les bons développeurs.

PS3 : Un ancien collègue m’a dit un jour que les développeurs sont une espèce à part. Je vais commencer à croire que c’est vrai…

Publicités

Une Réponse to “Le coût d’un copier-coller”

  1. pyfux Says:

    La factorisation du code, une légende ?
    Factoriser plusieurs procédures, rendre générique c’est le Grall des développeurs, non ? ça condense le code mais c’est parfois imbitable lors d’une reprise pour évolution.
    Il faut trouver le juste équilibre entre complexité, évolutivité e généricité.

    Les dév sont fainéant par nature mais comme tout un chacun limités par leurs intellects…aussi le bon développeur y bosse pas dans ta boite pour y faire des moulinettes… 🙂

    Tchao!


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :