Wer ist für die Einrichtung eines automatisierten Build-Systems verantwortlich?

15

Ich bin Projektleiter in meiner Firma. Ich arbeite mit einigen Entwicklerteams zusammen, die ein bekanntes Standard-Versionskontrollsystem namens CVS verwenden. Ich würde eine kontinuierliche Integration und automatisierte Builds begrüßen, um Probleme mit dem Build-Abbruch und fehlerhaften Bereitstellungen auf den Produktionsservern zu vermeiden.

Ich bin mir sicher, dass ich das selbst einrichten kann, aber ich möchte das aus zwei Gründen nicht selbst tun:

  1. Ich habe keine zeit dafür Ich habe meine eigenen Aufgaben: Marketing, Kommunikation mit anderen Stakeholdern mit Teammitgliedern, die nicht Teil der Entwicklung sind, Kommunikation mit Kunden und Projektplanung.

  2. Vor allem bin ich der Projektmanager. Mein Ziel ist es, die Führung zu übernehmen und nicht das Entwicklerteam klein zu halten .

Was kann ich tun, um jemanden im Entwicklerteam zu finden, der sich für die Einrichtung begeistert? Ist ein Entwickler die richtige Person für diese Aufgabe, da Kenntnisse in Java, Spring und Google App Engine erforderlich sind? Was sind einige Tipps zur Förderung des Wandels, wenn Veränderungen befürchtet werden?

jmort253
quelle
7
Es ist eine Neuigkeit für mich, dass die Rolle des Projektmanagers darin besteht, die Führung zu übernehmen.
Yuriy Zubarev
Diese Liste der Wissensanforderungen am Ende, alles, was Entwickler haben können oder nicht, und Nicht-Entwickler sicherlich nicht. Kommt auf deine an.
Orbling
5
fast -1 für immer noch mit CVS.
Johannes Rudolph
@ Johannes - Wenn es nach mir ginge, wären wir es nicht. Tatsächlich habe ich ein SVN-Repository-Setup, das ich verwendet habe.
jmort253
1
So sehr CVS eine alte Technologie ist (und bei weitem nicht meine Lieblings-Technologie ist), funktioniert sie immer noch und wird an vielen Orten immer noch verwendet. Und wenn es die Arbeit erledigt, kann es sinnvoll sein, es an Ort und Stelle zu belassen. Wir benutzen es in unserem Büro und es erledigt die Arbeit.
Zachary K

Antworten:

14

Ich würde zuerst einige Möglichkeiten untersuchen. Beispielsweise ist Hudson ein sehr beliebter Continuous Integration Server und äußerst flexibel. Sie können Ihrem Entwicklerteam eine E-Mail mit folgendem Inhalt senden:

Ich möchte ein kontinuierliches Integrationstool einführen, damit toxische Revisionen viel früher als später auftauchen. Ich habe [hudson, acme CIS, foo] angeschaut und sie sehen alle so aus, als würden sie funktionieren. Angesichts der Tatsache, dass wir CVS mit [Vorbehalte hier auflisten] verwenden, suche ich nach Empfehlungen und lebe mit allem, was das Team entscheidet.

Dave, bitte sorgen Sie dafür, dass ein Konsens zustande kommt und dieser läuft. Team - bitte haben Sie bis Donnerstagabend Ihre Meinung zu Dave, damit wir dies am Freitag testen können.

Bitte senden Sie mir meine Anmeldeinformationen, sobald wir etwas festgestellt haben.

Dieser Ansatz bietet die folgenden Vorteile:

  • Sie delegieren, nicht entleeren
  • Die Leute wissen, dass Sie einige Nachforschungen angestellt haben. Die Qualität der von Ihnen genannten Dinge hilft dabei, Ihre Erwartungen an die Qualität des implementierten Tools zu definieren
  • Sie sind sich der [Vorbehalte] bewusst. Lassen Sie uns nicht entgleist werden, wenn Sie sie nicht wirklich als Deal Breaker für die anstehende Aufgabe betrachten
  • Sie erlauben ein bisschen Demokratie. Sicher, Sie werden sich einloggen, um zu sehen, ob etwas kaputt gegangen ist, aber die Leute, die mit einem CIS zu tun haben, werden die Plattform auswählen.

In meinem Mock-Szenario Davewurde ausgewählt, weil er am wenigsten auf seinem Teller hat und wahrscheinlich kein Problem damit haben würde, einen neuen Server einzurichten. Je nach Arbeitsbelastung Davemüssen Sie möglicherweise nur Sie selbst sein. Das ist so subjektiv, dass ich es nur erwähne. Man kann nicht immer sagen, not my job to do thatob man als einziger Zeit dafür hat. Wenn sich alle bereits in die Länge ziehen, wird die Wahrnehmung Ihrer Hilfsbereitschaft wichtiger. Das ist eine Fähigkeit, die Sie im Laufe der Zeit entwickeln.

In jedem Fall haben Sie entweder bis Freitag einen CIS-Server oder erfahren, warum dies ohne zusätzliche Hände nicht möglich ist.

Tim Post
quelle
2
Vielen Dank für die Eingabe und Beratung. Ich habe nicht versucht, die not my jobKarte herauszuziehen, um nicht mehr zu arbeiten, aber weil es für Projektmanager einfach ist, sich manchmal zu sehr auf das einzulassen, was das Entwicklerteam tut. Indem ich dies an die Entwicklung delegiere, gebe ich ihnen die Kontrolle und herrsche. Wenn sie sich um die Einrichtung kümmern, werden sie sie mit größerer Wahrscheinlichkeit verwenden. Wenn ich sie einrichte, bekomme ich eine gute Lernerfahrung in Bezug auf die Einrichtung einer kontinuierlichen Integration, jedoch ohne ROI und mit den Opportunitätskosten auf meine anderen Aufgaben. Auch die Beispiel-E-Mail ist sehr hilfreich :) +1
jmort253
@ jmort253 - Ja, ich weiß, dass Sie der Arbeit nicht ausweichen. Ich werde aus Gründen der Übersichtlichkeit aktualisieren.
Tim Post
3
+1 für die Einbeziehung des Teams und die technischen Entscheidungen. Das ist der Schlüssel, damit sie das neue System akzeptieren und nutzen.
Péter Török
14

Ich sehe es in drei möglichen Richtungen:

  1. Lassen Sie jemanden im Entwicklerteam eine schnelle Einschätzung möglicher Tools erstellen und ihn etwas schnell auf die Beine stellen. Wenn Ihre einzelnen Projekte über geeignete Erstellungsskripten verfügen (dh Sie können die Projekte außerhalb der IDE erstellen), sollte es relativ schnell gehen, sie mit dem CI zu verknüpfen.

  2. Behandeln Sie die Build-Infrastruktur als internes Projekt in Ihrem Team und verwalten Sie sie als solches. Ein bisschen mehr Aufwand als der erste Punkt, aber wenn Sie es richtig machen, erhalten Sie ein besseres System. Durch die Verbreitung des Wissens über das Team wird das unten erwähnte Risiko einer Überspezialisierung verringert. Sie profitieren auch von den Vorteilen der Begutachtung durch Fachkollegen. Einige Programmierer empfinden diese Aufgabe jedoch möglicherweise als erniedrigend und geben daher möglicherweise nicht so viel dafür aus, wie sie sollten.

  3. Stellen Sie einen Entwickler als Build-Master ein und lassen Sie ihn alle Tools einrichten. Verwenden Sie ihn dann weiterhin, um das System zu verbessern, Metriken hinzuzufügen, automatisierte Dokumente zu erstellen, automatisierte Tests durchzuführen usw. Dies ist kostspieliger, aber wenn Sie es richtig machen, zahlen sich die Investitionen in diese Person sehr schnell aus, indem Sie die Effizienz Ihres Entwicklerteams steigern. Diese Person sollte mit den von Ihrem Team verwendeten Sprachen und Frameworks vertraut sein und den Wunsch haben, sie in ein System einzubinden. Auf der anderen Seite (aus Kommentaren) liegt dies möglicherweise nicht innerhalb Ihres Budgets, und die Schaffung einer speziellen Position kann zu einer unzureichend dokumentierten Lösung führen, die Übergänge schwierig machen kann.

Bevor Sie irgendetwas anfangen, stellen Sie sicher, was Sie wirklich davon wollen. Ihrer Frage fehlen ein paar Details, um Sie in die richtige technische Richtung zu leiten. Sie müssen wissen, welche Vorteile Sie mit solchen Tools erzielen möchten, und eine allgemeine Vorstellung vom gewünschten System haben. Man kann einen langen Weg gehen, um eine Umgebung zu schaffen, die alles miteinander verbindet, aber ohne einen Masterplan, gegen den man aufbauen kann, kann man auch Kreise drehen und Dinge komplizierter machen als das, was sie bereits sind.

Ein Manager, den ich einmal gesagt hatte, dass Tools gut, aber ohne einen Prozess nutzlos sind. Ich wünschte nur, er hätte nachgeholfen, dass er sagte, als die Zeit gekommen wäre, diese in Kraft zu setzen ...

Wenn Sie sich also entscheiden, jemanden einzustellen, hat es definitiv Vorteile, einen Programmierer zu finden, anstatt jemanden mit einem eher IT-orientierten Hintergrund. Der wichtigste Punkt ist, dass diese Person einige Zeit und Energie in die Erstellung des Klebercodes und der Plugins investieren kann, die die verschiedenen Systeme zu einem zusammenhängenden System zusammenfügen.

Hoffe das hat geholfen

Newtopian
quelle
2
@Newtopian - Das hilft. Vor allem, wenn es darum geht, einen Plan zu haben, bevor man blindlings versucht, etwas umzusetzen. Vielen Dank. +1
jmort253
1
+1 Ziemlich guter Rat. Unabhängig von der Plattform, auf der Sie arbeiten, kann es sein, dass eines Ihrer Teammitglieder ein großer Linux-Chef oder eines der anderen Betriebssysteme ist, auf denen Entwickler häufig Skripts verwenden, und sie von dem Projekt begeistert sind.
Garet Claborn
1
+1 für 3) Jedes Software-Team sollte heutzutage einen dedizierten Build-Manager haben
Sean Patrick Floyd
1
Eine prominente Firma, an die ich mich erinnere (37signals? GitHub? Ich weiß nicht), weist der letzten Person, die den Build gebrochen hat, die Verantwortung zu, der Build-Master zu sein. Dies stellt sicher, dass (1) die Leute darauf achten, den Build nicht zu brechen, und dass (2) mehrere Mitglieder des Teams (idealerweise) Erfahrungen mit dem Build-System sammeln.
Michelle Tilley
1
@jmort früher oder später ist es an einem Punkt, wo niemand die Kosten für eine nicht so engagierte Position bemühen kann
Sean Patrick Floyd
3

Wenn Sie eine Führungsrolle innehaben, ist es Ihre Aufgabe, fehlende Komponenten / Praktiken zu identifizieren und Ihre Verantwortung dafür zu übernehmen, dass diese korrekt implementiert werden. Die Aufgabe der Implementierung kann delegiert werden oder nicht, aber letztendlich liegt es in der Verantwortung der Führungskräfte.

Der Schlüssel zur Akzeptanz liegt im Verständnis oder zumindest im Nutzen des Zweifels. Sie können darüber sprechen, was Sie tun möchten, und die Kosten und den Nutzen erörtern. Wenn die Diskussion kein Verständnis hervorruft, können Sie sich auf ihr Vertrauen in Ihre Entscheidungen verlassen, aber nur, wenn Sie ein solches Repoire aufgebaut haben.

Wenn Ihre Delegation zeitliche Einschränkungen des Fachwissens hat, bringen Sie dies während eines Steh- oder Teammeetings zur Sprache und fragen Sie nach einem Freiwilligen. Wenn niemand kommt, weisen Sie ihn einfach zu, wie Sie es bei jeder anderen Arbeit tun würden.

aktualisieren:

In jedem Unternehmen gibt es eine Organisationsstruktur. Eine Führungsrolle hat die Verantwortung für die Ressourcen auf dieser Ebene. Sie sind auch dafür verantwortlich, auf Probleme hinzuweisen und diese anzugehen. Möglicherweise benötigen sie zusätzliche Ressourcen und / oder Vorschläge, an welcher Stelle Sie die Kette hochfahren. Wenn Sie das Problem lösen können, haben Sie die Möglichkeit, eine Lösung selbst zu implementieren oder zu delegieren. Dies kann und sollte die Betroffenen direkt einbeziehen, idealerweise in Zusammenarbeit mit ihnen.

Ich kann nicht sagen, dass die Position eines Direktors oder einer höheren Position niemals direkt für eine bestimmte Person oder Gruppe in einem Unternehmen verantwortlich sein sollte. Es kommt wirklich auf die Organisationsstruktur des Unternehmens an. Ich habe bei Start-ups gearbeitet, bei denen der CTO direkt für Entwickler und Tester verantwortlich war. In einem traditionelleren größeren Unternehmen hätte das Management auf dieser Ebene nicht die erforderliche Transparenz oder Vertrautheit, um auf diesen unteren Ebenen geeignete Entscheidungen treffen zu können.

dietbuddha
quelle
Angenommen, Sie sind Anführer anderer Anführer? Ist es die Verantwortung des CEO, festzustellen, dass ein Junior-Java-Entwickler in einem Projektteam zusätzliche Schulungen benötigt?
jmort253
@ jmort253 Die kurze Antwort ist vielleicht, aber es hängt von der Organisationsstruktur des Unternehmens ab. Wenn die Unternehmensstruktur flach und klein ist, liegt es möglicherweise in der Verantwortung des CEO, sicherzustellen, dass die Entwickler geschult werden. In der Tat habe ich bei zahlreichen Startups gearbeitet, bei denen VPs direkte Berichte haben, die keine Manager waren.
Dietbuddha
1

Ich bin größtenteils ein Entwickler, und ich richte es ein, wenn ich kann (und zwar, wenn es mir nicht ausdrücklich untersagt ist). Da die Orte, an denen ich arbeite, .NET-Shops sind, wähle ich CruiseControl.NET, da es Open Source ist, mit den meisten gängigen Versionsverwaltungssystemen funktioniert und relativ einfach zu bedienen ist. Ich wollte schon immer eine Ambient Orb als einen der Ausgänge einrichten , aber das liegt normalerweise außerhalb meiner Kontrolle.

Rufen Sie es in einer Besprechung auf, um zu sehen, ob jemand den Wunsch dazu hat - solange dies keine Auswirkungen auf die Projekte hat, an denen er gerade arbeitet.

An meinem derzeitigen Standort (einem der nationalen Labors) haben wir es so eingerichtet, dass die Builds konsistent erstellt werden, sodass Leute, die sehen möchten, was wir tun, jederzeit eine lauffähige Version erhalten können . Sie wollen keine Komponententests (der Eindruck des Projektmanagers ist, dass der Aufwand, den wir in die Komponententests gesteckt haben, in die Portierung des Projekts nach .NET gesteckt haben könnte).

An meinem früheren Standort war es meine Absicht, die Builds für alle Produkte einheitlich und konsistent zu machen. Viel zu viele Produkte konnten nur auf einem speziellen Computer erstellt werden (im Fall eines Produkts, bei dem es sich um eine Steuerung eines Drittanbieters mit aggressivem DRM handelte, die vor langer Zeit ihren Betrieb eingestellt hatte, mussten wir eine Maschine nach dem Beenden des Entwicklers etwa 5 Jahre lang am Leben halten weil er der einzige war, der dieses inzwischen ersetzte Handelsprodukt bauen konnte). Darüber hinaus konnten die Installationen nur von einer Person durchgeführt werden, die eine Morgenperson war. Wenn Sie also nach 15 Uhr einen Build benötigten, warteten Sie bis zum nächsten Tag.

Ist ein Entwickler die richtige Person für diese Aufgabe, da Kenntnisse in Java, Spring und Google App Engine erforderlich sind?

Es hängt davon ab, ob. Wenn Sie eine QS-Person haben, die sich mit Skripten auskennt, fragen Sie sie zuerst, bevor Sie sie zuweisen.

Das Einrichten ist zunächst keine komplizierte Aufgabe. Das Einrichten sollte nicht länger als ein paar Tage dauern (meistens in einer Unternehmensumgebung, da der Aufwand darin besteht, ein Konto zu erstellen, auf dem alle erforderlichen Berechtigungen ausgeführt werden).

Tangurena
quelle
0

Versuchen Sie, es aus einer anderen Richtung einzurichten - wenn es ein Problem in der Produktionsumgebung gibt, müssen Sie das Entwicklerteam beauftragen, es zu beheben und es schnell zu beheben. Stellen Sie sich dann die Idee eines einfachen nächtlichen Builds vor, der aus dem neuesten Code, dem Versionsstempel usw. kompiliert wird. Wenn der Build fehlschlägt, wird er nicht beworben.

Ich denke, das Build-Skript sollte der Entwicklung gehören. Wenn sie die Abhängigkeiten ändern oder Änderungen vornehmen, wissen sie am besten, wie die Skripte aktualisiert werden. Und sagen Sie ihnen, wenn das Projektmanagement es besitzt, rufen Sie sie einfach zu einer Besprechung an, wenn es ein Problem gibt.

jqa
quelle
0

Sie könnten bei Ihrem nächsten Treffen einfach sagen: "OK, ich denke, wir sollten das aus folgendem Grund tun. Wer kann das implementieren?" Ich gebe Ihnen mehr als nur wahrscheinlich, dass jemand sagen wird: "Sicher, dass ich das mache." dann musst du dich nicht streiten.

Zachary K
quelle