Sie und die meisten Antwortenden betrachten dies als ein Kommunikationsproblem zwischen zwei Kollegen, aber ich denke nicht, dass dies wirklich so ist. Was Sie beschreiben, klingt eher nach einem fürchterlich kaputten Code-Überprüfungsprozess als nach irgendetwas anderem.
Zunächst erwähnen Sie, dass Ihr Kollege als Zweiter das Kommando innehat und dass er Ihren Code überprüfen wird. Das ist einfach falsch. Peer-Code-Reviews sind per Definition nicht hierarchisch und es geht sicherlich nicht nur darum, Fehler zu finden. Sie können auch Lernerfahrungen (für alle Beteiligten) bereitstellen, eine Möglichkeit zur sozialen Interaktion bieten und sich als wertvolles Werkzeug für den Aufbau von kollektivem Code-Besitz erweisen. Sie sollten auch von Zeit zu Zeit seinen Code überprüfen, von ihm lernen und ihn korrigieren, wenn er sich irrt (niemand macht es jedes Mal richtig ).
Außerdem erwähnen Sie, dass Ihr Kollege Änderungen sofort vornimmt. Das ist auch falsch, aber du weißt es natürlich schon; Du hättest diese Frage nicht gestellt, wenn sein Gung Ho-Ansatz kein Problem gewesen wäre. Ich denke jedoch, Sie suchen nach einer Lösung am falschen Ort. Um ganz ehrlich zu sein, erinnert mich Ihr Kollege ein bisschen an ... mich, und was bei mir in ähnlichen Situationen funktioniert hat, war ein gut definierter und solider Überprüfungsprozess und eine Reihe großartiger Tools. Sie möchten Ihren Kollegen nicht wirklich davon abhalten, Ihren Code zu überprüfen und ihn zu bitten, anzuhalten und mit Ihnen zu sprechen, bevor jede kleine Änderung tatsächlich nicht funktioniert. Es könnte eine Weile dauern, aber er wird bald einen Punkt erreichen, an dem es einfach zu nervig wird und Sie sind wieder da, wo Sie begonnen haben, oder schlimmer: Er hört einfach auf, Ihren Code zu überprüfen.
Ein Schlüssel zu einer Lösung könnte hier ein Peer-Code-Überprüfungstool sein. Ich vermeide in der Regel Produktempfehlungen, aber für Code-Reviews Atlassian's Crucibleist wirklich ein Lebensretter. Was es tut, mag sehr einfach erscheinen, und es ist es, aber das bedeutet nicht, dass es nicht erstaunlich großartig ist. Es wird an Ihr Repository angeschlossen und bietet Ihnen die Möglichkeit, einzelne Änderungssätze, Dateien oder Dateigruppen zu überprüfen. Sie dürfen keinen Code ändern, sondern Sie kommentieren alles, was sich nicht richtig anfühlt. Und wenn Sie unbedingt den Code einer anderen Person ändern müssen, können Sie einfach einen Kommentar mit dem Änderungssatz hinterlassen, in dem Ihre Änderungen erläutert werden. Das Einführungsvideo auf der Produktseite von Crucible ist sehenswert, wenn Sie weitere Details wünschen. Die Preisgestaltung von Crucible ist nicht jedermanns Sache, aber es gibt zahlreiche frei verfügbare Peer-Review-Tools. Eines, mit dem ich zusammengearbeitet habe und das mir gefallen hat, ist Review Board. Ich bin sicher, dass Sie mit einer einfachen Google-Suche viele andere finden werden.
Welches Tool Sie auch wählen, es wird Ihren Prozess komplett verändern. Sie müssen nicht anhalten, Ihren Stuhl verlassen, die andere Person unterbrechen und die Änderungen besprechen. Alles, was Sie tun müssen, ist wöchentlich eine Pause einzulegen und die Kommentare durchzugehen (einmal pro Woche ist nur ein Vorschlag. Sie kennen Ihren Zeitplan und Ihren Tagesablauf besser als ich). Noch wichtiger ist, dass die wichtigsten Bewertungen irgendwo in einer Datenbank gespeichert sind und Sie sie jederzeit abrufen können. Es sind keine kurzlebigen Diskussionen um den Wasserkühler. Mein bevorzugter Anwendungsfall für alte Reviews ist die Einführung eines neuen Teammitglieds in unsere Codebasis. Es ist immer schön, wenn ich jemanden durch die Codebasis führen kann, der darauf hinweist, wo genau wir feststeckten, wo wir unterschiedliche Meinungen hatten usw.
Weiter erwähnen Sie, dass Sie den Code dieses Kollegen nicht immer lesbar finden. Das lässt mich wissen, dass Sie keine gemeinsamen Codierungsstandards haben, und das ist eine schlechte Sache. Sie können dies wiederum als ein Personenproblem oder als ein Prozessproblem betrachten, und ich würde letzteres nachdrücklich empfehlen. Stellen Sie Ihr Team zusammen und setzen Sie so schnell wie möglich einen einheitlichen Codierungsstil und Standards ein. Es spielt keine Rolle, ob Sie eine Reihe von Standards gewählt haben, die in Ihrem Entwicklungs-Ökosystem üblich sind, oder ob Sie sich Ihre eigenen einfallen lassen. Was wirklich zählt, ist, dass Ihre Standards konsistent sind und dass Sie sich daran halten. Viele, viele Tools da draußen können Ihnen helfen, aber das ist eine ganz andere Diskussion. Nur um Ihnen den Einstieg zu erleichtern, Eine sehr einfache Sache ist es, einen Pre-Commit-Hook zu haben, der eine Art Formatierer für Ihren Code ausführt. Sie können Ihren Code weiter schreiben, wie Sie möchten, und das Tool ihn automatisch "reparieren" lassen, bevor es jemand anderes sieht.
Zuletzt erwähnen Sie in einem Kommentar, dass das Management nicht der Meinung ist, dass einzelne Entwicklungszweige notwendig sind. Es gibt einen Grund, warum wir sie "Entwicklungszweige" und nicht "Managementzweige" nennen. Ich werde hier anhalten, da es keinen Grund gibt, dass sich in meinem Kopf eine Schimpfe bildet, um rauszukommen.
Alles, was gesagt wurde, wissen Sie, dass ich nicht bezweifle, dass Ihr Kollege hier (ein bisschen) Schuld hat. Das ist nicht mein Punkt, mein Punkt ist, dass Ihr gesamter Entwicklungsprozess ebenfalls fehlerhaft ist, und das ist etwas, das einfacher zu beheben ist. Rüsten Sie sich mit den richtigen Werkzeugen aus, erkunden Sie die zahlreichen formellen und informellen Prozesse und wählen Sie diejenigen aus, die zu Ihrem Team passen. Bald wirst du einen Punkt erreichen, an dem du merkst, dass die meisten deiner "Menschenprobleme" nicht mehr existieren. Und bitte hören Sie niemandem zu (einschließlich sich selbst), der die Ausrede "Wir sind ein kleines Team, wir brauchen nicht all das" vorbringt. Ein Team von kompetenten Entwicklern kann die erforderlichen Tools in weniger als einer Woche einrichten, alles automatisieren, was automatisiert werden kann, und nie wieder zurückblicken.
PS. "Code-Besitz" ist ein nebulöser Begriff, der ständig diskutiert wird und für verschiedene Menschen unterschiedliche Bedeutungen hat. Sie finden eine brillante Sammlung der meisten unterschiedlichen (und manchmal gegensätzlichen) Meinungen zu C2 .