Chi è responsabile della configurazione di un sistema di build automatizzato?

15

Sono un project manager presso la mia azienda. Lavoro con alcuni team di sviluppatori che utilizzano un sistema di controllo delle versioni noto e noto come CVS. Mi piacerebbe vedere un'integrazione continua e build automatizzati implementati per aiutare a prevenire problemi con la rottura della build e con cattive implementazioni che si insinuano nei server di produzione.

Sono sicuro di poterlo impostare da solo, ma non voglio farlo da solo per due motivi:

  1. Non ho tempo per questo. Ho le mie responsabilità, che riguardano il marketing, la comunicazione con gli altri stakeholder con i membri del team che non fanno parte dello sviluppo, comunicano con i clienti e la pianificazione del progetto.

  2. Soprattutto, sono il project manager. Il mio scopo è fornire leadership, non a micro-gestire il team di sviluppo .

Quali sono alcune cose che posso fare per trovare qualcuno nel team di sviluppo che sarebbe interessato a configurarlo? Uno sviluppatore è la persona giusta per questo compito, considerando che richiede conoscenza di Java, Spring e Google App Engine? Quali sono alcuni suggerimenti per aiutare a promuovere il cambiamento in cui si teme il cambiamento?

    
posta jmort253 21.03.2011 - 06:07
fonte

6 risposte

14

Per prima cosa vorrei cercare alcune possibilità. Ad esempio, Hudson è un server di integrazione continuo piuttosto popolare ed estremamente flessibile. Potresti mandare una e-mail al tuo team di sviluppo con qualcosa del genere:

I'd like to introduce a continuous integration tool so that toxic revisions surface much sooner than later. I've looked at [hudson, acme CIS, foo] and all of them look like they would work. Given the fact that we're using CVS with [ list caveats here ], I'm looking for recommendations and I'll live with whatever the team decides.

Dave, please take charge of getting a consensus and getting this up and running. Team - please have your input to Dave by the end of the day Thursday so we can test this on Friday.

Please send me my credentials once we have something established.

Questo approccio ha i seguenti vantaggi:

  • Stai delegando, non eseguendo il dumping
  • Le persone sanno che hai fatto delle ricerche, la qualità delle cose che fai notare aiuta a definire le tue aspettative sulla qualità dello strumento implementato
  • Sei a conoscenza di [avvertimenti], non lasciarti deragliare a discuterli a meno che non siano realmente degli sfondatori per il compito a portata di mano
  • permetti un po 'di democrazia Certo, effettuerai il login per vedere se qualcosa si è rotto, ma le persone che hanno a che fare con un CIS saranno quelle a scegliere la piattaforma.

Nel mio scenario simulato, Dave è stato selezionato perché ha il minimo nel suo piatto e probabilmente non avrebbe problemi a configurare un nuovo server. A seconda del carico di lavoro, Dave potrebbe essere solo tu. È così soggettivo che lo cito semplicemente. Non puoi sempre dire not my job to do that soprattutto se sei l'unico che ha il tempo di farlo. Se tutti sono già impegnati nel tempo, la loro percezione della tua volontà di aiutare diventa più importante. Gauging è un'abilità che sviluppi nel tempo.

In ogni caso, avrai un server CIS entro venerdì o dettagli sul motivo per cui non è possibile senza un altro paio di mani.

    
risposta data 21.03.2011 - 07:30
fonte
14

Lo vedo andare in tre modi possibili:

  1. Chiedi a qualcuno del team di sviluppatori di fare una rapida valutazione dei possibili strumenti e fagli fare rapidamente qualcosa. Se i singoli progetti dispongono di script di compilazione corretti (ovvero puoi costruire i progetti all'esterno dell'IDE), dovrebbe essere abbastanza veloce collegarli all'elemento della configurazione.

  2. Tratta l'infrastruttura di costruzione come un progetto interno all'interno del tuo team e gestiscilo come tale. Un po 'più complicato del primo, ma se fatto bene, otterrai un sistema migliore. Anche la diffusione delle conoscenze nel team ridurrà il rischio di sovra-specializzazione menzionato di seguito. Ottieni anche i benefici della peer-review. Tuttavia alcuni programmatori potrebbero percepire questo compito come umiliante e in quanto tale potrebbero non spendere tanto in esso come dovrebbero.

  3. Assumi un dev come master build e fagli installare tutti gli strumenti. Quindi continua a utilizzarlo per migliorare il sistema, aggiungere metriche, generazione automatica di documenti, test automatici, ecc. Questo è più costoso, ma se fatto bene gli investimenti in questa persona si ripagano molto rapidamente aumentando l'efficienza del tuo team di sviluppo. Questa persona dovrebbe essere competente con le lingue e le strutture utilizzate dal team e avere il desiderio di incollarle in un sistema. D'altra parte (dai commenti) questo potrebbe non essere nel tuo budget e la creazione di una posizione specializzata potrebbe portare a soluzioni sotto documentate che possono rendere difficili le transizioni.

Detto questo, prima di iniziare qualsiasi cosa, assicurati di cosa vuoi veramente. Alla tua domanda mancano alcuni dettagli per indirizzarti nella giusta direzione tecnica. Hai bisogno di sapere quali guadagni desideri ottenere usando questi strumenti, hai bisogno di una visione generale del sistema desiderato. Si può fare molto per creare un ambiente che leghi tutto, ma senza un piano principale da costruire contro di te puoi anche eseguire cerchi e rendere le cose più complicate di quelle che sono già.

Un manager che una volta avevo detto che gli strumenti sono buoni ma senza un processo sono inutili. Spero solo che avrebbe seguito su quello che ha detto quando è venuto il momento di metterli in atto ...

Quindi, se decidi di assumere qualcuno, ci sono indubbi vantaggi nell'ottenere un programmatore piuttosto che qualcuno con un background più ITish. Il punto principale è che questa persona può dedicare un po 'di tempo ed energie alla creazione del codice collettivo e dei plugin che integreranno i diversi sistemi insieme in un sistema coerente.

Spero che questo ci abbia aiutato

    
risposta data 21.03.2011 - 06:50
fonte
3

Se hai un ruolo di leadership, è compito tuo identificare componenti / pratiche mancanti e la tua responsabilità di vederlo implementato correttamente. Il compito di implementazione può essere delegato o meno, ma alla fine è la responsabilità del leader.

La chiave per l'accettazione è capire, o almeno darti il beneficio del dubbio. Puoi parlare di ciò che vuoi fare e raccogliere costi e benefici. Se la discussione non porta a capire, puoi contare sulla loro fiducia nelle tue decisioni, ma solo se hai costruito quel tipo di repoire.

Se la tua delegazione si impegna a rispettare i limiti temporali di esperienza, presentala durante uno stand up o una riunione di gruppo e chiedi un volontario. Se nessuno viene avanti, semplicemente assegnalo come faresti con qualsiasi altro lavoro.

Aggiornamento:

Esiste una struttura organizzativa all'interno di ogni azienda. Un ruolo di leadership ha la responsabilità delle risorse a quel livello. Hanno anche la responsabilità di segnalare e risolvere eventuali problemi. Potrebbero aver bisogno di risorse e / o suggerimenti aggiuntivi a quel punto in cui salirai sulla catena. Se puoi affrontare il problema, hai la possibilità di implementare una soluzione da te o delegare. Questo può e dovrebbe coinvolgere le persone che influenzerà direttamente, idealmente in collaborazione con loro.

Non posso dire che il livello di regista e le posizioni sopra indicate non dovrebbero mai essere direttamente responsabili di una determinata persona o gruppo in una società. Dipende davvero dalla struttura organizzativa delle aziende. Ho lavorato alle start-up in cui il CTO era direttamente responsabile per sviluppatori e tester. In una più tradizionale gestione aziendale più ampia a quel livello non avrebbe la necessaria visibilità o familiarità necessaria per prendere decisioni appropriate a quei livelli inferiori.

    
risposta data 21.03.2011 - 06:40
fonte
1

Sono principalmente uno sviluppatore e l'ho creato quando posso (ovvero quando non sono espressamente vietato farlo). In generale, poiché i luoghi in cui lavoro sono negozi .NET, scelgo CruiseControl.NET perché è open source, funziona con i principali sistemi di controllo dei sorgenti e relativamente facile da usare. Ho sempre voluto impostare un Ambiente Orb come uno le uscite, ma di solito è fuori dal mio controllo.

Riunisci in una riunione per vedere se qualcuno ha il desiderio di farlo, a patto che non incida sui progetti a cui sta lavorando attualmente.

Al mio posto attuale (uno dei laboratori nazionali), abbiamo impostato solo per creare le build in modo coerente in modo che le persone che vogliono vedere quello che stiamo facendo siano in grado di ottenere una versione eseguibile in ogni momento. Non vogliono test unitari (l'impressione del project manager è che lo sforzo che abbiamo inserito nei test unitari avrebbe potuto essere portato nel porting del progetto su .NET).

Al mio posto precedente, l'intento era di rendere le build standard e coerenti tra i prodotti. Troppi prodotti potrebbero essere creati solo su un computer speciale (nel caso di un prodotto, che coinvolge un controllo di terze parti con DRM aggressivo che era da tempo andato fuori mercato, abbiamo dovuto tenere in vita una macchina per circa 5 anni dopo che lo sviluppatore ha smesso perché il suo era l'unico che poteva costruire questo prodotto di spedizione commerciale ora sostituito. Inoltre, le installazioni potevano essere fatte solo da una persona che era una persona mattiniera, quindi se avevi bisogno di una build dopo le 15:00, hai aspettato fino al giorno successivo.

Is a developer the right person for this task, considering it requires knowledge of Java, Spring, and Google App Engine?

Dipende. Se hai una persona di QA che è decente nello scripting, chiedi prima di assegnarle.

L'impostazione iniziale non è un'operazione complicata. Non ci dovrebbero volere più di un paio di giorni per la configurazione (principalmente in un ambiente aziendale, i problemi sono ottenere un account per eseguire le cose con tutte le autorizzazioni necessarie) e ottenere in esecuzione.

    
risposta data 28.03.2011 - 03:49
fonte
0

Prova a configurarlo da una direzione diversa - quando c'è un problema nell'ambiente di produzione, affidati al team di sviluppo per risolverlo e risolverlo velocemente. Quindi introdurre l'idea di una semplice compilazione notturna che compila dal codice più recente, dal timbro di versione ecc. Se non riesce a costruirlo, non verrà promosso.

Penso che lo script di build debba essere di proprietà dello sviluppo. Quando modificano le dipendenze o apportano modifiche, sono quelle migliori per sapere come aggiornare gli script. E digli che, se la gestione del progetto è proprietaria, li chiamerai in una riunione quando c'è un problema.

    
risposta data 22.03.2011 - 04:25
fonte
0

Potresti dire al tuo prossimo incontro di discussione, "OK, penso che dovremmo farlo a causa di. Chi può implementarlo?" Ti do meglio delle probabilità che qualcuno dirà "Certo che lo farò". quindi non devi litigare per questo.

    
risposta data 28.03.2011 - 08:14
fonte

Leggi altre domande sui tag