Ich arbeite in einem mittelgroßen Team, das denselben Quellcode verwendet und zwar weiterhin integriert ist, aber da wir alle in derselben Branche arbeiten müssen, ist der Build fast immer fehlerhaft.
Da wir auch eine Regel haben, die kürzlich eingeführt wurde, um die kaputten Builds zu lindern, die besagt, dass niemand einchecken darf, während gebaut wird, ist sie rot.
Trotzdem haben alle an einem Tag eine Handvoll Zeitfenster von 10-15 Minuten, an denen wir einchecken durften.
Und während das Team wächst, werden die Zeitfenster für Check-in-Möglichkeiten immer kürzer. Das zwingt Entwickler, ihre Änderungen lokal zu akkumulieren, was zu größeren Änderungsmengen führt, die noch schwieriger sicherzustellen sind, dass die Änderungen nichts kaputt machen. Sie können den Teufelskreis sehen.
Was können Sie empfehlen, damit ich in einem solchen Umfeld effektiv arbeiten kann? Denken Sie auch daran, dass ich ein Entwickler und kein Manager bin und den Prozess oder das Verhalten anderer Menschen nicht wesentlich ändern kann.
Antworten:
Zunächst dieser Kommentar:
ist völlig falsch. Ich höre es oft von Leuten, die nicht daran gewöhnt sind, sich zu verzweigen, aber es ist immer noch falsch.
Wenn viele Entwickler Änderungen lokal akkumulieren, bilden ihre lokalen Änderungen einen De-facto-Zweig des Haupt-Repositorys.
Wenn sie endlich vorantreiben, ist dies eine de-facto-Fusion .
Die Tatsache, dass Ihre Zweige und Zusammenführungen implizit sind, beseitigt nicht die zusätzliche Komplexität, die Sie befürchten, sondern verbirgt sie nur. Die Wahrheit ist, dass es Ihnen (Plural = das ganze Team) helfen kann, diesen Prozess explizit zu machen, um zu lernen, wie man damit umgeht.
Jetzt sagst du
In diesem Fall kann der Build jedoch nie repariert werden, sodass er nicht ganz genau sein kann.
Wenn es sinnvoll ist, lokal zu erstellen (dh der Build ist nicht zu groß oder zu langsam), sollten Entwickler dies im Allgemeinen tun, bevor sie es trotzdem tun.
Ich nehme an, dass dies nicht der Fall ist, weil sie dann keine kaputten Builds weitergeben würden, aber es wäre großartig, wenn Sie diesen Punkt klarstellen könnten.
Im Allgemeinen ist die Antwort auf
ist: Hör auf den Build zu brechen .
quelle
Es ist in der Tat bösartig. Änderungen vor Ort zu akkumulieren, ist eine große rote Fahne, die darauf hinweist, dass etwas im Entwicklungsprozess stark verrottet ist. Es macht den ganzen Zweck eines Versionskontrollsystems zunichte .
Solange Sie sich von Änderungen des Prozesses oder des Verhaltens anderer Personen fernhalten möchten, besteht die natürlichste Lösung darin, eine eigene Filiale einzurichten und diese zu verwenden, um Ihre Änderungen zu "akkumulieren" Chance).
Wenn es mehr Leute wie Sie gibt, können Sie sogar zusammenarbeiten und einen gemeinsamen Entwicklungszweig einrichten , um Ihre Updates frei auszutauschen, ohne inkompetente Verwaltungsideen zu beeinträchtigen. Das Verzweigen ermöglicht viele verschiedene Möglichkeiten, um die Teamarbeit zu vereinfachen.
Aus Gründen der Präzision, die Sie tatsächlich können , sind diese Fragen von Einfluss und Kommunikationsfähigkeiten und man nicht wirklich in Machtposition zu ändern Dinge sein müssen , nach ihrem Geschmack (das Web für so etwas wie „verwalten“ , wenn Sie sind an weiteren Details interessiert).
Jedoch , dass die recht umständlich und Mühe aufwendig und ich kann durchaus verstehen , wenn man einfach bleiben vorzieht , konzentrierte sich auf Codierung, mit wenig Engagement in der Politik - so , wenn Sie nicht wollen (obwohl in der Theorie Sie können ), das ist verständlich. :)
quelle
Ich bin sensibel für die Vorstellung, dass Sie sich machtlos fühlen, die Umgebung zu verändern, aber ich denke, diese Situation ist eine ernsthafte Herausforderung für Ihre Professionalität als Programmierer.
Was würde passieren, wenn ein Chirurg schmutzige Skalpelle zusammen mit den sauberen aufbewahrt? Was würde passieren, wenn ein Klempner die von ihm verlegten Rohre nicht testen würde? Was würde passieren, wenn ein Geiger immer verstimmt mit dem Orchester spielte?
Warum sollten Programmierer von Teamarbeit und Höflichkeit befreit sein? Als Mitglied dieses Teams tragen Sie gemeinsam die Verantwortung für das Ergebnis. Es ist unverantwortlich, das Team zu ignorieren, da es seine eigenen Anstrengungen sabotiert.
Ich bin neugierig, woher die Regel kommt, dass "niemand einchecken darf, während gebaut wird"? Es ist eine gute Regel, wenn sich dann jeder darauf konzentriert, den Build zu reparieren. Ich würde versuchen, mit gutem Beispiel voranzugehen und den Build zu reparieren, wenn er kaputt ist. Seien wir ehrlich, sonst erledigen Sie sowieso nichts. Wenn Sie das ärgert, würde ich vorschlagen, diese Bedenken auszudrücken. Die Stimme von jemandem, der aktiv versucht, eine Situation zu verbessern, hat mehr Einfluss als der Mann, der in der Ecke murrt.
quelle
Ich denke, solange Sie denken, dass Sie "nur ein Entwickler" sind und daher nichts an den Dingen ändern können, die Sie unter diesem Problem leiden werden.
Was Sie tun müssen, ist, dass Sie jedes Mal, wenn jemand den Build bricht, jedes Commit aus dem Repository rückgängig machen müssen, und dann diesem Typen mitteilen müssen, dass er den Build gerade abgebrochen hat und das aufhören muss. Sie müssen dem Manager diese Situation auch erklären und ihm mitteilen, dass die Produktivität Ihres Teams unter diesem Problem leidet.
Sie müssen alles in Ihrer Macht Stehende tun, um den Prozess besser zu ändern und sich später zu entschuldigen, anstatt um Erlaubnis zu bitten.
Ich denke , dass Sie und Ihr Team in einer Situation, wobei die Prozessanforderungen geändert werden und Sie können nicht effizient mit dem gebrochenen Modell arbeiten. Ich denke auch, dass es in Ihrer Verantwortung liegt, etwas gegen dieses Problem zu unternehmen, wenn Sie es erkannt haben. Wenn niemand anderes etwas gegen das Problem unternehmen wird, sind Sie derjenige, der es tun muss!
quelle
Ich kann mich auf Ihre Notlage beziehen, ich sah mich mit meinem letzten Projekt bei der Arbeit einer ähnlichen Situation gegenüber. Wir haben schließlich eine Art „heiße Kartoffel“ System implementiert, wo der Entwickler, die zuletzt den Build brach musste babysit / nanny / überwachen, bis es wurde festgelegt und bestanden alle unsere Verifikationstests.
Dies war erfolgreich, da die Erstellungs- und Überprüfungstests routinemäßig ~ 4 Stunden dauerten. Wenn Sie also den Build abbrechen, verlieren Sie einen halben Tag, um echte Arbeit zu leisten. Unnötig zu erwähnen, dass Entwickler die Zweige effizienter nutzen, bevor sie in den Trunk integriert werden. Für die meisten Entwickler lautete die vorherige Einstellung: "Ich lasse mich vom CI-Build-System benachrichtigen, wenn mein Code kaputt ist."
quelle
Eine einfache Änderung am CI-System würde dies bewirken: Jede Änderung, die den Build bricht, wird automatisch rückgängig gemacht. Lassen Sie das CI-Repository sogar zu einem Staging-Bereich werden, in dem Änderungen nur dann in das autorisierende Repository übertragen werden, wenn der Build grün ist. Tools wie Gerrit können hier helfen.
quelle
Zwei andere Dinge könnten hier helfen:
Aber du solltest dir wirklich Äste anschauen.
quelle