Otomatik Yapı Sistemi Kurmaktan Kimler Sorumludur?


15

Şirketimde proje yöneticisiyim. CVS olarak bilinen standart, iyi bilinen bir sürüm kontrol sistemi kullanan birkaç geliştirici ekibiyle çalışıyorum. Yapı kırılması ve üretim sunucularına sızan kötü dağıtımlarla ilgili sorunların önlenmesine yardımcı olmak için sürekli entegrasyonun ve otomatik yapıların uygulandığını görmek istiyorum.

Eminim bunu kendim ayarlayabilirim, ancak bunu iki nedenden dolayı kendim yapmak istemiyorum:

  1. Bunun için zamanım yok. Pazarlama, gelişimin bir parçası olmayan ekip üyeleriyle diğer paydaşlarla iletişim, müşterilerle iletişim kurma ve proje planlamayı içeren kendi sorumluluklarım var.

  2. En önemlisi, proje yöneticisiyim. Amacım geliştirme ekibini mikro yönetmek değil liderlik sağlamak .

Geliştirme ekibinde bunu ayarlamak için tutkulu olacak birini bulmak için yapabileceğim bazı şeyler nelerdir? Bir geliştirici, Java, Spring ve Google App Engine bilgisi gerektirdiğini düşünerek bu görev için doğru kişi mi? Değişimden korkulduğunda değişimi teşvik etmeye yardımcı olacak bazı ipuçları nelerdir?


7
Bana göre proje yöneticisinin rolü liderlik sağlamak.
Yuriy Zubarev

Sonunda bu bilgi gereklilikleri listesi, geliştiricilerin sahip olabileceği veya edemeyeceği her şey ve geliştirici olmayanlar kesinlikle olmazdı. Sizinkine bağlıdır.
Mart'ta Orbling

5
hala CVS kullanmak için neredeyse -1.
Johannes Rudolph

@Johannes - Bana kalmış olsaydı olmazdık. Aslında, kullandığım bir SVN veri havuzu kurulumum var.
jmort253

1
CVS kadar eski teknoloji (ve benim favorim olmaktan uzak) hala çalışıyor ve birçok yer hala kullanıyor. Ve eğer işi yapıyorsa, onu yerinde bırakmak için ihtiyacınız vardır. Ofisimizde kullanıyoruz ve işi hallediyor.
Zachary K

Yanıtlar:


14

Önce bazı olasılıkları araştırırdım. Örneğin, Hudson oldukça popüler bir sürekli entegrasyon sunucusudur ve son derece esnektir. Geliştirici ekibinize aşağıdaki gibi bir e-posta gönderebilirsiniz:

Sürekli bir entegrasyon aracı sunmak istiyorum, böylece toksik revizyonlar daha sonra ortaya çıkar. [Hudson, acme CIS, foo] 'ya baktım ve hepsi işe yarayacak gibi görünüyor. CVS'yi [liste uyarıları] ile kullandığımız göz önüne alındığında, öneriler arıyorum ve ekibin karar verdiği her şeyle yaşayacağım.

Dave, lütfen fikir birliğine varma ve bunu başlatma ve çalıştırma konusunda sorumluluk al. Takım - lütfen bunu Cuma günü test edebilmemiz için Perşembe günü günün sonunda Dave'e girişinizi yapın.

Lütfen bir şey belirledikten sonra kimlik bilgilerimi gönder.

Bu yaklaşımın aşağıdaki faydaları vardır:

  • Damperliyorsunuz, damping değil
  • İnsanlar biraz araştırma yaptığınızı biliyorlar, işaret ettiğiniz şeylerin kalitesi, uygulanan aracın kalitesi için beklentilerinizi tanımlamaya yardımcı oluyor
  • [Uyarılar] 'ın farkındasınız, eldeki görev için gerçekten anlaşma kırıcılar olmadıkça onları tartışmayalım.
  • Biraz demokrasiye izin veriyorsunuz. Elbette, bir şeyin kırılıp kırılmadığını görmek için giriş yapacaksınız, ancak bir BDT ile uğraşmak zorunda kalan insanlar platformu seçecekler.

Benim sahte senaryomda, Daveonun plaka üzerinde en az ve muhtemelen yeni bir sunucu kurmak hiç sorun olurdu çünkü seçildi. İş yüküne bağlı olarak, Davesadece siz olmanız gerekebilir. O kadar öznel ki, sadece bahsetmek istiyorum. not my job to do thatÖzellikle bunu yapacak zamanı olan tek kişi sizseniz her zaman söyleyemezsiniz . Herkes zaten zaman içinde çekiyorsa, yardım etmeye istekli olduğunuzu algılamaları daha önemli hale gelir. Bu, zaman içinde geliştirdiğiniz bir beceridir.

Her halükarda, Cuma gününe kadar bir CIS sunucunuz olacak ya da fazladan bir el olmadan neden mümkün olmadığına dair ayrıntılar alacaksınız.


2
Girdi ve tavsiye için teşekkürler. İşten çıkmak için not my jobkartı çekmeye çalışmıyordum, ancak proje yöneticilerinin bazen geliştirme ekibinin yaptıklarına çok fazla dahil olması kolay. Bunu gelişime devrederek onlara kontrolü veriyorum ve hüküm sürüyorum. Ayrıca, bunu ayarlamaktan sorumlu olurlarsa, muhtemelen kullanacaklar, oysa kurarsam, sürekli entegrasyonun nasıl kurulacağı konusunda güzel bir öğrenme deneyimi yaşayacağım, ancak yatırım getirisi ve fırsat maliyeti olmadan benim diğer görevlerimde. Ayrıca, örnek e-posta çok yararlı :) +1
jmort253 21:11

@ jmort253 - Evet, işten kaçınmadığını biliyorum. Açıklık için güncelleyeceğim.
Tim Post

3
Ekibin katılımı ve teknik kararlar almalarına izin verdikleri için +1. Yeni sistemi kabul etmeleri ve kullanmaları için anahtar budur.
Péter Török

14

Bunun üç olası yolu olduğunu görüyorum:

  1. Geliştirici ekibinden birisinin olası araçların hızlı bir değerlendirmesini yapmasını ve bir şeyi hızlı bir şekilde kırmasını sağlayın. Bireysel projelerinizde uygun derleme komut dosyaları varsa (yani projeleri IDE dışında oluşturabilirsiniz), bu durumda bunları CI'ye bağlamak oldukça hızlı olmalıdır.

  2. Yapı altyapısını ekibinizde dahili bir proje olarak ele alın ve bu şekilde yönetin. İlk noktadan biraz daha ilgili ama doğru yapılırsa daha iyi bir sistem elde edersiniz. Ayrıca bilginin ekip üzerinde yayılması, aşağıda belirtilen aşırı uzmanlaşma riskini azaltacaktır. Ayrıca hakem değerlendirmesinin avantajlarından da faydalanırsınız. Bununla birlikte, bazı programcılar bu görevi aşağılayıcı olarak algılayabilir ve bu nedenle gerektiği kadar harcayabilirler.

  3. Yapı ustası olarak bir geliştirici kiralayın ve tüm araçları kurmasını sağlayın. Daha sonra sistemi geliştirmek, ölçümler, otomatik doküman oluşturma, otomatik testler vb. Eklemek için onu kullanmaya devam edin. Bu kişi, ekibinizin kullandığı diller ve çerçeveler konusunda yetkin olmalı ve bunları bir sisteme yapıştırmak istemelidir. Öte yandan (yorumlardan) bu bütçeniz dahilinde olmayabilir ve özel bir pozisyon oluşturmak geçişleri zorlaştıracak belgelenmiş bir çözüme yol açabilir.

Bu, bir şeye başlamadan önce gerçekten ne istediğinizden emin olun dedi. Sorunuz, sizi doğru teknik yöne yönlendirecek ayrıntılardan yoksundur. Bu araçları kullanarak hangi kazanımları elde etmek istediğinizi bilmeniz gerekir, istenen sistemin genel bir vizyonuna ihtiyacınız vardır. Her şeyi bağlayan bir ortam yaratmak için uzun bir yol kat edilebilir, ancak karşı inşa etmek için bir ana plan olmadan da daireler çalıştırabilir ve işleri zaten olduğundan daha karmaşık hale getirebilirsiniz.

Bir keresinde bir zamanlar araçların iyi olduğunu söylemiştim ama bir işlem yapmadan işe yaramazlar. Keşke bunları yerine koymanın zamanı geldiğinde bunu takip etseydi ...

Bu nedenle, birisini işe almaya karar verirseniz, daha ITish geçmişi olan biri yerine programcı edinmenin kesin avantajları vardır. Ana nokta, bu kişinin farklı sistemleri tutarlı bir sistemde birleştirecek tutkal kodunu ve eklentilerini oluşturmak için biraz zaman ve enerji harcayabileceğidir.

Umarım bu yardımcı oldu


2
@Newtopian - Bu yardımcı olur. Özellikle körü körüne bir şey uygulamaya başlamadan önce bir plana sahip olma kısmı. Teşekkür ederim. +1
jmort253

1
+1 Oldukça sağlam tavsiyeler. Bir ek, hangi platformda çalışırsanız çalışın, ekip üyelerinizden biri büyük bir Linux başkanı veya genellikle geliştirici kullanıcıları derleme komut dosyalarını kullanan diğer işletim sistemlerinden biri ise, proje hakkında heyecanlanabilirler.
Garet Claborn

1
3 için +1) her yazılım ekibinin bu günlerde özel bir yapım yöneticisi olması gerekir
Sean Patrick Floyd

1
Okuduğum hatırladığım önemli bir şirket (37signals? GitHub? I dunno), yapıyı bozan son kişiye yapı ustası olma sorumluluğunu atar. Bu, (1) kişinin yapıyı kırmamaya dikkat etmesini ve (2) ekibin birden fazla üyesinin (ideal olarak) yapı sistemi hakkında bilgi edinmesini sağlar.
Michelle Tilley

1
@jmort er ya da geç bir noktaya nerede kimse kutu çaba maliyeti gidiyor değil böyle özel bir konuma sahip
Sean Patrick Floyd

3

Bir liderlik rolünüz varsa, eksik bileşenleri / uygulamaları ve bunun doğru bir şekilde uygulandığını görmek sizin sorumluluğunuzdur. Uygulama görevi devredilebilir veya devredilemez, ancak sonuçta liderlerin sorumluluğundadır.

Kabul etmenin anahtarı anlamak ya da en azından size şüphenin yararını sağlamaktır. Ne yapmak istediğinizi konuşabilir, maliyet ve faydaları artırabilirsiniz. Tartışma anlayış getirmezse, kararlarınıza olan güvenlerine güvenebilirsiniz, ancak yalnızca bu tür bir repoire sahipseniz.

Delegeleriniz uzmanlık için zaman kısıtlamaları yapıyorsa, bir stand veya takım toplantısı sırasında bunu getirin ve bir gönüllü isteyin. Kimse gelmiyorsa, onu başka bir işte yaptığınız gibi atayın.

Güncelleme:

Her şirkette bir organizasyon yapısı vardır. Liderlik rolünün bu düzeydeki kaynaklar için sorumluluğu vardır. Ayrıca herhangi bir problemi belirtmek ve ele almakla yükümlüdürler. Zincire gittiğiniz noktada ek kaynaklara ve / veya önerilere ihtiyaç duyabilirler. Sorunla başa çıkabiliyorsanız, kendiniz bir çözüm uygulama veya temsilci seçme seçeneğiniz vardır. Bu, doğrudan etkileyeceği insanları, ideal olarak onlarla işbirliği içinde olabilir ve içermelidir.

Yönetici seviyesinin ve üst pozisyonların bir şirketteki belirli bir kişi veya gruptan hiçbir zaman doğrudan sorumlu olmaması gerektiğini söyleyemem. Bu gerçekten şirketlerin organizasyon yapısına bağlıdır. CTO'nun geliştiriciler ve test uzmanlarından doğrudan sorumlu olduğu başlangıç ​​şirketlerinde çalıştım. Daha geleneksel bir büyük şirket yönetiminde bu düzeydeki yönetim, daha düşük seviyelerde uygun kararlar almak için gerekli görünürlük veya aşinalıkya sahip olmayacaktır.


Diyelim ki diğer liderlerin lideri misiniz? Bir proje ekibindeki genç bir Java geliştiricisinin ek eğitime ihtiyacı olduğunu belirlemek CEO'nun sorumluluğunda mıdır?
jmort253

@ jmort253 Kısa cevap belki, ama şirketin organizasyon yapısına bağlıdır. Şirketin yapısı düz ve küçükse, geliştiricilerin eğitim almasını sağlamak CEO'ların sorumluluğunda olabilir. Gerçekten de, VP'lerin yönetici olmayan doğrudan raporları olduğu birçok girişimde çalıştım.
dietbuddha

1

Çoğunlukla bir geliştiriciyim ve yapabileceğim zaman (yani açıkça yasaklanmadığım zamanlarda) ayarladım. Genelde, çalıştığım yerler .NET mağazaları olduğundan, açık kaynak olduğu, çoğu büyük kaynak kontrol sistemiyle çalıştığı ve kullanımı nispeten kolay olduğu için CruiseControl.NET'i seçiyorum. Her zaman çıktılardan biri olarak bir Ortam Küresi kurmak istedim , ama bu genellikle benim kontrolüm dışında.

Öncelikle üzerinde çalıştıkları projeleri etkilemediği sürece, herhangi birinin bunu yapma arzusu olup olmadığını görmek için bir toplantıya getirin.

Şu anki yerimde (ulusal laboratuvarlardan biri), yapıları tutarlı bir şekilde yapmak için kurduk, böylece ne yaptığımızı görmek isteyen insanlar her zaman çalıştırılabilir bir sürüm elde edebiliyorlar . Birim testleri istemiyorlar (proje yöneticisinin, birim testlerine harcadığımız çabanın, projeyi .NET'e taşımak için gösterilebileceği izlenimi).

Önceki yerimde amaç, yapıları ürünler arasında standart ve tutarlı hale getirmekti. Çok fazla ürün sadece bir özel bilgisayar üzerine inşa edilebilir (bir ürünün durumunda, uzun zaman önce işten çıkmış olan agresif DRM ile 3. taraf kontrolü içeren, geliştiriciden çıktıktan sonra yaklaşık bir yıl boyunca bir makineyi canlı tutmalıydık çünkü şu anda değiştirilen ticari olarak taşınan ürünü inşa edebilen tek kişi oydu). Ayrıca, kurulumlar sadece sabah kişi olan bir kişi tarafından yapılabilir - bu yüzden yaklaşık 15:00 sonra bir yapıya ihtiyacınız varsa, ertesi güne kadar beklediniz.

Bir geliştirici, Java, Spring ve Google App Engine bilgisi gerektirdiğini düşünerek bu görev için doğru kişi mi?

Değişir. Komut dosyası yazma konusunda iyi olan bazı KG kişiniz varsa, önce bunu atamadan önce isteyin.

Başlangıç ​​olarak ayarlamak karmaşık bir iş değildir. Kurulması birkaç günden fazla sürmemelidir (çoğunlukla kurumsal bir ortamda, sorunlar gereken tüm izinlerle çalışacak bir hesap alıyor) ve çalışmaya başlıyor.


0

Farklı bir yönden kurmayı deneyin - üretim ortamında bir sorun olduğunda, düzeltmek ve hızlı bir şekilde düzeltmek için dev ekibine onus koyun. Sonra en son kod, sürüm damgası vb derler basit bir gece inşa fikrini tanıtmak. Eğer inşa başarısız olursa, teşvik edilmeyecektir.

Bence yapı betiği geliştirmeye ait olmalıdır. Bağımlılıkları değiştirdiklerinde veya değişiklik yaptıklarında, komut dosyalarını nasıl güncelleyeceklerini bilmek en iyilerdir. Ve onlara proje yönetimi sahipse, bir sorun olduğunda onları sadece bir toplantıya çağıracağınızı söyleyin.


0

Bir sonraki teem toplantınızda "Tamam, sanırım bunu yapmalıyız. Bunu kim uygulayabilir?" Diyebilirsin. o zaman bu konuda kavga etmek zorunda değilsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.