On dirait que vos problèmes sont plus généraux.
La question de la refactorisation est à la fois un symptôme et un soulagement potentiel d’une partie du problème.
Le responsable logiciel et l'équipe allouent le temps de l'équipe
D'après mon expérience, je pense que vous rencontrez peut-être un problème que j'appelle "tout le monde est un gestionnaire de logiciel". Les chefs de produit, les chefs de projet et parfois les ingénieurs système et les testeurs peuvent être connus pour tenter de microgérer les développeurs qui ont probablement déjà un gestionnaire de logiciel expérimenté. Il se peut même que quelques membres de votre équipe croient que leur rôle est de gérer.
Si vous êtes le responsable logiciel, définissez les affectations pour le refactoring souhaité ou, mieux encore, demandez à votre équipe de vous proposer le refactoring pour approbation. Afin de ne pas microgérer, vous pourriez avoir des directives sur l’âge / l’auteur / la taille / le contexte du code à refactoriser pouvant être librement refactorisées par opposition à une approbation. Si un membre de votre équipe souhaite modifier en profondeur quatre grandes classes de code complexe qu'il n'a pas écrit et qui ne font pas partie de son long métrage, ses deux semaines de déjudiciarisation sont votre problème. Vous devez donc avoir la possibilité de dire non.
Vous pouvez vous faufiler, mais je pense qu'il est préférable de construire vos estimations avec soin avec du temps pour l'analyse, la conception, le codage, de multiples formes de test (au moins unité et intégration), la refactorisation et le risque tel que jugé historiquement et par le manque de précision. expérience ou clarté associée à la tâche. Si vous avez été trop ouvert sur le fonctionnement de votre équipe (ou si des membres de votre équipe le sont), il peut être judicieux de restreindre les canaux de communication afin qu'ils analysent vos ressources et discutent des ressources et des résultats, et non des méthodes.
Les premiers choix de projet créent un cercle vicieux pour la refactorisation
La maintenance du logiciel est difficile. Il est doublement difficile que d’autres membres de l’organisation fassent des choix à vos dépens. C'est faux, mais ce n'est pas nouveau. Barry Boehm, l'un de nos grands rédacteurs de logiciels, a présenté le modèle de gestion qu'il décrit sous le nom de Theory W.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Les développeurs de logiciels sont souvent obligés de produire en vertu de l’approche de gestion de Theory-X, qui stipule que les travailleurs sont fondamentalement paresseux et n’exécutent pas leurs tâches à moins d’être soumis à la soumission. Boehm résume et oppose son modèle proposé comme suit:
"Plutôt que de qualifier un responsable d'autocrate (Théorie X), d'entraîneur (Théorie Y) ou d'animateur (Théorie Z), la Théorie W caractérise le rôle principal d'un dirigeant en tant que négociateur entre ses diverses composantes et en tant que concepteur de solutions de projet avec des conditions de victoire pour toutes les parties. Au-delà de cela, le manager est également un buteur, un moniteur de progrès, et un activiste dans la recherche de conflits de projets quotidiens, gagnants ou perdants, auxquels il est confronté, et les transformer en situations gagnant-gagnant. "
Quick and Dirty est souvent juste sale
Boehm poursuit en expliquant la raison pour laquelle les développeurs de l’équipe de maintenance sont tellement misérables.
"Construire un produit rapide et négligé peut constituer une" victoire "à court terme et à faible coût pour le développeur de logiciel et le client, mais ce sera une" perte "pour l'utilisateur et le responsable." Veuillez noter que dans le modèle de Boehm, le client est davantage un administrateur de contrat que un utilisateur final. Dans la plupart des entreprises, considérez le responsable de produit comme un substitut du client, ou peut-être la personne qui achète le produit pour sa liste de fonctionnalités.
Ma solution serait de ne pas libérer l'équipe de développement d'origine (ou au moins son rôle principal) jusqu'à ce que le code soit refactorisé pour au moins respecter les normes de codage.
Pour les clients, je pense qu’il est raisonnable de considérer le chef de produit comme un substitut de la clientèle. Le groupe de personnes récompensées pour avoir fourni quelque chose de rapide et sale peut certainement être élargi. Il existe donc un large éventail de personnes qui agissent mal.
Le refactoring n'est pas négociable
S'il vous plaît ne reculez pas de votre rôle en tant que gestionnaire de logiciels. Vous devez avoir le pouvoir et la discrétion d'utiliser le temps passé par votre équipe pour améliorer le produit. Dans ce rôle, vous devrez peut-être négocier vos choix pour rendre votre équipe plus professionnelle. Cependant, en ce qui concerne le processus, ne négociez pas avec le marketing, car, d’après mon expérience, c’est un jeu perdant. Négocier avec la direction de l'ingénierie. Cela montre que vous avez une vision. Construire une équipe logicielle professionnelle est une extension de leur rôle et est beaucoup plus susceptible d'être perçu comme un gagnant-gagnant.