34 Punkte von ironlung 2023-10-18 | Noch keine Kommentare. | Auf WhatsApp teilen
  1. Eine einheitliche Branch-Strategie festlegen

    • Wenn Teammitglieder mit Wissen aus verschiedenen Fachbereichen zusammenarbeiten, können Ansätze für den Workflow kollidieren
    • Um das zu verhindern, sollte die Leitung eine einheitliche Branch-Strategie festlegen und sie an alle kommunizieren
    • Welche Branch-Workflows geeignet sind, hängt von verschiedenen Faktoren ab, etwa Teamgröße, Erfahrungsniveau, Skalierungsanforderungen und Arbeitsbeschränkungen
    • Das Entwicklungsteam kann einem bereits festgelegten Workflow folgen, aber auch einen Workflow passend zu den Teamanforderungen erstellen
    • Inhalte, die ein Workflow umfassen kann
      • Zentralisierter Workflow: Es gibt ein Repository und einen Master-Branch. Dabei besteht das Risiko, Änderungen zu überschreiben
      • Feature-Branch: Jedes Mal, wenn eine neue Funktion hinzugefügt wird, wird ein neuer Branch erstellt. Funktionsbezogene Commits kommen in diesen Feature-Branch
      • Git Flow: eine extreme Form des Feature-Branching. Bei der Entwicklung mit Git Flow gibt es neben dem Master einen separaten Entwicklungs-Branch. Unterstützt werden Feature-, Release- und Hotfix-Branches. Entwickelt wird im Entwicklungs-Branch, dann in den Release-Branch verschoben und anschließend in den Master-Branch gemergt
      • Task-Branch-Entwicklung: GitLab Flow ist ein Beispiel für diese Art der Entwicklung. Es verbindet funktionsorientierte Entwicklung mit Issue-Tracking über Feature-Branches. GitLab Flow verwaltet mit separaten dedizierten Branches mehrere Umgebungen wie Staging, Produktionstests und Produktion. So wird sichergestellt, dass eingecheckte Änderungen über alle Umgebungen hinweg getestet werden
    • Auswirkungen auf die Zusammenarbeit:
      • Wenn alle in einem gemeinsamen Workflow harmonieren, sinkt die Wahrscheinlichkeit, Code zu überschreiben oder den Master-Branch zu beschädigen
      • Alle Beteiligten werden mit Entwicklungs- und Deployment-Prozessen vertraut, sodass Teammitglieder leichter zur Arbeit anderer beitragen können
      • Eine klare und prägnante Branch-Strategie führt zu einem positiven Kreislauf aus neuem Code-Merge und Weiterentwicklung des Projekts
      • Dieses Umfeld hilft Teammitgliedern dabei, Meetings zu organisieren sowie Deadlines und Arbeitslast zu steuern
      • Auswirkungen der einzelnen Workflows auf die Zusammenarbeit
        • Zentralisierter Workflow: effektiv für kleine Teams (weniger als 5 Entwickler), die gut kommunizieren können, damit nicht zwei Entwickler gleichzeitig doppelt am selben Code arbeiten
        • Feature-Branch und Git Flow: verbinden größere Teams, da mehr Code Reviews, Push-Regeln, Code-Owner und umfassendere Tests erforderlich sind
        • Task-Branch-Entwicklung: hilft Teammitgliedern, Anforderungen in kleine Funktionspakete zu zerlegen, die in Task-Branches überführt werden. Dieser Workflow umfasst kollaborative Praktiken wie Code-Snippets, Code Reviews und Unit-Tests. Wenn Tests fehlschlagen, arbeitet das Team gemeinsam daran herauszufinden, was schiefgelaufen ist
  2. In kleinen Einheiten häufig committen

    • Wenn Vollständigkeit priorisiert wird, kann es passieren, dass erst bei fast fertiggestelltem Projekt ein großer Commit erfolgt
    • Wenn einfache Funktionsvalidierung und kleine Zwischenschritte übersprungen werden, kann es zu Fehlentwicklungen kommen oder Zeit in die falsche Richtung investiert werden
    • Jedes Mal committen, wenn funktionierende Tests und lauffähiger Code vorhanden sind
    • Das Projekt sollte in kleine Schritte vereinfacht werden, und durch häufige Commits muss ein Weg gefunden werden, große Ziele zu erreichen
    • Auswirkungen auf die Zusammenarbeit:
      • Wenn sich eine Kultur häufiger Commits etabliert, erhält jeder mehr Transparenz im Code-Repository und kann leicht sehen, woran andere arbeiten
      • Wenn Arbeitsergebnisse in Feature-Branches oder Merge Requests geteilt werden, lassen sich doppelte Arbeiten anderer Teammitglieder vermeiden
      • Auch wenn etwas noch nicht bereit für ein Review ist, sollte es häufig in den Feature-Branch gepusht werden
      • Wenn Arbeit vor dem Abschluss geteilt wird, werden Diskussion und Feedback aktiviert, sodass sich die Qualität schon vor dem Code Review verbessern kann
      • Wenn Arbeit in mehrere Commits aufgeteilt wird, liefert das bei späteren Codeprüfungen nützliche Informationen für Entwickler und andere Teams
      • Es lässt sich pro Commit klar nachvollziehen, wie eine Funktion entwickelt wurde
      • Nicht zusammenhängende Änderungsverläufe bleiben erhalten, Rollbacks auf gewünschte Zeitpunkte werden möglich, und bestimmte Codeänderungen lassen sich gezielt rückgängig machen
  3. Detaillierte Commit-Messages schreiben

    • Eine Commit-Message sollte nicht nur den Inhalt des Commits, sondern auch die Absicht des Entwicklers widerspiegeln
    • Mit der Commit-Message sollte erklärt werden, warum die Änderung vorgenommen wurde
    • Beispiel für eine gute Commit-Message: „Templates zusammengeführt, um doppelten Code in der Benutzeroberfläche zu reduzieren“
    • Wörter wie „Änderung“, „Verbesserung“, „Fix“, „Refactoring“ in Commit-Messages sind für sich genommen keine nützlichen Informationen
    • Auswirkungen auf die Zusammenarbeit:
      • Detaillierte Commit-Messages erhöhen die Transparenz und schaffen Sichtbarkeit über den Fortschritt, sodass Teammitglieder, Kunden und künftige Beitragende den Entwicklungsprozess besser verstehen
      • Bei Code Reviews helfen Commit-Messages dabei, wiederkehrte Abläufe nachzuvollziehen und Änderungen nach Releases, Abstimmungen oder geänderten Anforderungen zu erkennen
      • Ausführliche Commit-Messages helfen QA- und Security-Teams bei Codeprüfungen, Problembereiche zu identifizieren und bestimmte Änderungen rückgängig zu machen
      • Wenn Commit-Messages ausführlich geschrieben werden, verhindert das doppelte Arbeit anderer Teammitglieder, minimiert Verzögerungen und unterstützt einen stabilen Projektfortschritt
  4. Mit Branches entwickeln

    • Entwicklung auf einem Branch bedeutet im Grunde, den aktuellen Zustand auf diesem Branch zu kopieren und darauf zu arbeiten
    • Mit Branches können Codeänderungen vorgenommen werden, ohne die Haupt-Codebasis zu beeinflussen
    • Die Änderungshistorie wird innerhalb des Branches verwaltet
    • Wenn der Code bereit ist, kann er in den Master-Branch gemergt werden
    • Entwicklung auf Branches ermöglicht einen strukturierteren Ansatz beim Entwickeln
    • Entwürfe in Entwicklung können getrennt vom stabil getesteten Master-Code separat verwaltet werden
    • Auswirkungen auf die Zusammenarbeit:
      • Teammitglieder können innovative Lösungsansätze und Experimente für komplexe Probleme ausprobieren
      • Das Entwicklungsteam kann kreative Herausforderungen angehen, ohne ständig Sorge zu haben, den Master-Branch zu beeinträchtigen
      • Vor dem Merge in den Master-Branch kann gemeinsam überprüft werden, ob die Lösung korrekt funktioniert
      • Betriebs-, QA- und Security-Teams können den Code vor dem Deployment prüfen, und alle Beteiligten erhalten vor dem Release die Möglichkeit, Ideen einzubringen und potenzielle Probleme zu diskutieren
  5. Regelmäßige Code Reviews durchführen

    • Sichert kontinuierliche Verbesserung und verhindert instabilen Code
    • Sobald es zu prüfenden Code gibt, sollte ein Kollege, Teammitglied oder Fachexperte, der das Projekt gut kennt, um ein Code Review gebeten werden
    • Worauf bei Code Reviews zu achten ist:
      • Erklären, welche Änderungen notwendig sind
      • Alternativen anbieten, dabei aber davon ausgehen, dass der Entwickler diese bereits bedacht hat
      • Auch im Lösungsprozess sollte nach Wegen gesucht werden, den Code zu vereinfachen
    • Auswirkungen auf die Zusammenarbeit:
      • Code Reviews bringen andere Sichtweisen auf Problemlösung und Implementierung ein
      • Sie sind ein zusätzlicher Blick, um Bugs, Logikfehler oder potenzielle Edge Cases zu finden
      • Sie helfen, Probleme abzufedern, die auftreten können, wenn man sich durch schwierige Themen zur Veröffentlichung vorarbeitet
      • Lösungen können überprüft, Meinungen eingebracht und Reviews in Zusammenarbeit mit Teammitgliedern durchgeführt werden
      • Man kann verschiedene Coding-Methoden, Workflow-Know-how und neue Arten der Problemlösung lernen

Noch keine Kommentare.

Noch keine Kommentare.