Wenn ich an Code arbeite, stelle ich mich den gleichen Herausforderungen wie meine Teamkollegen, und ich habe einige hilfreiche Funktionen und Klassen geschrieben, und auch diese. Wenn es eine gute Kommunikation gibt, höre ich von etwas Großartigem, das jemand zusammengestellt hat, und sechs Monate später, wenn ich es brauche, kann ich es mir merken und diese Funktion aufrufen, um mir Zeit zu sparen. Wenn ich mich nicht daran erinnere oder nichts davon wusste, werde ich das Rad wahrscheinlich neu erfinden.
Gibt es eine besondere Praxis, solche Dinge zu dokumentieren? Wie machen Sie sie leicht zu finden?
Wenn Ihr Team keine solchen Unterlagen hat, wie können Sie feststellen, ob Ihr Rad bereits vorhanden ist?
BEARBEITEN:
Alle bis auf eine Antwort beziehen sich auf eine ideale Situation. Lassen Sie mich die folgenden Lösungen zusammenfassen: Dokumentation & Kommunikation; Wikis, Stand-up-Meetings usw. Das sind alles großartige Dinge, aber sie setzen voraus, dass Programmierer die Zeit (und die Fähigkeiten) haben, die Dokumentation zu schreiben, an den Meetings teilzunehmen, sich Notizen zu machen und sich an alles zu erinnern.
Die bisher beliebteste Antwort (Calebs) ist die einzige, die von einem Programmierer verwendet werden kann, der nicht in der Lage ist, Dokumente und Besprechungen zu erstellen, und der nur eines tut: Programmieren. Programmieren ist das, was ein Programmierer tut, und ja, ein großartiger Programmierer kann Dokumentation, Komponententests usw. schreiben, aber seien wir ehrlich - die meisten von uns bevorzugen das Programmieren gegenüber dem Dokumentieren. Seine Lösung ist eine, bei der der Programmierer wiederverwendbaren Code erkennt und in eine eigene Klasse oder ein eigenes Repository abruft oder was auch immer. Durch die Tatsache, dass er isoliert ist, wird er auffindbar und erleichtert die Lernkurve für seine Verwendung. und dies wurde durch Programmierung erreicht.
In gewisser Weise sehe ich das so: Ich habe gerade drei Funktionen geschrieben, und mir fällt ein, dass jemand anderes davon wissen sollte. Ich könnte sie dokumentieren, aufschreiben, bei einem Meeting ankündigen usw. - was ich tun kann, aber es ist nicht meine Stärke - oder ... Ich kann sie in eine Klasse extrahieren, sie gut benennen, sie funktionieren lassen eine schwarze Kiste, und kleben Sie es, wo andere Klassendateien gehen. Dann ist eine kurze E-Mail mit der Ankündigung einfach. Andere Entwickler können den Code scannen und besser verstehen als sie eine isolierte Funktion, die in Code verwendet wird, den sie nicht vollständig verstehen - dieser Kontext wird entfernt.
Ich mag das, weil es bedeutet, dass eine Reihe von gut benannten Klassendateien mit gut benannten Methoden eine gute Lösung ist, die durch gute Programmierung erreicht wird. Es sind keine Besprechungen erforderlich, und es wird weniger detaillierte Dokumentation benötigt.
Gibt es weitere Ideen in diesem Sinne ... für isolierte und zeitgemäße Entwickler?
quelle
Antworten:
Bibliotheken. Frameworks. Versionskontrolle.
Wenn Sie wiederverwendbaren Code haben, ist das allerletzte, was Sie möchten, dass verschiedene Teammitglieder den Quellcode in ihr Projekt kopieren. Wenn sie das tun, ist die Wahrscheinlichkeit groß, dass sie sich hier etwas ändern und dort etwas optimieren. Bald gibt es Dutzende von Funktionen oder Methoden, die alle den gleichen Namen haben, aber jeweils ein bisschen anders funktionieren. Vielleicht ist es auch wahrscheinlicher, dass der ursprüngliche Autor den Code weiter verfeinert, um Fehler zu beheben, ihn effizienter zu gestalten oder Funktionen hinzuzufügen. Der kopierte Code wird jedoch niemals aktualisiert. Der technische Name dafür ist ein gewaltiges Durcheinander .
Die richtige Lösung besteht darin, das wiederverwendbare Material aus dem Projekt zu ziehen, für das Sie es erstellt haben, und es in einer Bibliothek oder einem Framework in einem eigenen Versionskontroll-Repository abzulegen. Das macht es leicht zu finden, rät aber auch davon ab, Änderungen vorzunehmen, ohne Rücksicht auf alle anderen Projekte, die es möglicherweise verwenden. Sie können mehrere verschiedene Bibliotheken in Betracht ziehen: eine für gut getesteten Code, der sich wahrscheinlich nicht mehr ändert, eine für Dinge, die stabil erscheinen, die jedoch nicht gründlich getestet und überprüft wurden, und eine für vorgeschlagene Ergänzungen.
quelle
Ein Ansatz dafür ist, ein Wiki für diesen Zweck einzurichten und einige hochrangige Dokumente darüber zu schreiben, welche wiederverwendbaren Komponenten Sie haben, wie Sie ein Problem gelöst haben usw.
Das Schwierige ist, jeden in Ihrem Team dazu zu bringen, dieses Wiki ständig zu pflegen. Aber jede andere Art von Dokumentation hat das gleiche Problem.
Ein Teil Ihres Codes ist möglicherweise auch gut genug, um in eine wiederverwendbare Bibliothek gestellt zu werden. Dies erleichtert auch das spätere Auffinden des Codes.
quelle
Hier ist meine Erfahrung, in einem Unternehmen mit 700 Mitarbeitern in Teams mit 2 bis 20 Mitarbeitern zu arbeiten.
Auf Teamebene
Wir haben jeden Tag "Stand-up-Meetings" für ca. 15-20 Minuten. Wir können schnell allgemein bekannt werden, wie "Ich habe diese Funktion gestern ausgeführt, sie ist so schwer".
Wir haben auch ein Wiki pro Projekt. Das heißt, wir können (technische) Informationen über das, was im Projekt gemacht wird, teilen, einschließlich benutzerdefinierter Klassen / Funktionen, die eingebaut wurden.
Auf Agenturebene
Auf Agenturebene haben wir 4 Tools:
Auf Unternehmensebene
Auf Unternehmensebene ist es besser organisiert.
Das Wiki auf "Agentur-Ebene" ist eigentlich Teil des Firmen-Wikis.
Und das Wiki wird dann nach Technologien aufgeteilt. So kann jeder es verbessern, durchsuchen und dem Wiki im Grunde ein Leben geben.
Es gibt auch Mailinglisten, die wir abonnieren können. Jeder in der Agentur kann abonnieren, und die meisten Leute folgen mindestens einer oder zwei Technologien. Tatsächlich folgen die meisten Leute 5-10 von ihnen.
Und das VCS ist natürlich das beste Code-Sharing-System.
Fazit
Zusammenfassend lässt sich sagen, dass es keine eindeutige Lösung gibt. Wissensaustausch war schon immer ein großes Thema und wird es wahrscheinlich auch bleiben. Es gibt viele Lösungen, um Wissensdatenbanken zu erstellen , und wahrscheinlich passt eine auf Ihre Rechnung. Aber einige Leute versuchen , noch besser KB zu bekommen , da die aktuellen Lösungen sind nicht immer sehr klug.
quelle
Nun, es kommt alles auf die Kommunikation an.
Wikis sind großartig und du solltest auf jeden Fall eines installieren und benutzen. Ein gutes Intranet für interne Programmierer ist gut, wenn die Leute es lesen und aktualisieren. Sie sprechen also tatsächlich über ein Problem mit den Leuten dort. Sie können wöchentliche "Team Update" -Treffen vorschlagen, bei denen sich alle treffen und einen Überblick über die aktuellen Arbeitsabläufe geben. Die technischen Leiter (zumindest!) Sollten sich treffen und darüber plaudern, was jedes Team tut. Informelle "Brown Bag" -Sessions sind großartig, planen sie zur Mittagszeit und bringen die Leute zum Reden.
Sie benötigen auch eine Möglichkeit, Code freizugeben, zu verpacken, zu versionieren und zu verteilen. Es wäre einfacher, wenn Sie ein wirklich gut verwaltetes Quellcode-Repository hätten, das gut in "gemeinsame" und Projektordner unterteilt ist.
Wenn nichts dergleichen getan wird, sprechen Sie Ihren Chef an, erklären Sie, wie das Unternehmen davon profitiert, und schlagen Sie einen Weg vor :)
quelle
Code-Überprüfungssitzungen können helfen. Wenn sich Ihr Team regelmäßig trifft, um zu besprechen, was entwickelt wurde, kann die Person, die eine Lösung gefunden hat, den anderen zeigen, wie sie diese verwendet. Wenn jemand einen Punkt anspricht, an dem er festhält, können andere Teammitglieder einen Ansatz vorschlagen, der die Wiederverwendung vorhandener Komponenten erhöht.
quelle
Der beste Weg, um mit so etwas umzugehen, ist eine Repository-Struktur, die einige einfache Konventionen enthält, sodass ich als Programmierer
doXYZ
ungefähr weiß, wo ich nach dieser Funktion suchen sollte , wenn es eine Funktion gibt . Unabhängig davon, ob Sie Namespaces, Verzeichnisse, Module, Plugins oder Pakete verwenden, sollte Ihr Code modular aufgebaut sein, damit sich Funktionen, die dasselbe tun oder auf dieselben Datenquellen zugreifen, größtenteils an derselben Stelle befinden.quelle
Idealerweise sollte bei jedem Einchecken neben dem Autor mindestens eine weitere Person eine Codeüberprüfung durchführen. Der Codeüberprüfungsprozess kann dazu beitragen, das Problem des Eincheckens vieler doppelter Methoden zu verringern. Natürlich sind Sie auf das Wissen der Überprüfer angewiesen.
TL; DR: Code-Überprüfungen für jeden Check-In.
quelle