Vous et la plupart des répondeurs abordez cette question comme un problème de communication entre deux collègues, mais je ne le pense pas vraiment. Ce que vous décrivez ressemble plus à un processus de révision de code horriblement brisé qu’autre chose.
Tout d'abord, vous mentionnez que votre collègue est le commandant en second et qu'il s'attend à ce qu'il revoit votre code. C'est juste faux. Par définition, les revues de code par les pairs ne sont pas hiérarchiques et ne consistent pas uniquement en la recherche de défauts. Ils peuvent également fournir des expériences d'apprentissage (pour toutes les personnes concernées), une opportunité d'interaction sociale et s'avérer un outil précieux pour la création d'une propriété collective de code. Vous devriez également revoir son code de temps en temps, apprendre de lui et le corriger quand il se trompe (personne ne le comprend bien à chaque fois).
De plus, vous mentionnez que votre collègue apporte des modifications immédiatement. C'est également faux, mais bien sûr vous le savez déjà; vous n'auriez pas posé cette question si son approche de gung ho n'était pas un problème. Cependant, je pense que vous cherchez une solution au mauvais endroit. Pour être tout à fait honnête, votre collègue me rappelle un peu ... de moi, et ce qui a fonctionné pour moi dans des situations similaires était un processus d’examen bien défini et solide et un ensemble d’instruments géniaux. Vous ne voulez pas vraiment empêcher votre collègue de réviser votre code et de lui demander de s'arrêter et de vous parler avant que chaque petit changement ne fonctionne réellement. Cela pourrait peut-être, pendant un moment, mais il atteindra bientôt un point où cela deviendra trop gênant et vous serez de retour à votre point de départ, ou pire: il arrêtera simplement de réviser votre code.
Un outil de révision de code par les pairs pourrait constituer une solution. J'évite généralement les recommandations de produits, mais pour les critiques de code, Atlassian's Crucibleest vraiment un épargnant de vie. Ce que cela fait peut paraître très simple, et ça l'est, mais cela ne veut pas dire que ce n'est pas incroyablement génial. Il se connecte à votre référentiel et vous permet de passer en revue des ensembles de modifications, des fichiers ou des groupes de fichiers individuels. Vous ne pouvez modifier aucun code, mais vous commentez tout ce qui ne vous semble pas juste. Et si vous devez absolument changer le code de quelqu'un d'autre, vous pouvez simplement laisser un commentaire avec l'ensemble de modifications expliquant vos modifications. La vidéo d’introduction sur la page produit de Crucible vaut la peine d’être visionnée si vous souhaitez plus de détails. Les prix de Crucible ne sont pas pour tout le monde, mais il existe de nombreux outils d'évaluation par les pairs disponibles gratuitement. Review Board est un outil avec lequel j'ai apprécié et apprécié, et je suis sûr que vous en trouverez beaucoup d'autres avec une simple recherche Google.
Quel que soit l'outil que vous choisissiez, cela changera complètement votre processus. Inutile de vous arrêter, de vous lever de votre chaise, d’interrompre l’autre personne et de discuter des modifications; tout ce que vous avez à faire est de prendre du temps chaque semaine et de passer en revue les commentaires (une fois par semaine n’est qu’une suggestion. Vous connaissez votre emploi du temps et votre routine quotidienne mieux que moi). Plus important encore, les révisions principales sont stockées dans une base de données quelque part et vous pouvez les récupérer à tout moment. Ce ne sont pas des discussions éphémères autour de la fontaine à eau. Mon cas d'utilisation préféré pour les anciennes critiques est l'introduction d'un nouveau membre de l'équipe dans notre base de code. Il est toujours agréable de pouvoir guider une nouvelle personne dans la base de code en indiquant exactement où nous étions bloqués, en cas d'opinions divergentes, etc.
Vous mentionnez ensuite que vous ne trouvez pas toujours le code de ce collègue lisible. Cela me permet de savoir que vous n'avez pas un ensemble commun de normes de codage, et c'est une mauvaise chose. Encore une fois, vous pouvez aborder ceci comme un problème de personnes ou comme un problème de processus, et encore une fois, je suggérerais fortement ce dernier. Rassemblez votre équipe et adoptez un style de codage commun et un ensemble de normes dès que possible. Peu importe que vous choisissiez un ensemble de normes communes à votre écosystème de développement ou que vous élaboriez les vôtres. Ce qui compte vraiment, c’est que vos normes soient cohérentes et que vous les respectiez. De nombreux outils peuvent vous aider, mais la discussion est tout à fait différente. Juste pour commencer, une chose très simple à faire est d’avoir un hook de pré-commit qui exécute une sorte de formateur de style sur votre code. Vous pouvez continuer à écrire votre code comme bon vous semble et laisser l'outil "le réparer" automatiquement avant que quelqu'un d'autre ne le voie.
Enfin, vous avez mentionné dans un commentaire que la direction ne pensait pas que des agences de développement individuelles étaient nécessaires. Eh bien, il y a une raison pour laquelle nous les appelons "branches de développement" et non pas "branches de gestion". Je vais m'arrêter ici car il n'y a aucune raison pour que le coup de gueule qui se forme dans ma tête me quitte.
Cela dit, sachez que je ne doute pas que votre collègue soit (un peu) en faute ici. Ce n'est pas ce que je veux dire, ce que je veux dire, c'est que tout votre processus de développement est également en cause, et c'est quelque chose qui est plus facile à corriger. Munissez-vous des outils appropriés, explorez les nombreux processus formels et informels et choisissez ceux qui conviennent à votre équipe. Bientôt, vous atteindrez un point où vous réaliserez que la plupart de vos "problèmes de personnes" n'existent plus. Et s'il vous plaît, n'écoutez personne (y compris vous-même) qui présente le prétexte "nous sommes une petite équipe, nous n'avons pas besoin de tout cela". Une équipe de développeurs compétents peut configurer les outils nécessaires en moins d'une semaine, automatiser tout ce qui peut être automatisé et ne jamais revenir en arrière.
PS La «propriété de code» est un terme nébuleux, constamment débattu et qui signifie différentes choses pour différentes personnes. Vous pouvez trouver une collection brillante de la plupart des opinions divergentes (et parfois antithétiques) sur C2 .