On m'a demandé d'enseigner une nouvelle base de code à d'autres équipes, mais je rencontre toujours un problème. Chaque fois que je vais parcourir le code avec des gens, nous n'allons pas très loin avant que l'exercice entier ne devienne un exercice de bikeshedding (membres d'une organisation donnant un poids disproportionné à des problèmes triviaux). Comme ils ne connaissent pas la base de code, mais pensent qu'ils doivent aider à l'améliorer, ils se concentrent sur les choses qu'ils peuvent comprendre:
Why is that named that?
(2 minutes pour expliquer pourquoi on l'appelle ainsi, plus de 10 minutes pour débattre d'un nouveau nom)
Why is that an abstract base class rather than an interface?
(2 minutes pour expliquer, plus de 10 minutes pour débattre des mérites relatifs de cette décision)
...etc. Maintenant, ne vous méprenez pas - bons noms et bonne, la conception cohérente sont importants, mais nous ne sommes jamais à discuter de ce que le code fait fait ou comment le système est conçu de manière significative. J'ai organisé des réunions d'arbitrage pour sortir les gens de ces tangentes, mais ils sont partis - distraits par ce que le code va être / devrait être quand la trivialité de leur animal de compagnie sera corrigée, et ils ratent l'image plus grande.
Nous réessayons donc plus tard (ou avec une partie différente de la base de code) et, comme les gens n’avaient pas assez de connaissances pour surmonter l’effet de cyclage, cela se répétait.
J'ai essayé des groupes plus petits, des groupes plus importants, du code, du tableau blanc, des diagrammes visio, des murs de texte géants, leur permettant de se disputer à mort, coupant les arguments immédiatement ... certains aident plus que d'autres, mais rien ne fonctionne . Enfer, j'ai même essayé de demander à d'autres personnes de mon équipe de l'expliquer parce que je pensais que c'était peut-être parce que je n'étais tout simplement pas capable d'expliquer les choses.
Alors, comment éduquez-vous suffisamment les autres programmeurs pour qu’ils arrêtent de se concentrer sur des trivialités et puissent réellement contribuer à la conception?