5 Stimmen

Wie geht Ihr Unternehmen mit gemeinsamen Komponenten um?

Eine gemeinsame Komponente ist eine Bibliothek oder ein anderes Stück Code, das von einer Gruppe erstellt und gepflegt und von vielen Gruppen verwendet wird.

Einige Probleme, die wir haben, sind:

  • Die Nutzer berichten nicht über Probleme mit den Komponenten.
  • Die Benutzer können die Komponenten nach ihren Bedürfnissen umgestalten.
  • Sie brechen die Kompatibilität mit der Stammversion, nur um ihre Fristen einzuhalten.
  • Die Benutzer programmieren schließlich ihre eigenen (weniger robusten) Lösungen, weil sie glauben, dass dies besser ist.

Wie geht Ihr Unternehmen mit gemeinsamen Komponenten um?

Ideen, die ich habe:

  • Behandeln Sie die Komponente wie ein Open-Source-Projekt und fordern Sie die Teams auf, Patches einzureichen.
  • Benutzerdefinierte Änderungen am Code sind völlig unzulässig.
  • ...

2voto

JonnyBoats Punkte 5067

Möglicherweise handelt es sich hier eher um ein menschliches als um ein technisches Problem. In der Tat könnte es in erster Linie ein Lernproblem sein (verbunden mit dem typischen "Not invented here"-Syndrom).

Da ich in großen Unternehmen gearbeitet habe, weiß ich, dass es für eine neue Person schwierig ist, alle ihr zur Verfügung stehenden Ressourcen (z. B. gemeinsam genutzte Codebibliotheken) zu verstehen, geschweige denn, wie und wann sie sie richtig einsetzen soll.

Wenn Sie einen neuen Mitarbeiter einstellen, erhält er/sie dann eine formale Schulung in Ihrer gemeinsamen Komponentenbibliothek?

Und dann ist da noch das Problem, wofür die Menschen belohnt werden. Belohnen die Manager bei der Überprüfung die Mitarbeiter dafür, dass sie die gemeinsamen Komponenten verwenden, sie verbessern und die Verbesserungen an die Bibliothek zurückgeben? Oder kümmern sich die Manager nur um ihre eigenen Projekte.

Was Ihre Gruppe angeht, die die gemeinsame Bibliothek pflegt, welche Form der Anerkennung oder Belohnung gibt es für Leute, die sich die Zeit nehmen, Verbesserungen vorzuschlagen oder einzureichen? Werden sie in der Firmenzeitung erwähnt? Erhalten sie eine Geldprämie? Wird ihr Foto an der Pinnwand veröffentlicht?

Denken Sie daran, dass es sehr unwahrscheinlich ist, dass Menschen etwas für ein Unternehmen tun, für das sie keine Anerkennung oder Belohnung erhalten.

0 Stimmen

Ich stimme zu, dass es sich eher um ein menschliches Problem handelt. Der Knackpunkt, auf den ich immer wieder stoße, ist die Rechtfertigung der Kosten für eine gemeinsame Komponente gegenüber der Unternehmensleitung, die sie nur als Kosten ohne unmittelbaren oder langfristigen Nutzen sieht.

0 Stimmen

Greg, wenn die Unternehmensleitung den Wert nicht erkennt, müssen Sie sich darüber im Klaren sein, dass Sie auf lange Sicht den Wert kommunizieren müssen, sonst droht Ihnen der Verlust des Arbeitsplatzes. Denken Sie an Ihr eigenes Haushaltsbudget: Zahlen Sie in schwierigen Zeiten weiterhin für Dienstleistungen, die für Sie keinen Wert haben?

0 Stimmen

In meiner Organisation stimme ich den Vorbehalten von mgm't nicht ganz zu. In den Jahren, die ich dort bin, habe ich unter anderem gelernt, dass meine Organisation nicht weiß, wie man Software gut schreibt oder Software-Risiken gut verwaltet. Es gibt sie schon so lange, dass die "Lebenslänglichen" die wenigen Leute, die sich tatsächlich um die Entwicklung wartungsarmer, qualitativ hochwertiger Software kümmern, bei weitem überwiegen. Der "Senior Developer" meiner Gruppe erstellt in seinen c#-Klassen eine statische "me"-Variable und weist ihr in seinem Instanz-Ctor z. B. "this" zu. Das ist hässlich, wenn man jemals eine zweite Instanz erstellt :(

2voto

Jacob Mattison Punkte 48729

Wir versuchen, mehr auf dienstbasierte Systeme umzusteigen, so dass eine bestimmte Funktion, die wir für ein Projekt erstellen, von einem anderen Projekt über einen Webdienst genutzt werden kann. Auf diese Weise gibt es nur eine Instanz des Codes.

Natürlich funktioniert dies für einige Arten von Komponenten besser (ein Beispiel: wir haben vor kurzem einen Dienst zur Erstellung von PDF-Dateien entwickelt) als für andere (wahrscheinlich ein Overkill für ein Dienstprogramm zur Stringmanipulation).

1voto

Grzenio Punkte 34566

Die einzige erfolgreiche Komponente, die ich hier gesehen habe, wird in einer kompilierten Version (*.dll) weiterverteilt. Die Benutzer melden Fehler und fordern Funktionen direkt beim Eigentümerteam an, das diese dann selbst implementiert. Es gibt eine API für das Schreiben eigener Plugins für Dinge, die sich am ehesten ändern, so dass die Leute die Funktionalität in vielen Fällen erweitern können.

Es gibt immer einen Kompromiss zwischen

  • Menschen davon überzeugen, Ihre Komponente zu nutzen
  • gleichzeitig ein angemessenes Qualitätsniveau aufrechtzuerhalten

Ich bin mir nicht sicher, was in Ihrem Fall das Beste ist, aber im Allgemeinen sollten Sie versuchen, die Kernlogik selbst zu implementieren, die Komponente konfigurierbar/erweiterbar zu halten, damit die Leute nicht ständig den Kern ändern müssen, und guten Support anzubieten. Aus irgendeinem Grund neigen manche Entwickler dazu, das Rad immer wieder neu zu erfinden, egal wie dumm es ist, also würde ich mir darüber keine allzu großen Sorgen machen.

1voto

Rad Punkte 8279

Eine gute Möglichkeit ist die Einführung regelmäßiger Code-Reviews. Wenn Sie dabei feststellen, dass ein Rad neu erfunden wurde, können Sie die Gelegenheit nutzen, um den Entwicklern entweder beizubringen, eine gemeinsame Komponente zu verwenden, oder zu erklären, warum sie es für nötig hielten, sie neu zu erfinden, und ihre Argumente mit dem ursprünglichen Code zu verbinden. Auf diese Weise werden die Anforderungen aller Beteiligten erfüllt und die Komponenten werden für alle verbessert.

1voto

Behandeln Sie sie so, wie Sie auch Bibliotheken Dritter behandeln würden. Ich würde den anderen Teams nicht einmal den Quellcode zeigen - das kann zu einer Menge zeitraubender Kritik und Gegenrede führen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X