Einer meiner Teamkollegen ist ein Alleskönner in unserem IT-Shop und ich respektiere seine Einsicht.
Manchmal überprüft er jedoch meinen Code (er ist der zweithäufigste Befehlshaber unseres Teamleiters, das ist zu erwarten), ohne einen Hinweis zu haben. Manchmal überprüft er meine Änderungen, bevor sie das Endziel erreichen, und nimmt sofort Änderungen vor ... und hat sogar meine Arbeit einmal gebrochen.
In anderen Fällen hat er unnötige Verbesserungen an einem Teil meines Codes vorgenommen, der mindestens drei Monate alt ist.
Das ärgert mich aus ein paar Gründen:
- Ich habe nicht immer die Möglichkeit, meine Fehler zu beheben
- Er hat sich nicht die Zeit genommen, mich zu fragen, was ich erreichen wollte, wenn er verwirrt ist, was sich auf seine Tests oder Änderungen auswirken könnte
- Ich denke nicht immer, dass sein Code lesbar ist
- Abgabetermine sind kein Problem und seine aktuelle Arbeitsbelastung erfordert in meinen Projekten keine weitere Arbeit als die Überprüfung meiner Codeänderungen.
Wie auch immer, ich habe ihm in der Vergangenheit geraten, mich auf dem Laufenden zu halten, wenn er etwas in meiner Arbeit sieht, das er ändern möchte, damit ich den Besitz meines Codes übernehmen kann (vielleicht hätte ich "Mängel" sagen sollen), und er hat nicht reagiert .
Ich befürchte, dass ich aggressiv werde, wenn ich ihn auffordere, mir seine Änderungen zu erklären.
Er ist nur eine ruhige Person, die für sich bleibt, aber seine Handlungen gehen weiter. Ich möchte ihn nicht davon abhalten, Codeänderungen vorzunehmen (anders als ich es könnte), weil wir ein Team sind - aber ich möchte meinen Teil dazu beitragen, unserem Team zu helfen.
Klarstellungen hinzugefügt:
- Wir teilen uns 1 Entwicklungszweig. Ich warte nicht, bis alle meine Änderungen eine einzelne Aufgabe abgeschlossen haben, da ich das Risiko habe, bedeutende Arbeit zu verlieren. Deshalb stelle ich sicher, dass meine Änderungen erstellt werden und nichts kaputt geht.
- Ich mache mir Sorgen, dass mein Teamkollege den Grund oder den Zweck seiner Änderungen nicht erklärt. Ich denke nicht, dass er meinen Segen brauchen sollte, aber wenn wir uns nicht einig sind, dachte ich, dass es am besten ist, die Vor- und Nachteile zu diskutieren und eine Entscheidung zu treffen, sobald wir beide verstehen, was los ist.
- Ich habe dies noch nicht mit unserem Teamleiter besprochen, da ich es vorziehen würde, persönliche Meinungsverschiedenheiten zu lösen, ohne das Management einzubeziehen, es sei denn, dies ist erforderlich. Da mein Anliegen eher ein persönliches Problem als eine Bedrohung für unsere Arbeit zu sein schien, habe ich mich entschieden, den Teamleiter nicht zu belästigen. Ich arbeite an Ideen für Codeüberprüfungsprozesse, um die Vorteile besser organisierter Codeüberprüfungen zu fördern, ohne dass sich alles um mein Haustier dreht.
Antworten:
Ich denke, die meisten Entwickler befinden sich irgendwann in dieser Position, und ich hoffe, dass jeder Entwickler, der sich schikaniert gefühlt hat, erkennt, wie frustrierend es sein wird, wenn er oder sie zum Senior wird und sich gezwungen fühlt, von Junioren geschriebenen Code zu bereinigen.
Das Vermeiden von Konflikten in dieser Situation hat für mich zwei Gründe:
Höflichkeit . Wenn Sie mit jemandem über seinen Code sprechen, kann ein Entwickler erkennen, dass Sie interessiert sind, und Sie können als erwachsene Fachleute darüber diskutieren.
Vergessen Sie "Code Ownership" - das Team besitzt den Code . Andere Leute, die Änderungen vornehmen wollen, sind eine gute Sache. Wenn ein älterer Entwickler Änderungen vornimmt, die "unleserlich" oder noch schlimmer sind, setzen Sie sie zurück. Sie müssen nicht aggressiv sein. Lassen Sie einen Redakteur einfach wissen, dass seine / ihre Änderungen nicht funktioniert haben, und Sie sind mehr als glücklich, über Ihre Umkehrung zu diskutieren.
Denken Sie daran, dass der Besitz von Code im Team großartig ist und sich in beide Richtungen auswirkt. Wenn Sie etwas sehen, das im Code einer anderen Person keinen Sinn ergibt, beheben Sie es. Übermäßig besitzergreifend und unzureichend kommunikativ zu sein, ist ein todsicherer Weg, eine giftige Entwicklungsumgebung zu schaffen.
quelle
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 .
quelle
Was bringt Sie dazu , Verantwortung für "Ihren Code" zu übernehmen? Sind Sie allein dafür verantwortlich, dass bestimmte Funktionen weiterhin funktionieren? Sagte der Lead "Michael, ich möchte, dass du die Verantwortung übernimmst für ..."? Oder liegt es in Ihrer Verantwortung, dass der Leiter und der Rest des Teams jedes Mal zu Ihnen schauen, wenn bestimmte Funktionen beschädigt werden?
In jedem Fall benötigen Sie die Autorität über den Code, wenn Sie die Verantwortung haben. Wenn der andere Mitarbeiter das nächste Mal einseitige Änderungen vornimmt und der Lead zu Ihnen zurückkehrt, um diese zu beheben, sollten Sie sich an den Lead setzen und darum bitten, dass Ihre Autorität und Ihre Verantwortung in Einklang gebracht werden.
quelle
Nicht, dass dies die ganze Situation lösen würde, aber Sie könnten versuchen, Ihrem Quellcode weitere Kommentare hinzuzufügen.
Alles in allem versuchen Sie, Limonade zuzubereiten, anstatt Zeit mit Zitronen zu verschwenden. Wie Michael sagte, sind Teamkollegen im Allgemeinen nicht dazu da, dich schlecht aussehen zu lassen. Versuchen Sie, aus Ihren Fehlern zu lernen und sie auf zukünftige Überarbeitungen anzuwenden.
Wenn Sie glauben, dass seine Änderungen negative Auswirkungen haben, sprechen Sie dies bitte (diplomatisch) aus. Wenn ich es wäre, würde ich einfach fragen, warum bestimmte Änderungen vorgenommen wurden und sehen, ob Sie Ihre ursprünglichen Änderungen verteidigen können. Ihre älteren Mitarbeiter sind auch menschlich. Es ist durchaus möglich, dass er etwas verpasst hat und / oder keine negativen Auswirkungen bemerkt.
quelle
Jeder "besitzt implizit seinen eigenen Code", unabhängig von Politik, Legalistik oder Wirtschaft - es ist die "Natur der Dinge" - Sie fühlen sich auf natürliche Weise mit Ihrer eigenen Arbeit verbunden.
Wenn sich Ihr Mitarbeiter auf das von Ihnen beschriebene Verhalten einlässt und nicht reagiert, wenn Sie nach einem Heads-up fragen , ist dieser Mitarbeiter, gelinde gesagt, unhöflich und versucht möglicherweise, Sie zu untergraben (um das Schlimmste zu sagen). .) - klingt NICHT wie ein Teamplayer.
Ein guter Mitarbeiter würde Basis mit Ihnen berühren und das Problem mit Ihrem Code darauf hin , Sie - und lassen Sie es beheben / ändern oder entsprechend reagieren. Ich bin sehr dankbar , dass selbst wenn ich ein newbee war, meine Mentoren wiesen darauf hin , mich immer , was ich falsch macht, erklärt , warum und lassen (oder aus ) me fix it. Das hat mich zu einem besseren Programmierer gemacht und alle haben davon profitiert. Und das habe ich immer getan, wenn ich die Arbeit anderer überprüfte. Dann lernen Sie (oder wer auch immer) tatsächlich etwas von Ihrem „Alleskönner“, und der Code und das Team werden alle besser, einschließlich Ihres Lehrers: Lehren hilft zu verstehen.
Wenn es überhaupt möglich ist, würde ich die Angelegenheit privat mit dem Teamleiter besprechen . Basierend auf Ihrer Beschreibung der Situation wird ein guter Teamleiter Ihre Seite vertreten - ein schlechter nicht. Dies erfordert natürlich Vorsicht - das müssen Sie selbst beurteilen.
quelle
Wenn Sie Code schreiben, sollte ich ihn überprüfen.
Wenn ich Ihren Code während der Überprüfung ändere, ist der Code nicht mehr der Code, den ich überprüft habe, sondern der Code, den ich geändert habe. Daher muss es überprüft werden. Wahrscheinlich von dir.
Wenn ich Ihren neuen Code mit meinen Änderungen festschreibe, ohne dass jemand meine Änderungen überprüft, habe ich (1) eine nicht überprüfte Änderung und (2) die schlimmste Sünde begangen, wenn Codeüberprüfungen ernst genommen werden.
quelle
Ich denke, Sie gehen jetzt richtig damit um - aber es wird bald einen Wendepunkt geben, an dem Sie davon abgelenkt werden, in dem Sie möglicherweise überhaupt nicht glücklich sind, auf diese Weise zu programmieren.
Wenn ich Sie wäre, würde ich um ein schnelles Einzelgespräch mit dieser Person bitten und meinen PoV ruhig und doch fest erklären. Das Team-Eigentum an Code usw. ist in Ordnung, aber wenn Sie nicht jedem Entwickler genügend Platz einräumen, um seine Arbeit zu erledigen, Fehler zu machen und Verbesserungen vorzunehmen, werden Sie niemals guten Code erstellen. Dies kann eher früher als später ein Reibungsbereich sein.
(Es gibt eine völlig andere Antwort, wenn dies auf Workplace.stackexchange war. Es ist sehr einfach, herauszufinden, wie Code-Überprüfungen korrekt durchgeführt werden. Es ist sehr viel schwieriger, Ihren Kollegen davon zu überzeugen, sich daran zu halten.)
quelle