Wir haben das Konzept, dass der gesamte Code in einer Pull-Anfrage in den Master produktionsbereit sein sollte. Dies ist sinnvoll und meiner Meinung nach eine faire Aussage.
Die Idee dabei ist, dass Sie nach dem Erstellen der PR angeben, dass Sie dies in den Master übernommen hätten, aber dass einige Rezensenten einfach mit Ihnen übereinstimmen und alles erkennen sollen, was Sie zufällig verpassen.
Da wir nur Menschen sind, machen wir Fehler und hoffen, dass andere Prüfer Elemente finden, die Unit-Tests nicht finden konnten - Rechtschreibfehler, falsche Javadocs usw.
ABER, ist eine Pull-Anfrage der Ort, an dem wir Entwicklern ein gewisses Maß an Unterstützung / Schulung bieten sollten, und wenn ja, auf welchem Niveau?
Jedes Mal, wenn Sie neue Änderungen vornehmen, müssen Prüfer Ihre Änderungen erneut überprüfen, was sich in ihrer Entwicklungszeit niederschlägt und dazu führt, dass Änderungen erneut überprüft werden.
Also, wie viel Training wird erwartet, sollte in Pull Requests erlaubt sein? Ein Teil von mir hat das Gefühl, dass es von Junioren zu Senioren unterschiedlich ist. Ich bin jedoch auch der Meinung, dass dies nicht der richtige Ort sein sollte, um eine Vielzahl von Problemen zu finden - selbst für Junioren.
Hat jemand anderes Probleme damit, Entwickler dazu zu bringen, das Ziel "Meine Pull-Anfrage sollte produktionsbereit sein" zu erreichen?
quelle
Wenn Code, der gegen grundlegende Designprinzipien oder -standards des Teams verstößt, die Pull-Request-Phase erreicht, sollte er dort unbedingt angesprochen werden. Und Codeüberprüfungen können ein gutes Mittel sein, um die Standards und Entwurfspraktiken des Teams zu kommunizieren.
Aber ist es der beste Ort? Hier sind einige Gründe, warum ich nicht sagen würde:
Paarprogrammierung und Designüberprüfungen sind bevorzugte Orte für ein größeres Feedback.
Das heißt, es wäre noch schlimmer, den Code durchlaufen zu lassen, aus Angst, dass das Adressieren während der Codeüberprüfung "falsch" ist, und es kann einige Umstände geben (z. B. entfernte Teams), in denen dies das Beste ist, was Sie tun können. Beheben Sie in diesem Fall die Probleme bei der Codeüberprüfung und auch die Probleme in Ihrem Entwicklungsprozess, die bisher aufgetreten sind.
Das Auffinden des Problems während einer Pull-Anforderung ist zwar möglicherweise nicht ideal, aber sicherlich besser als beim Testen oder bei einem Produktionsproblem.
quelle
Ich würde es eher so ausdrücken, da Pull-Anfragen nicht der einzige Ort sein sollten, an dem Sie Menschen schulen. Außerdem sind Junior-Entwickler nicht die einzigen, die möglicherweise eine Schulung für eine Pull-Anfrage benötigen. Auftragnehmer, Open-Source-Mitarbeiter, Entwickler aus anderen Abteilungen, die mit den örtlichen Vorschriften oder Standards nicht vertraut sind, und selbst erfahrene Programmierer müssen gelegentlich daran erinnert werden, wenn sie selbstgefällig werden.
Es ist sehr kostengünstig, eine Pull-Anfrage für eine Weile offen zu halten. Geben Sie so viel oder so wenig Feedback, wie Sie möchten, von so vielen Personen, wie Sie möchten, und lassen Sie es dann in Ruhe, bis die Autoren Sie erneut benachrichtigen, dass sie glauben, dass es zum Zusammenführen bereit ist. Eine Pull-Anfrage ist ein großartiges zentrales Tool für die Kommunikation über vorgeschlagene Codeänderungen, unabhängig davon, ob diese vollständig bereit sind oder viel Arbeit erfordern.
Einige Überprüfungen von Pull-Anfragen stellen sich als wenig mehr als ein Stempel heraus, und andere, bei denen es sich um externe Einreichungen an ein Team handelt, können einen Monat dauern. Die erste Art ist schön, wenn man sie bekommen kann, aber das bedeutet nicht, dass die zweite Art nicht wertvoll ist. Der Versuch, die Leute dazu zu bringen, ständig perfekte Pull-Anfragen einzureichen, wird für alle nur frustrierend sein.
quelle
Ich hatte immer das Gefühl, dass eines der Kennzeichen eines guten Leads jemand ist, der in jedem Entwicklungszyklus die erforderlichen zusätzlichen Schulungen anbietet. Für mich bedeutet das, dass ich nicht nur mich selbst codiere oder Code überprüfe, sondern mit mehr Nachwuchsentwicklern zusammen sitze und mit ihnen programmiere, um die Art von Landminen zu vermeiden, auf die ich getreten bin.
Hauptsächlich mache ich mir keine Illusionen darüber, dass unser Hauptziel Bildung ist - es ist nicht so. Egal, ob Sie ein Senior, ein Lead oder ein Junior-Entwickler sind, das Ziel ist nicht Ihre Erbauung. Ziel ist es immer, dem Kunden einen Qualitätscode zu liefern. Am besten pünktlich, im Rahmen des Budgets, tun, was sie wollen. Ich erkenne jedoch, dass es für mich unmöglich ist, die gesamte Arbeit selbst zu erledigen. Daher obliegt es mir, allen zu helfen, dem Team zum Erfolg zu verhelfen. Und das bedeutet, Trainingsmöglichkeiten zu erkennen, wenn sie in der Natur auftreten.
Auf Ihre Frage, ob Pull-Anfragen der richtige Ort für die Ausbildung von Junioren sind, muss ich sagen, dass es nicht ungewöhnlich ist, dass während dieser Zeit lehrreiche Momente auftreten. Hey, du wirst dich mit deinem ersten Zusammenführungskonflikt befassen müssen, lass uns das nach der Überprüfung durchgehen. Oh, sehen Sie, Sie haben keine Komponententests für Ihr DAO aufgenommen. Wir werden Ihre Überprüfung verschieben, bis wir die Gelegenheit hatten, diese neuen Methoden zu behandeln. Warum war es Ihrer Meinung nach besser, bei dieser Finanzberechnung doppelte Grundelemente zu verwenden als BigDecimals? Ja, das ist nicht wirklich ungewöhnlich.
Ich würde zwar sagen, dass dies sicherlich passieren kann, aber es ist eindeutig nicht das Hauptziel einer Pull-Anfrage. Ich habe auch nicht das Gefühl, dass der Code in einer Pull-Anfrage produktionsbereit ist. Oft ist es nicht.
Wenn Sie Feature- und Release-Zweige in einer Verzweigungsstrategie im Gitflow-Stil verwenden, werden Ihre Pull-Anforderungen eher zu Release-Kandidaten. Nicht produktionsbereit, aber etwas näheres. Sie wissen, dass Ihr Code kompiliert wird (rechts), und Sie haben genügend Test-Covfefe, um eine anständige Behauptung aufzustellen, dass er die Ziele der User Story erfüllt. Und da Sie bereits mehrere Integrationstests in Ihrer Entwicklungsumgebung durchgeführt haben, steht Ihnen eine großartige Demo zur Verfügung, falls Sie aufgefordert werden, Ihre Änderungen bei der Überprüfung Ihrer PR zu demonstrieren.
Letztendlich bin ich der Meinung, dass wir bei Überprüfungen der PR Unterstützung leisten sollten, aber diese Unterstützung bezieht sich nicht auf die allgemeine Kodierung. Stattdessen wird der vorgeschlagene Code für die Aufnahme in eine funktionierende Basis von Code in Produktionsqualität vorbereitet. Die PR bietet Entwicklern die Möglichkeit zu demonstrieren, dass sie für jede Änderung, die sie in die PR aufgenommen haben, eine Rechtfertigung und ein solides Verständnis dafür haben. Und selbst dann - selbst nachdem wir sie mit Unit-Tests, Demos und vielen Fragen belastet haben - ist nicht zu erwarten, dass die vorgeschlagenen Änderungen für die Produktion bereit sind.
Der Code ist nach all dem geschlossen. Aber dann lassen wir die Qualitätssicherung quälen.
quelle
Ich möchte allen für ihren Beitrag danken und mir helfen, zu verstehen, was die Leute zu diesem Thema zu sagen haben.
Dies ist meine Antwort nach dem gegebenen Feedback und mein Verständnis basiert jetzt auf den erhaltenen Antworten und Kommentaren. Vielen Dank an alle.
Zusammenfassung
quelle
Können Sie mehr über Ihre Unternehmenskultur in Bezug auf die technischen Teams sagen? Wenn Sie mit der Idee zu kämpfen haben, dass Code für die Produktion bereit ist, wenn ein Entwickler in die Hauptlinie einfließen möchte, was sagen Sie dann Ihren Entwicklern wirklich? Sie sagen ihnen, dass es in Ordnung ist, wenn ihre Arbeit "erledigt" ist, wenn sie nicht funktioniert? Ist es okay, wenn es das System kaputt macht? Wenn sie technische Schulden hinzufügen, ist das vielleicht in Ordnung, wenn sie dies rechtfertigen können und wissen, was sie tun, und zeigen, dass sie später zurückkommen und das Refactoring durchführen können. Aber wenn sie nicht wissen, warum sie etwas Gefährliches tun, wie oft werden Sie es passieren lassen?
Wenn Sie einen Junior-Entwickler haben, werden die ersten Pull-Anfragen offensichtlich Probleme haben. Schließlich sollten sie den Dreh raus bekommen. Wenn Sie feststellen, dass sie weiterhin Probleme haben, weisen Sie ihnen möglicherweise Arbeiten zu, für die sie noch nicht bereit sind?
Oder müssen Sie einen Ersatzjunior einstellen und denjenigen entlassen, der es nicht herausgefunden hat?
Weißt du was ich gesehen habe? Menschen, die keine kompetenten Entwickler sind, arbeiten jahrelang in einem Unternehmen, nur wegen Vetternwirtschaft. Daher erfordern ihre Pull-Anfragen natürlich mehrere Überprüfungen. Im Lean-Sprachgebrauch sind sie "Verschwendung" - eine Belastung für das Team und eine Belastung für das Endergebnis.
Sie müssen sich also selbst entscheiden: Wie viele Pull-Anfragen benötigen Ihre Junioren, um Kompetenz zu zeigen, und haben Sie den Mut, diejenigen loszulassen, die dies nicht tun?
quelle