Kto jest odpowiedzialny za skonfigurowanie automatycznego systemu kompilacji?

15

Jestem kierownikiem projektu w mojej firmie. Współpracuję z kilkoma zespołami programistów korzystających ze standardowego, dobrze znanego systemu kontroli wersji znanego jako CVS. Chciałbym, aby ciągła integracja i automatyczne kompilacje były wdrażane, aby zapobiec problemom z przerwaniem kompilacji i nieprawidłowymi wdrożeniami wkradającymi się na serwery produkcyjne.

Jestem pewien, że mogę to skonfigurować samodzielnie, ale nie chcę tego robić z dwóch powodów:

  1. Nie mam na to czasu. Mam własne obowiązki, które obejmują marketing, komunikację z innymi interesariuszami z członkami zespołu, którzy nie uczestniczą w pracach rozwojowych, komunikację z klientami i planowanie projektu.

  2. Co najważniejsze, jestem kierownikiem projektu. Moim celem jest zapewnienie przywództwa, a nie mikro-zarządzanie zespołem programistów .

Co mogę zrobić, aby znaleźć kogoś z zespołu programistów, który pasjonowałby się konfiguracją? Czy programista jest odpowiednią osobą do tego zadania, biorąc pod uwagę, że wymaga ona znajomości Java, Spring i Google App Engine? Jakie wskazówki pomagają promować zmiany tam, gdzie się ich obawiasz?

jmort253
źródło
7
To dla mnie wiadomość, że rolą kierownika projektu jest zapewnienie przywództwa.
Yuriy Zubarev
Na końcu tej listy wymagań dotyczących wiedzy mogą znajdować się wszystkie rzeczy, które mogą mieć programiści, a osoby niebędące programistami na pewno nie. Zależy od twojego.
Orbling
5
prawie -1 za używanie CVS.
Johannes Rudolph
@Johannes - Gdyby to zależało ode mnie, nie bylibyśmy. W rzeczywistości mam konfigurację repozytorium SVN, z której korzystałem.
jmort253
1
O ile CVS jest starą technologią (i daleką od mojej ulubionej), to nadal działa i wciąż korzysta z niej wiele miejsc. A jeśli wykonuje pracę, której potrzebujesz, pozostawienie jej na miejscu może mieć sens. Używamy go w naszym biurze i wykonuje to zadanie.
Zachary K

Odpowiedzi:

14

Najpierw zbadałem kilka możliwości. Na przykład Hudson jest dość popularnym serwerem ciągłej integracji i jest niezwykle elastyczny. Możesz wysłać e-mailem do swojego zespołu programistów za pomocą czegoś takiego:

Chciałbym wprowadzić narzędzie do ciągłej integracji, aby toksyczne wersje pojawiły się znacznie wcześniej niż później. Spojrzałem na [hudson, acme CIS, foo] i wszystkie wyglądają, jakby działały. Biorąc pod uwagę fakt, że używamy CVS z [listą ostrzeżeń tutaj], szukam rekomendacji i będę żył z tym, co zdecyduje zespół.

Dave, proszę przejmij konsensus i uruchom go. Zespół - prosimy o przesłanie danych do Dave'a do końca czwartku, abyśmy mogli to przetestować w piątek.

Prześlij mi swoje dane uwierzytelniające, gdy tylko coś ustalimy.

Podejście to ma następujące zalety:

  • Przekazujesz, a nie dumping
  • Ludzie wiedzą, że przeprowadziłeś pewne badania, a jakość wskazanych przez Ciebie rzeczy pomaga określić oczekiwania dotyczące jakości wdrożonego narzędzia
  • Zdajesz sobie sprawę z [ostrzeżeń], nie dajmy się wykoleić, omawiając je, chyba że naprawdę są przeszkodą dla danego zadania
  • Pozwalacie na odrobinę demokracji. Jasne, zaloguj się, aby zobaczyć, czy coś się zepsuło, ale to ludzie, którzy będą mieli do czynienia z CIS, wybiorą platformę.

W moim próbnym scenariuszu Davezostał wybrany, ponieważ ma najmniej na swoim talerzu i prawdopodobnie nie miałby problemu z konfiguracją nowego serwera. W zależności od obciążenia pracą Davemoże to być tylko Ty. To tak subiektywne, że po prostu o tym wspominam. Nie zawsze możesz powiedzieć, not my job to do thatzwłaszcza jeśli jesteś jedynym, który ma na to czas. Jeśli wszyscy już z czasem się wycofują, ważniejsze staje się ich postrzeganie chęci pomocy. Pomiar umiejętności to umiejętność rozwijana z czasem.

W każdym razie albo będziesz mieć serwer CIS do piątku, albo szczegóły, dlaczego po prostu nie jest to możliwe bez dodatkowego zestawu rąk.

Tim Post
źródło
2
Dzięki za wkład i porady. Nie próbowałem wyciągać not my jobkarty, żeby wyjść z pracy, ale ponieważ kierownicy projektów łatwo czasem zbyt mocno angażują się w to, co robi zespół programistów. Przekazując to rozwojowi, daję im kontrolę i panowanie. Ponadto, jeśli zajmą się konfiguracją, najprawdopodobniej skorzystają z niej, natomiast jeśli ją skonfiguruję, zdobędę przyjemne doświadczenie w zakresie konfiguracji ciągłej integracji, ale bez ROI i kosztu alternatywnego dawania na moich innych zadaniach. Również przykładowy adres e-mail jest bardzo pomocny :) +1
jmort253
@ jmort253 - Tak, wiem, że nie unikasz pracy. Zaktualizuję dla jasności.
Tim Post
3
+1 za zaangażowanie zespołu i umożliwienie mu podjęcia technicznych decyzji. To klucz do tego, aby zaakceptowali i korzystali z nowego systemu.
Péter Török
14

Widzę, że idą na trzy możliwe sposoby:

  1. Poproś kogoś z zespołu deweloperów o szybką ocenę możliwych narzędzi i niech szybko coś wymyśli. Jeśli twoje indywidualne projekty mają odpowiednie skrypty kompilacji (tj. Możesz budować projekty poza IDE), to powinno być dość szybkie podłączenie ich do CI.

  2. Traktuj infrastrukturę kompilacji jako wewnętrzny projekt w zespole i zarządzaj nią jako taką. Nieco bardziej zaangażowany niż pierwszy punkt, ale jeśli zrobisz to dobrze, otrzymasz lepszy system. Również rozpowszechnianie wiedzy w zespole zmniejszy ryzyko nadmiernej specjalizacji wymienione poniżej. Zyskujesz także korzyści z wzajemnej oceny. Jednak niektórzy programiści mogą postrzegać to zadanie jako poniżające i jako takie mogą nie wydawać na to tyle, ile powinni.

  3. Zatrudnij programistę jako mistrza budowy i poproś go, aby ustawił wszystkie narzędzia. Następnie nadal wykorzystuj go do ulepszania systemu, dodawania wskaźników, automatycznego generowania dokumentów, zautomatyzowanych testów itp. Jest to bardziej kosztowne, ale jeśli zostanie wykonane prawidłowo, inwestycje w tę osobę bardzo szybko się zwrócą, zwiększając efektywność zespołu programistów. Ta osoba powinna biegle posługiwać się językami i strukturami używanymi przez Twój zespół i pragnąć przykleić je w systemie. Z drugiej strony (na podstawie komentarzy) może to nie mieścić się w twoim budżecie, a utworzenie specjalistycznej pozycji może doprowadzić do niedostatecznie udokumentowanego rozwiązania, które może utrudnić przejście.

To powiedziawszy, zanim zaczniesz cokolwiek, upewnij się, czego naprawdę chcesz od tego. W twoim pytaniu brakuje trochę szczegółów, aby skierować Cię we właściwym kierunku technicznym. Musisz wiedzieć, jakie korzyści chcesz osiągnąć dzięki takim narzędziom, potrzebujesz ogólnej wizji pożądanego systemu. Można stworzyć długą drogę do stworzenia środowiska, które to wszystko wiąże, ale bez planu budowania przeciwko tobie można także uruchomić koła i sprawić, że sprawy staną się bardziej skomplikowane niż są.

Menedżer, który powiedziałem kiedyś, że narzędzia są dobre, ale bez procesu są bezużyteczne. Chciałbym tylko, żeby kontynuował to, co powiedział, kiedy nadszedł czas, aby je wprowadzić ...

Jeśli więc zdecydujesz się kogoś zatrudnić, zyskasz programistę, a nie kogoś z większym doświadczeniem IT. Chodzi przede wszystkim o to, że osoba ta może poświęcić trochę czasu i energii na tworzenie kodu kleju i wtyczek, które zintegrują różne systemy razem w spójny system.

Mam nadzieję, że to pomogło

Newtopian
źródło
2
@Newtopian - To pomaga. Zwłaszcza część dotycząca posiadania planu przed ślepą próbą wdrożenia czegoś. Dziękuję Ci. +1
jmort253
1
+1 Dość dobra rada. Jeden dodatek, bez względu na platformę, na której pracujesz, jeśli jeden z członków twojego zespołu jest głównym szefem Linuksa lub dowolnym innym systemem operacyjnym, który często ma użytkowników programistów korzystających ze skryptów kompilacji, mogą być podekscytowani projektem.
Garet Claborn,
1
+1 za 3) każdy zespół programistów powinien mieć teraz dedykowanego menedżera kompilacji
Sean Patrick Floyd
1
Jedna wybitna firma, o której pamiętam (37signals? GitHub? I dunno) przypisuje odpowiedzialność za bycie mistrzem kompilacji ostatniej osobie, która złamała kompilację. Dzięki temu (1) ludzie starają się nie złamać kompilacji i (2) wielu członków zespołu (najlepiej) zdobywa doświadczenie w uczeniu się o systemie kompilacji.
Michelle Tilley
1
@jmort prędzej czy później dochodzi do punktu, w którym nikt nie może ponieść kosztów braku takiej dedykowanej pozycji
Sean Patrick Floyd
3

Jeśli pełnisz rolę lidera, Twoim zadaniem jest identyfikacja brakujących elementów / praktyk oraz odpowiedzialność za prawidłowe wdrożenie. Zadanie wdrożenia może być delegowane lub nie, ale ostatecznie to odpowiedzialność przywódców.

Kluczem do akceptacji jest zrozumienie lub przynajmniej danie ci korzyści z wątpliwości. Możesz porozmawiać o tym, co chcesz zrobić, i podnieść koszty i korzyści. Jeśli dyskusja nie przyniesie zrozumienia, możesz polegać na ich zaufaniu w twoich decyzjach, ale tylko wtedy, gdy stworzysz tego rodzaju naprawę.

Jeśli Twój delegat spełnia ograniczenia czasowe wiedzy specjalistycznej, przywołaj ją podczas spotkania w zespole lub w zespole i poproś o wolontariusza. Jeśli nikt nie nadchodzi, po prostu przypisz to tak, jak każdą inną pracę.

aktualizacja:

W każdej firmie istnieje struktura organizacyjna. Rola przywódcza odpowiada za zasoby na tym poziomie. Są również odpowiedzialni za wskazywanie i rozwiązywanie wszelkich problemów. Mogą potrzebować dodatkowych zasobów i / lub sugestii, w którym momencie pójdziesz w górę łańcucha. Jeśli możesz poradzić sobie z tym problemem, masz możliwość samodzielnego wdrożenia rozwiązania lub delegowania. To może i powinno obejmować osoby, na które wpłynie bezpośrednio, najlepiej we współpracy z nimi.

Nie mogę powiedzieć, że poziom dyrektora i wyższe stanowiska nigdy nie powinny być bezpośrednio odpowiedzialne za określoną osobę lub grupę w firmie. To zależy od struktury organizacyjnej firmy. Pracowałem w start-upach, w których CTO był bezpośrednio odpowiedzialny za programistów i testerów. W bardziej tradycyjnym większym przedsiębiorstwie zarząd na tym poziomie nie miałby wymaganej widoczności ani znajomości wymaganej do podejmowania właściwych decyzji na niższych poziomach.

dietbuddha
źródło
Załóżmy, że jesteś liderem innych liderów? Czy obowiązkiem dyrektora generalnego jest ustalenie, że młodszy programista Java w zespole projektowym wymaga dodatkowego szkolenia?
jmort253
@ jmort253 Być może krótka odpowiedź, ale zależy to od struktury organizacyjnej firmy. Jeśli struktura firmy jest płaska i niewielka, odpowiedzialność za zapewnienie szkoleń dla programistów może ponosić dyrektor generalny. Rzeczywiście, pracowałem w wielu startupach, w których wiceprezesi mają bezpośrednie raporty, które nie były menedżerami.
dietbuddha
1

Jestem głównie programistą i konfiguruję go, kiedy mogę (a mianowicie, gdy nie jestem wyraźnie zabroniony). Ogólnie, ponieważ miejsca, w których pracuję, to sklepy .NET, wybieram CruiseControl.NET, ponieważ jest to oprogramowanie typu open source, działa z większością głównych systemów kontroli źródeł i jest stosunkowo łatwe w użyciu. Zawsze chciałem ustawić Ambient Orb jako jedno z wyjść, ale zwykle jest to poza moją kontrolą.

Przywołaj to na spotkaniu, aby najpierw sprawdzić, czy ktoś ma na to ochotę - pod warunkiem, że nie wpłynie to na projekty, nad którymi aktualnie pracują.

W moim obecnym miejscu (jednym z krajowych laboratoriów), mamy to skonfigurowane, aby tworzyć kompilacje w spójny sposób, aby ludzie, którzy chcą zobaczyć, co robimy, mogą uzyskać wersję do uruchomienia w dowolnym momencie . Nie chcą testów jednostkowych (menedżer projektu ma wrażenie, że wysiłek włożony w testy jednostkowe mógł zostać włożony w przeniesienie projektu do .NET).

W poprzednim miejscu moim zamiarem było stworzenie standardowych i spójnych wersji dla wszystkich produktów. Zbyt wiele produktów można było zbudować tylko na jednym specjalnym komputerze (w przypadku jednego produktu, obejmującego kontrolę innej firmy z agresywnym mechanizmem DRM, który dawno temu zakończył działalność, musieliśmy utrzymać jedną maszynę przez około 5 lat po odejściu dewelopera ponieważ jego był jedynym, który mógł zbudować ten obecnie zastępowany produkt wysyłkowy. Co więcej, instalacje mogą wykonać tylko jedna osoba, która była poranną osobą - więc jeśli potrzebujesz kompilacji po około 15:00, czekałeś do następnego dnia.

Czy programista jest odpowiednią osobą do tego zadania, biorąc pod uwagę, że wymaga ona znajomości Java, Spring i Google App Engine?

To zależy. Jeśli masz osobę z działu kontroli jakości, która jest przyzwoita w pisaniu skryptów, zapytaj ją najpierw, zanim ją do niej przypisasz.

Ustawienie go na początek nie jest skomplikowanym zadaniem. Konfiguracja nie powinna zająć więcej niż kilka dni (głównie w środowisku korporacyjnym, kłopoty z założeniem konta do działania z wszystkimi wymaganymi uprawnieniami) i uruchomienie.

Tangurena
źródło
0

Spróbuj ustawić go z innej strony - gdy wystąpi problem w środowisku produkcyjnym, spoczywaj na zespole programistów, aby go naprawić i naprawić szybko. Następnie przedstaw pomysł prostej kompilacji nocnej, która kompiluje się z najnowszego kodu, pieczęci wersji itp. Jeśli kompilacja się nie powiedzie, nie będzie promowana.

Myślę, że skrypt kompilacji powinien być własnością dewelopera. Kiedy modyfikują zależności lub wprowadzają zmiany, najlepiej wiedzą, jak zaktualizować skrypty. I powiedz im, że jeśli zarządzanie projektem jest jego własnością, po prostu wezwiesz ich na spotkanie, gdy tylko pojawi się problem.

jqa
źródło
0

Możesz po prostu powiedzieć na następnym spotkaniu, „OK, myślę, że powinniśmy to zrobić. Kto może to wdrożyć” Daję ci lepsze niż nawet szanse, że ktoś powie „Pewnie, że to zrobię”. to nie musisz się o to kłócić.

Zachary K.
źródło