Im Laufe des Sommers wechselte ich von einem großen Unternehmen als leitender Ingenieur zu einem viel kleineren Unternehmen als leitender Ingenieur. Jetzt beaufsichtige ich etwa 20 Ingenieure auf mittlerer bis mittlerer Ebene, die an 3 verschiedenen Reservierungs- und Buchungssystemen arbeiten. Alle Buchungssysteme laufen auf demselben proprietären Back-End-Framework, das von einem anderen Team verwaltet wird, das ich nicht beaufsichtige.
Letzten Monat, in der Nacht vor dem Start eines großen Releases für eines der Buchungssysteme, hinterließ ein leitender Ingenieur („Clint“) aus dem Back-End-Supportteam eine Reihe von Kommentaren zu einem Pull-Request, den wir geöffnet hatten, um unseren Release Candidate darin zusammenzuführenMaster
Das Feedback reichte von etwas hilfreich bis etwas nicht hilfreich. Wir fusionierten Master
trotzdem zu und am nächsten Tag fragte ich ihn, ob er diesen Code früher hätte überprüfen können, anstatt bis nach dem Integrationstest zu warten. Als er das Feedback hinterließ, war es das Ende des Tages und wir bereiteten ein Ticket für unseren Release Engineer vor, das am nächsten Morgen um 4:30 Uhr bereitgestellt werden sollte.
Er sagte mir, dass es nicht seine Aufgabe sei, meine Ingenieure zu unterrichten (er hat recht, das ist es nicht). Aber es fällt mir schwer, 20 Ingenieure gleichzeitig zu coachen, selbst wenn sie Peer-Reviews durchführen und den Code der anderen überwachen. Ich mache mir auch Sorgen, dass mein Team etwas demotiviert war, da sie nichts tun konnten, um auf das Feedback einzugehen.
Wir haben eine weitere Veröffentlichung geplant, gleich nachdem wir von Thanksgiving zurück sind, und basierend darauf, wie Clint's alle unsere Einladungen zu Code-Review-Meetings in diesem Monat abgelehnt hat, denke ich, dass ich in ein paar Tagen eine Wiederholung derselben Sache sehen werde.
Ich kann nicht sagen, ob Clint wirklich helfen oder nur sein Ego spielen lassen will. Ich würde seine Hilfe beim Coaching unserer Junior-Entwickler lieben, aber die Art und Weise, wie er es tut, ist nicht hilfreich. Ich glaube nicht, dass meine Ingenieure jemals in der Lage sein werden, alles zu erfassen, was Clint kann.
Wie kann ich Clint sagen, wenn er Feedback geben möchte, muss es zu unseren Bedingungen sein?
EDIT : Es ist mir peinlich, dass ich dieses Detail ausgelassen habe, aber unsere Ingenieure öffnen Pull-Requests aus ihren Feature-Zweigen, development
wohin dieses Feedback gehen sollte (zu diesen Pull-Requests) ... wenn diese Änderungen alle bereit sind, in unsere Produktionsumgebung zu gehen ( Nachdem unsere QA-Ingenieure Integrationstests durchgeführt und überprüft haben, dass die Änderungen ihrer Meinung nach sicher sind), öffnen wir einen PR, um ihn zusammenzuführen, Master
nachdem eng die Änderungen genehmigt und zugestimmt haben, dass wir nichts Schreckliches eingeführt haben, und stellen sie dann am nächsten Morgen bereit
Sofern Clint keine größeren „Do not deploy“-Fehler findet, würde ich ihm einfach für sein Feedback danken und ihm erklären, wie Sie die von ihm angesprochenen Punkte (falls zutreffend) in zukünftigen Versionen angehen wollen.
Wenn er damit ein Problem hat, dann haben Sie die Möglichkeit zu erklären, warum es für ihn besser wäre, früher Feedback zu geben.
Letztlich ist es sein Problem, dass er so spät Feedback gibt. Machen Sie es nicht zu Ihrem eigenen, indem Sie das Feedback als persönliches/Team-Versagen ansehen.
Entweder ist für die Freigabe eine Codeüberprüfung erforderlich, oder sie ist nicht erforderlich. Ist dies erforderlich, so hat der Gutachter für die rechtzeitige Begutachtung zu sorgen. Sie müssen die Macht haben, zu seinem Schreibtisch zu gehen und zu sagen: "Lassen Sie alles andere fallen und machen Sie diese Überprüfung, oder wir können das Veröffentlichungsdatum nicht einhalten." Und Sie müssen die Möglichkeit haben, zu sagen: "Entschuldigung, wir konnten nicht rechtzeitig veröffentlichen, weil die Überprüfung nicht rechtzeitig fertig war".
Wenn es nicht erforderlich ist, geben Sie es frei.
PS. Wenn Clint einen Tag gegeben wird, um Wochen oder Monate der Arbeit zu überprüfen, scheint dies darauf hinzudeuten, dass die Überprüfung nicht erforderlich war. Aber wenn Clint in dieser kurzen Zeit Probleme findet, scheint das darauf hinzudeuten, dass frühere Rezensionen nicht ganz so gut waren, wie sie hätten sein sollen.
Es hört sich so an, als gäbe es hier eine Reihe von Problemen, aber alle sind ansprechbar.
Prozessprobleme:
Persönliche Probleme:
Wenn Sie die PR bis zum Abend vor dem Push für eine "echte Überprüfung" offen lassen, bedeutet dies, dass Sie entweder alle Bewertungen ernst nehmen und nicht zusammenführen und nicht pushen müssen, wenn es nicht adressierte Kommentare gibt, oder Sie müssen die Push-Planung so ändern, dass es welche gibt genügend Zeit, um die Überprüfung abzuschließen und den Push zu planen oder abzubrechen (z. B. werden PRs, die nicht mindestens 24 Stunden vor dem geplanten Push zusammengeführt wurden, nicht versendet).
Es könnte eine gute Idee sein, ihn auf einen Kaffee einzuladen und darüber zu sprechen, indem Sie ihn wissen lassen, dass Sie seinen Beitrag zu schätzen wissen, aber dass der Prozess so, wie er jetzt ist, bedeutet, dass Sie seine Bewertung nicht früh genug erhalten haben Handeln Sie diesmal danach und betonen Sie "dieses Mal". Lassen Sie ihn wissen, dass Sie den Prozess ändern möchten, und fragen Sie ihn, ob er Vorschläge hat.
Fragen Sie ihn, was es ihm erleichtern würde, einen Beitrag zu leisten, und stellen Sie sicher, dass er versteht, dass Sie es zu schätzen wissen, dass er sich die Mühe gemacht hat. Wenn er wirklich versucht zu helfen, dann demotiviert ihn auch keine Reaktion auf seine Kommentare. Es hört sich so an, als hätte es keine Stopper gegeben, seit Sie mit der Zusammenführung fortgefahren sind, aber es klingt auch so, als wäre die Arbeit aus seiner Sicht vergebliche Mühe gewesen.
Danken Sie ihm , dass er die Probleme gefunden hat, auf die er hingewiesen hat, und lassen Sie ihn wissen, dass Sie beabsichtigen, die wichtigen Dinge anzusprechen, die er angesprochen hat. Sie sollten in Betracht ziehen, dies sowohl persönlich mit ihm als auch öffentlich in der geschlossenen PR zu tun, um ihm und dem Team klar zu machen, dass Sie froh sind, dass er hilft. Sich privat und öffentlich für seine Fürsorge und freiwillige Hilfe zu bedanken, selbst wenn keiner der Bewertungskommentare aus der Sicht Ihres Teams umsetzbar war, ist nur höflich und hilft, Solidarität zwischen den Teams aufzubauen.
Wie kann ich Clint sagen, wenn er Feedback geben möchte, muss es zu unseren Bedingungen sein?
Sofern Clint nicht für Sie arbeitet oder es einen formellen Prozess gibt, der vorschreibt, wann Kommentare nicht erlaubt sind, können Sie Clint nicht zwingen, sich an „Ihre Bedingungen“ zu halten.
Seine Kommentare kannst du ignorieren. Sie können ihm für die "etwas hilfreichen" Kommentare danken, um mehr davon zu ermutigen. Sie können Elemente zu Ihrem technischen Rückstand hinzufügen, um auf diese hilfreichen Kommentare einzugehen. Sie können ihn weiterhin zu Code-Review-Meetings einladen. Sie können Ihr Team ermutigen, sich nicht von ein paar verspäteten Kommentaren demotivieren zu lassen.
1) Gibt es niemanden zwischen Ihnen und 20 Ingenieuren, der Ihnen helfen kann, sie zu betreuen? Aus diesem Grund sind 20 Personen zu viele Personen in einem Team, da eine Person auf keinen Fall 20 Personen verwalten und betreuen kann. Sie müssen die Größe Ihres Teams reduzieren oder zumindest die Größe Ihrer Verantwortung, weil Sie viel zu dünn gestreut sind.
2) In Bezug auf die Veröffentlichung des Codes, ist Clint in Ihrem Team? Wenn Clint in Ihrem Team ist, dann sollte Clint an Code-Reviews beteiligt sein, besonders wenn er ein leitender Ingenieur ist. Sie sollten Ihre Mentees dazu ermutigen, wenn möglich Code-Reviews an Clint zu senden (überladen Sie ihn nicht, aber ermutigen Sie sie, Clint in den Prozess einzubeziehen). Wenn Clint nicht in Ihrem Team ist, lassen Sie ihn die Probleme als Fehlerberichte protokollieren, es sei denn, die Probleme, die Clint findet, sind kritische, betriebsunterbrechende Fehler. Er ist nicht in Ihrem Team, er ist nicht für Ihr Produkt verantwortlich.
4) Was Clints „Code-Review-Meetings“ vermisst: Erstens bin ich mir nicht sicher, was ein „Code-Review-Meeting“ ist. Code-Reviews sind asynchrone Vorgänge: Der Entwickler reicht den Code ein, der Code-Reviewer prüft, während der Entwickler etwas anderes macht, Review beendet, Entwickler spricht Kommentare an, spülen, wiederholen. Ich weiß nicht, was ein "Code-Review-Meeting" ist, es klingt albern. Aber abgesehen davon, wenn Clint in Ihrem Team ist, sollte Clint an Teambesprechungen teilnehmen. Wenn Clint nicht in Ihrem Team ist, muss Clint nicht an Teambesprechungen teilnehmen. So einfach ist das.
Jemand muss den "Prozess" definieren, zB die Reihenfolge, in der Dinge passieren.
Wenn ich als Entwickler nicht derjenige bin, der den Prozess definiert, mache ich eine Codeüberprüfung (wenn das meine Aufgabe ist, wie von meinem Manager erwartet), wenn der Prozess es mir sagt und/oder wenn mich jemand darum bittet.
Ich verstehe den Teil in der Frage nicht, in dem es heißt: "Alle unsere Einladungen zu Code-Review-Meetings in diesem Monat abgelehnt".
Ich bin mir übrigens nicht sicher, was ein "Code-Review-Meeting" ist. Meine Vorstellung von einem Code-Review ist:
Wenn ich "Senior" bin, höre ich vielleicht nicht auf die Besprechungen anderer Leute.
Um meine Zeit zu sparen (meinen Aufwand zu reduzieren), überprüfe ich gerne Code, nachdem er getestet wurde. Ich könnte immer noch Fehler finden (z. B. wenn das Testen nicht perfekt abgeschlossen ist), aber es ist einfacher, Code zu überprüfen, der funktioniert, als Code, der nicht funktioniert. Das Überprüfen von Code, der nicht funktioniert, wird als "Entwicklung und Debugging" bezeichnet und ist zeitaufwändiger.
Können Sie "Integrationstests" einfacher machen, vielleicht automatisierter? Damit Sie tun könnten:
Alternativ können Sie vor der Codeüberprüfung zusammenführen (wenn Sie darauf vertrauen, dass die Integrationstests ohne Überprüfung ausreichend waren), die Codeüberprüfung im Hauptzweig durchführen und die Codeüberprüfungskommentare als Eingabe dafür verwenden, was Sie bei einer nachfolgenden Iteration verbessern möchten (eine nachfolgende "Sprint").
Ich bin mir ziemlich sicher, dass dieser Typ dir nur sagt, dass du einen schlechten Job machst. Das bedeutet "es ist nicht meine Aufgabe, Ihre Ingenieure zu unterrichten". Er ist nicht daran interessiert, Ihre Arbeit für Sie zu erledigen, er möchte, dass Sie es besser machen. Aus diesem Grund hat er Code überprüft, der für die Produktion bestimmt ist (Code, den Sie abgemeldet haben), nicht Code in der Pipeline. Was man dagegen tun kann, nun, das ist ein Thema für eine andere Frage.
In acht nehmen.
✓ Leitender Entwickler
✓ Findet Probleme im Code, die niemand sonst gemacht hat
✓ Team aufgrund der verspäteten Meldung entmutigt
✓ Berichtet etwas über „nicht seine Aufgabe“, wird aber trotzdem überprüft
✗ bereitet sich auf eine Wiederholung des gleichen Szenarios vor
Es sieht nicht so gut aus für das Team und auch nicht für den Senior Developer.
Aber ich sage dir, pass auf. Stellen Sie sicher, dass Sie alle Kommentare zu dieser Pull-Rezension verstehen . Und ich meine wirklich verstehen. "Das ist einfach falsch." zählt nicht, es sei denn, Sie haben sich wirklich die Mühe gemacht, dies zu überprüfen.
Wahrscheinlich gibt es nichts Wichtiges, das darauf wartet, für Sie zerstörerisch zu sein. Aber es könnte einen äußerst subtilen Datenverlustfehler geben, den er gefunden hat und der beim Testen nicht aufgedeckt werden kann. Sie werden den Unterschied nicht erkennen, bis Sie alle Kommentare verstanden haben.
Nachtrag: Um die Teammoral wiederherzustellen, stellen Sie sicher, dass Sie genügend Zeit haben, um alle Probleme zu beheben, die der Sr. Developer in dieser Pull-Anforderung gefunden hat, die der Rest des Teams beheben sollte.
Das Problem hier ist, dass Ihr Workflow-Prozess fehlerhaft ist. Peer-Reviews sollten vor dem Integrationstest stattfinden, da das Warten bis nach dem Testen den Prozess verlangsamen kann. Wenn die Peer-Review Probleme findet, die Änderungen erfordern, und Integrationstests bereits durchgeführt wurden, wird mehr Zeit benötigt, um zurückzugehen und alle Tests zu wiederholen, nachdem die Änderungen abgeschlossen sind.
Idealerweise sollte der Entwickler Tests schreiben und durchführen, während er den Code entwickelt, und alle abschließenden Tests sollten durchgeführt werden, nachdem der Code einem Peer-Review unterzogen wurde, um sicherzustellen, dass er wie erwartet funktioniert. Eine Sache, an die man sich erinnern sollte, ist, dass ein Peer-Review Fehler im Code erkennen kann, bevor sie ein System während des Integrationstests herunterfahren können.
Sie haben zwei verschiedene Arten von Bewertungen (drei, wenn Sie Ihr persönliches Treffen mitzählen). Das ist an sich nicht schlecht, aber es bedeutet, dass Sie Ihre Erwartungen für jeden Umstand sehr deutlich machen müssen. Ich würde eine Pull-Request-Vorlage für Ihre abschließende Überprüfung erstellen, die in etwa so aussieht. Dies macht nicht nur deutlich, was von dieser Bewertung erwartet wird, sondern auch, wie Sie Ihr Feedback in Zukunft erfolgreicher bearbeiten können.
<Zusammenfassung der Änderungen>
Dies ist eine Überprüfung vor der Produktion. Sein Zweck ist es, große Probleme zu finden, wie:
Abgesehen von solchen Problemen wird diese Pull-Anforderung am <Datum und Uhrzeit> zusammengeführt.
Die einzelnen Design-Reviews, in denen wir Lesbarkeit, Wartbarkeit und Gesamtarchitektur besprechen, sind bereits abgeschlossen. Wenn Sie diese Art von Problemen hier finden, öffnen Sie bitte ein Problem oder nehmen Sie die Änderungen in Ihrer eigenen Pull-Anforderung an die Entwicklung vor, anstatt diese Pull-Anforderung zu überladen. Die Design-Reviews wurden in den folgenden Pull-Requests durchgeführt:
schleske
Benutzer34687
Bernhard Bärker
David Konrad
Henrik Rosseau
Henrik Rosseau
Henrik Rosseau
Henrik Rosseau
WernerCD
jpmc26