Comme je le disait ici, j'avais envie d'écrire à propos d'astuces sur des pratiques qui permettent la transition.

Il y a des transitions de longues durées et d'autre de courtes durées

Longue durée

Une transition de longue durée est une amélioration qui ne peut être faite en un coup. Partout où j'ai travaillé, que ce soit chez delcampe, sur claroline, sur arena51 sur kidcity, the World Scout Shop ... c'est toujours la même raison. Il y a des résidus d'erreurs du passé, pour lesquelles, un jour, il a été prouvé/trouvé une meilleurs façon de faire mais il est inconcevable de s'y atteler en exclusivité et d'arrêter tout le reste le temps d'appliquer cette nouvelle façon de faire.

Généralement ça concerne les performances, la sécurité, les normes d'écriture du code ... Bref au niveau fonctionnel. Des éléments qui changent peu de manière "visible", du coup on diffère. Ou pire, on s'en fait deuil en disant "On ne peut pas se permettre de consacrer tant de temps à cela, ça fonctionne sans".

Dans ce cas, la transition permet de créer les conditions pour faire selon la nouvelle méthode. On se fixe alors une règle du style : dès qu'on touche à un script, on applique la nouvelle façon de faire. Le vieux code lui reste comme il est, on ne va pas risquer de casser quelque chose qui fonctionne et auquel on a pas besoin de toucher.

Courte durée

J'utilise cela parfois pour pouvoir faire des mises à jour sans interruption de service. C'est à dire ordonnancer les remplacements de fichiers pour que à chaque instant le code soit cohérent.

Par exemple, je met à jour une classe et un code qui l'utilise.

  1. -> ajout de la classe dans un fichier ou un nom temporaire
  2. -> remplacement du fichier qui l'exploite pour qu'il utilise la classe temporaire
  3. -> modification de l'ancienne classe ou de l'ancien fichier
  4. -> remplacement du fichier qui exploite la nouvelle classe mais dans son nom officiel

Note pour des applications distribuées c'est moins évident. On doit plutôt voir ça en "upgrade" automatique. On a une transition de courte durée ... "qui reste longtemps" sur le serveur. On fait une mise à jour (release) préparatrice et puis une seconde finalisant la transition.

Durée moyenne ?

On va plutôt dire qu'il y a des inconvénients dans les transition à longue durée qu'il faut éviter et que ca implique donc que la durée ne soit pas trop longue:

  1. ° si ça touche à la sécurité... Même si le problème existe depuis le "début", on va quand même essayer d'y mettre un coup de fouet.
  2. ° si ça touche aux performance ou au règles de codage, il faut tenter de mesurer combien on gagne à le faire, combien on y perd à laisser ca comme ça.
  3. ° éviter le chevauchement des transitions. Si on lance une transition il faut être sûr de son coup et viser une fin de transition avant la probable suivante. Les transitions augmentent le taux de "mélange de pratique" pour un nouveau collaborateur ça crée d'autant plus de méthode de travail à découvrir. Donc on perd du temps et de l'efficacité.

Vous en pensez quoi ?

Mise en garde

Il y a surement aussi des erreurs ou de mauvais choix dans ma façon de faire. C'est aussi pour cela que j'en parle sur ce blog, pour en discuter et les améliorer.

Je parle pas des remarques d'éventuels intégristes ou de jeunes sortis de l'école qui pense que dans l'informatique on passe son temp à créer du neuf.