Entwicklung eines Teamprojekts gegen Flying Solo

Diese Woche starte ich mein zweites Remote-Team-Projekt im Rahmen der Chingu-Kohorten. Dabei möchte ich mir eine Minute Zeit nehmen, um darüber nachzudenken, was ich in meiner ersten Reisekohorte gelernt habe.

Foto von Andrew Neel auf Unsplash

Als Teil eines Teams zu arbeiten, ist für mich nichts Neues. Ich habe in den letzten 20 Jahren in der Pharmaindustrie geforscht, und zwar in Teams mit unterschiedlichen Größen und Interaktionsebenen. Dies war jedoch meine erste Erfahrung als Teil eines Entwicklerteams und stellte mich vor einige neue Herausforderungen im Vergleich zur Entwicklung eines eigenen Projekts.

Meine Gruppe bestand aus drei Personen, die alle Erfahrung mit der Entwicklung von Full-Stack-Anwendungen hatten und von denen zwei (nicht ich) Erfahrung mit früheren Gruppenprojekten über Chingu hatten.

Als ich mich dem Projekt anschloss, hatte ich natürlich die üblichen Bedenken und die Nervosität, als Teil einer Gruppe zu codieren, wie „Was ist, wenn mein Code nicht mit den anderen in der Gruppe mithalten kann?“ Und „Was ist, wenn ich einen Code mache? Fehler machen und die Codebasis der Gruppe vollständig zerstören? “und so weiter…

Wie üblich haben sich diese Bedenken ausgewirkt, als wir begonnen haben, uns mit dem Projekt zu befassen, und ich würde gerne glauben, dass ich einen viel besseren Entwickler verlassen habe, weil ich ein Teil davon war. Ich habe viel von den beiden anderen Teammitgliedern gelernt und ich würde gerne glauben, dass sie im Gegenzug etwas von mir lernen konnten.

Wenn ich über die gesamte Erfahrung nachdenke, finde ich, dass es zwei Schlüsselelemente gab, die den Fortschritt und den Gesamterfolg des Teamprojekts stark beeinflussten, die in einzelnen Projekten, in der Kommunikation und im Workflow nicht zum Tragen kamen. Wie Sie weiter unten sehen werden, sind diese Elemente sehr eng miteinander verbunden, aber ich werde sie einzeln behandeln.

Kommunikation

Wenn Sie selbst an einem Projekt arbeiten, haben Sie jederzeit einen vollständigen Überblick über den Umfang und den Status Ihres Projekts. Wenn Sie dies nicht tun, können Sie mit ziemlicher Sicherheit sagen, dass Ihr Projekt einige schwerwiegende Probleme haben wird.

Als Teil eines Gruppenprojekts sind Sie jedoch darauf angewiesen, dass Ihre Teamkollegen Sie mit allen Änderungen versorgen, die sie vorgenommen haben (und sie sind auch in diesem Fall von Ihnen abhängig).

Foto von James Sutton auf Unsplash

Diese Mitteilungen können in unterschiedlicher Form erfolgen. Einige davon werden im folgenden Abschnitt des Workflows beschrieben. Es reicht jedoch aus, zu erwähnen, dass Sie eine Änderung am Projekt vorgenommen und es Ihren Teamkollegen nicht auf irgendeine Weise mitgeteilt haben. sie sind sich dessen nicht bewusst!

Das bedeutet, dass sie ihre eigenen Aufgaben fortsetzen, als ob Ihre Änderung nicht stattgefunden hätte. Dies kann zu unnötigen Kopfschmerzen und vielen verschwendeten Stunden auf der Straße führen. All dies hätte durch eine gute Kommunikation zwischen den Teammitgliedern verhindert werden können.

Oberflächlich betrachtet mag dies wie ein naheliegendes Konzept klingen und es nicht gerade wert sein, einen ganzen Artikel darüber zu schreiben (oder zu lesen). Wenn Sie es jedoch gewohnt sind, alleine zu arbeiten und die gesamte Kommunikation unbewusst in Ihrem Kopf stattfindet, ist dies eine wichtige Änderung in Ihrem normalen Prozess.

Stellen Sie daher sicher, dass Sie sich wie ein guter Teamkollege verhalten und alle auf dem Laufenden halten. Dies muss nicht schwierig oder zeitaufwändig sein. Wahrscheinlich hat Ihr Team Kommunikationswege eingerichtet. Es kann so einfach sein, jeden auf dem Laufenden zu halten, wie den Status einer Trello-Karte zu aktualisieren oder eine kurze Zeile in einem Slack-Channel abzulegen.

Im Zweifelsfall auf der Seite der Kommunikation irren.

Das heißt, wenn Sie sich nicht sicher sind, ob etwas für das Team relevant ist, geben Sie einfach eine kurze Information zu dem Kanal, den das Team verwendet, und fahren Sie fort.

Ich bezweifle, dass es viele ehemalige Teams gibt, die sagen: "Ich konnte meine Arbeit nicht machen, es war einfach zu viel Kommunikation im Gange!", Aber es gibt viele, die sagen: "Unser Team ist auseinandergefallen, weil niemand kommuniziert hat ...".

Arbeitsablauf

Das bringt uns zum Workflow.

Unter Workflow verstehe ich, wie Ihr Team den Git-Prozess verwaltet und ob es effektiv Filialen, Commits, Pull-Anforderungen usw. verwendet.

Wie ich bereits sagte, war dies mein erstes Gruppenentwicklungsprojekt. Ich hatte Git bereits für meine Soloprojekte verwendet, aber ich musste noch viel lernen, wenn ich Git als Teil eines Teams verwenden wollte.

Glücklicherweise hat Francesco Agnoletto eine Reihe von Leitfäden geschrieben, die klar umreißen, wie Git in einer Teamumgebung verwendet werden sollte. Ich empfehle dringend, alle drei Artikel zu lesen (und als Referenz zu speichern). Sie finden sie hier - Teil 1, Teil 2 und Teil 3.

Persönlich habe ich sie mehrmals gelesen und unsere Gruppe hat sie als Regel für den Umgang unseres Teams mit dem Workflow verwendet.

Ich werde nicht wiederholen, was Francesco in seinen Artikeln geschrieben hat, da ich denke, dass er das Material sehr klar behandelt, aber ich möchte einige Punkte hervorheben, die er in Bezug auf diesen Artikel anführt.

Erstens verbessert ein guter Workflow, wenn er effektiv durchgeführt wird, die Teamkommunikation. Wie ich bereits sagte, sind Kommunikation und Workflow eng miteinander verbunden und können sich gegenseitig verbessern.

Foto von Pavan Trikutam auf Unsplash

Wenn Sie sich für eine gute Benennungskonvention für Branchen entscheiden (und diese einhalten), wissen Ihre Teamkollegen genau, woran Sie arbeiten. Zusammen mit klaren und einfachen Titeln für Ihre Commits erhalten Sie nicht nur die beabsichtigte Versionskontrolle, sondern auch eine Übersicht darüber, woran jedes Teammitglied arbeitet (und arbeitete).

Die oben genannten Leitfäden enthalten Ratschläge zu Namenskonventionen für Zweigstellen und Commits. Lese sie!

Nachdem wir nun alle Francescos Artikel gelesen haben und in Bezug auf den Workflow alle auf einer Seite sind, möchte ich noch einen letzten Punkt ansprechen. Nehmen Sie keine Änderungen vor, die außerhalb des Bereichs Ihrer Branche liegen.

Das ist sehr wichtig und nicht zu unterschätzen! Nehmen Sie im Team keine Änderungen vor, die nicht in den Bereich der Branche fallen, an der Sie arbeiten!

Im Geiste der Ehrlichkeit ist dies etwas, was ich schlecht mache, wenn ich an Soloprojekten arbeite. Wenn ich an einer Funktion arbeite und mich an etwas erinnere, das ich an einem anderen Teil der Codebasis ändern wollte, ändere ich es einfach, ohne mir Gedanken darüber zu machen, auf welchem ​​Zweig ich mich befinde.

Auch wenn dies eine schlechte Übung sein mag, werden Sie dadurch wahrscheinlich nicht in zu große Schwierigkeiten geraten, wenn Sie alleine arbeiten. Dies als Teil eines Teamprojekts zu tun, kann sehr schlimme Konsequenzen haben.

Wenn Sie Codeänderungen vornehmen, an denen einer Ihrer Teamkollegen aktiv arbeitet (und die Sie nicht nur verärgern), kann dies zu Konflikten aller Art führen, wenn sie versuchen, ihre Änderungen zusammenzuführen. Möglicherweise verbringen sie genau so viel Zeit damit, Zusammenführungskonflikte zu lösen, wie sie Änderungen an der Zweigstelle vorgenommen haben.

Nicht gut für die Teamdynamik ...

Zusammenfassung

Wenn Sie vorhaben, Karriere in der Softwareentwicklung zu machen, müssen Sie lernen, als Teil eines Teams zu arbeiten. Dies ist definitiv eine dieser Soft Skills, die Ihre Effektivität als Entwickler erheblich verbessern (oder behindern) können.

Es muss jedoch nicht schwierig sein, sondern erfordert nur eine bewusste Anstrengung. Denken Sie daran, dass Sie Teil eines Teams sind und handeln Sie als solches. Starke Kommunikation und Arbeitsabläufe machen Ihr Team größer als die Summe seiner Teile, aber das Gegenteil wird den Fortschritt Ihres Teams zum Stillstand bringen.

Und wenn Sie daran arbeiten, Entwickler zu werden, tun Sie sich selbst einen Gefallen und sehen Sie sich die Chingu-Kohorten an. Es ist eine fantastische globale Community von Entwicklern und aufstrebenden Entwicklern, die zusammenarbeiten, um großartige Dinge zu tun.