Die Geschichte eines Projekts: Wenn ein Team keinen leitenden Entwickler hat



Von einem Übersetzer: Wir veröffentlichen für Sie einen Artikel des Entwicklers Jack Finlay. Jack spricht über seinen eigenen Fall - einen Versuch, die Arbeit als Team von Junioren zu organisieren, bei dem alle gleich sind und es keinen technischen Manager gibt. Dieser Artikel ist nützlich für Programmieranfänger.

Einige Projekte können aus mehreren Gründen zum Stillstand kommen und in nichts enden. Technische Anleitung fehlt oft. Dieses Problem kann zu einem Fiasko führen. Einmal geschah es mit einem Projekt, an dessen Entwicklung ich teilgenommen habe.

Skillbox empfiehlt: Zweijähriger Praktikumskurs "Ich bin ein PRO-Webentwickler . "

Wir erinnern Sie daran: Für alle Leser von „Habr“ - ein Rabatt von 10.000 Rubel bei der Anmeldung für einen Skillbox-Kurs mit dem Promo-Code „Habr“.

Die Zeit kann dir viel beibringen. Leider sammeln wir Erfahrungen, wenn wir nicht nur mit erfolgreichen, sondern auch mit erfolglosen Projekten arbeiten.



Persönliche Erfahrung und Führung


Genauer gesagt, das Fehlen davon. In unserem Projekt gab es keinen leitenden oder leitenden Entwickler. Im Prinzip war bereits klar, was mit unserer Arbeit passieren würde, aber das haben wir damals nicht verstanden.

Das Team hatte keine Erfahrung. Fast alle von uns waren Studenten, und es gab niemanden, der uns führen konnte. Dann schien es uns nicht notwendig.

Im Laufe eines Sommers hat sich die Anzahl der Teammitglieder verfünffacht. Ein Problem? Alle waren ungefähr gleich professionell. Allen fehlte die Erfahrung. Wir teilten uns in mehrere Gruppen auf, von denen jede für etwas verantwortlich war.

Darüber hinaus waren fast alle Projektteilnehmer gute Verantwortliche. Dies war jedoch unser erstes kommerzielles Projekt. Mein Team war sehr gut, wir haben perfekt gearbeitet, aber das Ergebnis war ein Misserfolg.

Toolkit

Eine Schlüsselkomponente der Arbeit eines jeden Profis sind Werkzeuge. Ohne die richtigen Werkzeuge ist ein normaler Prozessablauf nicht möglich. Ein gutes Team hat normalerweise einen Leiter, der weiß, wer welche Werkzeuge benötigt und wo man sie bekommt.



Datenbanken

In diesem Projekt hatten wir Zugriff auf eine gemeinsam genutzte Datenbank, die auf einer virtuellen Maschine gehostet wurde, einer der langsamsten, die erhalten werden konnte. Natürlich haben wir alle „Freuden“ solcher Arbeiten erlebt: Datenverlust, fallende Tabellen, gleichzeitige Aktionen an denselben Elementen. All das hat unsere Arbeit verlangsamt.

Wir konnten die Datenbank weder lokal noch in der Cloud reproduzieren, ohne den Sicherungs- und Wiederherstellungsvorgang durchzuführen. Es gab keine Möglichkeit, eine "saubere" Datenbank in demselben Zustand zu erhalten, in dem wir sie in verschiedenen Umgebungen bereitstellen möchten. Die Datenbank konnte nur als Klon aus der Datenbank unseres Servers erstellt werden.

Das Projekt funktionierte jedoch nur mit der Datenbank, die sich auf dem Produktionsserver befand. Dies bedeutete, dass wir die Datenbank und das Projekt nicht abhängig davon lokal testen konnten. Mehrmals trat eine Situation auf, in der wir die Basis bis zu einem bestimmten Punkt zurückrollen mussten, weil nachts jemand sie mit nachlässigen Handlungen zerstörte. Dies hat den Entwicklungsprozess stark behindert.

Die Datenbankmigration und -aktualisierung wurde manuell durchgeführt. Das bedeutete ... ja, wir haben wieder Zeit verschwendet.

Jetzt scheint es offensichtlich, dass Entwickler lokale Datenbanken auf ihren Computern haben sollten. Darüber hinaus müssen Sie automatisierte Migrationstools verwenden. Dies gibt Entwicklern die Freiheit und den Handlungsspielraum in bestimmten Situationen.

Leistung

Entwickler benötigen eine hohe Leistung sowohl auf lokalen Computern als auch auf dem Server, auf dem das Projekt getestet wird. Aber da wir langsame Werkzeuge hatten, konnten wir nicht einmal davon träumen.

Viele hatten extrem langsame Geräte, die seit vielen Jahren verwendet wurden. Tastaturen, Trackpads - all dies trug den Stempel der Zeit.

Die Server waren auch langsam, wie ich oben erwähnte. Infolgedessen verlangsamte sich der gesamte Entwicklungsprozess. Die Tests gingen ebenfalls langsam voran.

Die Schlussfolgerung ist einfach, im Stil der Corporate Identity, dem Entwickler die Ausrüstung und Ressourcen zur Verfügung zu stellen, die er für den normalen Entwicklungsprozess benötigt.

Quellcodeverwaltung


Es war allgemein Chaos. Wir haben ein Unternehmens-Quellcodeverwaltungssystem verwendet, aber das Problem lag nicht in der Software. Es gab einfach keine Strategie. Separate Entwicklungsteams arbeiteten jeweils "in ihrem eigenen Sumpf", und wir waren uns nicht einig, wann wir einzelne Brunchs zusammenführen würden. Das Ergebnis ist, was passiert ist: Konflikte, Konflikte während der Fusion überall. Musste viel Zeit damit verbringen, Probleme zu lösen und richtig zu synchronisieren.

Integration und Bereitstellung

Wir hatten im Allgemeinen keine CI / CD-Lösungen. Die Bereitstellung war einfach: Wir haben die Ressourcen aus dem integrierten Ordner kopiert und mithilfe von Remotedesktop auf den Server eingefügt. Wenn Sie etwas Ähnliches getan haben, können Sie meinen Schmerz verstehen.

Für diejenigen, die kein Problem festgestellt haben: Wenn Sie etwas anderes als die erforderlichen Dateien im Puffer haben, wird das Hochladen von Dateien auf den Server beendet. Wenn sich eine andere Person aus dem Team dem Server anschließt, um Dateien hochzuladen, treten Probleme auf. Außerdem können einige Dateien beschädigt übertragen werden.

Mein Rat ist, eine CI / CD-Lösung für sich selbst zu wählen.

Qualitätskontrolle


Ein weiteres wichtiges Element des Entwicklungsprozesses ist die Qualitätskontrolle.



Peer Review
Bei dieser Arbeit kamen die Teammitglieder zusammen und schauten sich die geleistete Arbeit an. Und manchmal haben wir uns den Code nicht einmal angesehen, so dass eine große Anzahl von Momenten vergangen ist. Ein weiteres Problem war, dass wir keine Erfahrung hatten, was bedeutet, zu verstehen, was guter Code ist. Wir konnten Fehler im Code, die ein erfahrener Entwickler sofort sieht, nicht sofort isolieren.

Wenn das Team einen leitenden Entwickler hätte, könnte er uns sofort mitteilen, wo die Probleme liegen und wie wir damit umgehen sollen. Aber er war nicht da, wir haben unabhängig gearbeitet.

Tester

Wir hatten sie auch nicht. Wir haben die Tests selbst durchgeführt. Wieder ohne Erfahrung. Infolgedessen wurde wertvolle Zeit aufgewendet, um Fehler zu erkennen und zu beseitigen.

Wenn Sie guten Code wollen, brauchen Sie Tester und professionelle. Entwickler haben nicht immer mit dem Problem des Softwaretests zu tun.

Codequalität



Viele von uns zu Beginn der Reise sind Vertreter der „Copy-Past“ -Kultur. Dies bedeutet, dass der Entwickler auf Stackoverflow nach den für das Projekt erforderlichen Lösungen sucht und das gefundene Teil ohne Gewissensbisse einfügt. Das Ergebnis ist kein sehr guter Code, der praktisch unlesbar ist und den Entwicklern nur schwer vollständig zu erklären ist. Selbst die Person, die eine bestimmte Site kopiert hat, kann ihre Arbeit oft nicht herausfinden.

Ich kann nur eines raten: Wenn Sie den Code kopieren, sollten Sie ihn vollständig verstehen. Ohne dies kann ein normales Projekt nicht realisiert werden.

Spaghetti-Code

Ein schlechtes Verständnis der Architektur des Projekts führte zu völligem Chaos. Spaghetti-Code ist eine weiche Beschreibung dessen, was am Ende passiert ist.

Einige Abschnitte gingen durch verschiedene Hände von verschiedenen Entwicklern, von denen jeder etwas anderes hinzufügte. Der endgültige Code des Projekts bestand aus einer Reihe von Ideen und „Krücken“.

Wir hatten kein Abhängigkeitsinjektionssystem und verwendeten keine gemeinsamen Entwurfsmuster. Dies führte zu einer Menge schlechten Codes, der gerade anfing zu "verrotten".

Was kann ich sagen Die Lesbarkeit des Codes ist genauso wichtig wie der ordnungsgemäße Betrieb, und diese beiden Dinge gehen Hand in Hand. Ein klarer, konsistenter Stil und konsistenter Code liefern das effektivste Ergebnis.

Fazit


Viele Probleme entstanden aufgrund unserer mangelnden Erfahrung. Wir wussten einfach nicht, wie wir an dem Projekt arbeiten sollten. Wir konnten die Umgebung nicht richtig implementieren. Wir hatten nicht die notwendigen Werkzeuge und Technologien.

Ein guter Teamleiter würde all diese Probleme lösen. Er hätte viel im Voraus vorausgesehen.

Das Projekt selbst war übrigens nicht das Schlimmste, was passieren konnte. Ich habe viele zukünftige Kollegen getroffen, mit denen ich bisher kommuniziere. Ich habe die nötige Erfahrung, um als Profi zu arbeiten. Und mir wurde klar, dass selbst das fähigste Team ohne die richtige Führung sein volles Potenzial nicht ausschöpft. Niemals.

Skillbox empfiehlt:

Source: https://habr.com/ru/post/de434532/


All Articles