Yeni elemanlara deneyimli geliştiricilerden ayrı bir alt proje vermek, yeni başlayanların daha hızlı yükselmesine yardımcı olacak mı?


12

Bir ekipte 7 geliştiricimiz var ve geliştirme hızımızı kısa sürede (yaklaşık bir ay) iki katına çıkarmamız gerekiyor. "Daha fazla geliştirici işe alırsanız, yalnızca ilk birkaç ay boyunca üretkenliğinizi kaybedersiniz" diye sağduyulu bir kural olduğunu biliyorum. Proje bir e-ticaret web hizmetidir ve 270K kod satırına sahiptir.

Şimdilik benim düşüncem, projeyi az çok bağımsız iki alt projeye bölmek ve yeni ekibin iki alt projenin daha küçükleri üzerinde çalışmasına izin vermek, mevcut takım ise ana proje üzerinde çalışmak. Yani, yeni ekip, bağlantıyı azaltmak için nihayetinde bağımsız bir web hizmeti haline gelecek olan ödeme işlevselliği üzerinde çalışacak. Bu şekilde, yeni ekip sadece 100K kod satırına sahip bir projede çalışıyor.

Sorum şu: Bu yaklaşım yeni başlayanlar için yeni projeye kolayca uyum sağlamasına yardımcı olacak mı? Yeni başlayanlar hatalardan daha fazla yazılım üretmeye başlayana kadar iki ay beklemeden geliştirme ekibini hızla genişletmenin diğer yolları nelerdir?

=======

GÜNCELLEME

Bu işletme tamamen başarısız oldu, ancak bahsettiğiniz nedenlerden dolayı değil. Her şeyden önce, yeni ekibin büyüklüğü ve kabiliyeti hakkında yanlış bilgilendirildim. Onları kendim değerlendirmeliydim. İkincisi, işe alma o sitede zor bir iş çıktı. Merkez ofisin işe alınması çok daha kolaydı, ancak ikinci ekibin şehrinde gerekli niteliklere sahip geliştiricilerin sıkıntısı vardı. Sonuç olarak, öngörülen 1,5 ay yerine iş yaklaşık 4,5 aya uzatıldı ve ortasında üst yönetim tarafından iptal edildi.

Yaptığım başka bir hata (ve Alex D tarafından uyarılmıştı) üst yönetime refactoring satmaya çalışıyordu. Asla yeniden düzenleme satmazsınız, sadece özellikler.

Başlangıç ​​yine de başarılı oldu. Hiç gerçekleşmeyen yeniden düzenleme teknik borca ​​dönüştü: sistem daha monolitik ve daha az bakım yapılabilir hale geldi, geliştirici verimliliği yavaş yavaş azaldı. Şu anda takımda değilim, ama umarım yakın gelecekte tamamlayacaklardır. Aksi takdirde, projenin hayatta kalması için bir kuruş vermezdim.


2
daha fazla geliştirici işe alırsanız, sadece ilk aylarda üretkenlik kaybedersiniz - eğer hiç duymadım, ama eminim daha fazla
BЈовић

2
İki parçayı tekrar birleştirmeye çalıştığınızda ne olur? İki parçanın her birinin kendi testlerini geçme şansı var mı, ancak tüm lotta büyük bir entegrasyon testi başarısız olacak mı? Brook'un yasasının kolayca atlatılmadığını bulacağınızdan şüpheleniyorum. Mükemmel yaratıcı düşünce olsa; +1 değerinde. Ve bunun sizin için nasıl çalıştığını gerçekten bilmek istiyorum.
Dawood ibn Kareem

1
javana: Deneyimli geliştiriciler kiralayacağız
Dmitry Negoda

2
@DmitryNegoda Eğer onları yeterli sürede bulabilirsen. Deneyimli geliştiriciler genellikle işsiz değildir, bu yüzden onlarla röportaj yapıp yarın bir pozisyon sunsanız bile, muhtemelen mevcut işverenlerine başlamadan önce birkaç hafta önceden haber vermeleri gerekecektir. Ben olsaydım, bir süre için gece ve hafta sonları çalışmaya hazırlanmak gibi, her ihtimale karşı bir acil durum planı hazırlardım.
maple_shaft

4
Bir geliştiricinin ne kadar şaşırtıcı olursa olsun, ~ 1 aydan daha kısa bir sürede 100
bin

Yanıtlar:


1

Altought, buradaki herkes gibi katılıyorum:

"... gecikmeli bir projeye daha fazla geliştirici ekleyerek projeyi daha fazla geciktirir ..."

Benim hissim var, her yerde yapacaksın, yani ...

Fikriniz, mevcut projeniz, modüller, alt sistemler veya alt projeler tarafından yeterince organize edilmişse yardımcı olabilir.

Denemek isteyebileceğiniz şey, projenize küçük parçalar / modüller / formlar / sınıflar vermek, tüm proje yerine çalışmaktır.

Bir veritabanı kullanırsanız, çalışan bir DB'nin verileri içeren bir kopyasını oluşturmak ve bunlara, çalışacağınız kod modülünden veya alt sisteminden erişmek isteyebilirsiniz.

Programlama dilini veya programlama ortamını bilen yeni geliştiricilere sahip olmak yeterli değildir, yazılım uygulamaları çok karmaşık hale gelebilir.

Uygulama hakkında bazı belgeleriniz var mı: UML, ER, Codd-Yourdon, neyse?

İyi şanslar.


Sadece 100K kod satırından bahsediyoruz, o kadar karmaşık değil, ancak endişe için teşekkürler
Dmitry Negoda

1
@Dmitry Negoda: karmaşıklık LOC'nin bir işlevi değildir.
jmoreno

Programcının verimliliğinin ortalama olarak LOC'nin bir işlevi olduğunu gösteren önemli araştırmalar vardır (örneğin Boehm tarafından).
Dmitry Negoda

15

Sorum şu: Bu yaklaşım yeni başlayanlar için yeni projeye kolayca adapte olacak mı?

"Acemi" sizin için yeni veya yazılım geliştiricileri olarak çalışmak için yeni olabilir. Önemli bir projede bir program üzerinde çalışmak için bir grup geliştirici kiralayacaksanız, yeni işe alımların en azından çoğunun deneyimli geliştiriciler olduğundan ve tercihen denediğinize benzer projeler yazmış olduğundan emin olun. inşa etmek.

Geliştirme ekibini hatalardan sonra daha fazla yazılım üretmeye başlayana kadar iki ay beklemeden hızla genişletmenin diğer yolları nelerdir?

  • Kendi ürününü oluşturmaya çalışmak yerine mevcut bir ürünü satın al veya lisansla. Ödeme tekerleğini gerçekten yeniden keşfetmeniz mi gerekiyor?

  • Yukarıda söylediğim gibi, istediğiniz sistemi kurma deneyimi olan insanları işe alın.

  • Bu yeni takımı işe almadan önce bile, mevcut eşyalarınız hakkında ne bilmeleri gerektiğini düşünmelisiniz. Egzersiz seanslarını hızlandırmaya yardımcı olmak için yeterli zaman ayırdığınızdan emin olun.

  • Yazılı bir gereksinimler seti oluşturdunuz mu? Değilse, şimdi yapın. Yeni ekibin bunu yapmasına izin vermek yerine projeyi tasarlamayı düşünüyorsanız, net bir tasarım belgesi de hazırlamanız gerekir, ancak yeni ekip üyelerinden gelen girdilere yanıt olarak değişikliklere açık olmalısınız.

  • İyi tanımlanmış bir geliştirme süreciniz var mı? Hata veritabanı? Sürüm kontrolü? Kod inceleme süreci? Stil rehberi? Bunları yerine getirin.

  • Mucizeler beklemeyin. Sen istemek yedi kişi ekip tutmayı ve onları birkaç hafta içinde verimli çalışan, ancak bunu olabilir anlamına gelmez isteyen var. Bulunduğunuz yere bağlı olarak, sadece yedi uygun kişiyi bulmak bir aydan daha uzun sürebilir. Şimdi bir şeyleri acele etmeye çalışmak ancak daha sonra acıya ve masrafa neden olur.


1
Yazılı gereksinim kümesine +1, onlar biraz modası geçmiş ...
Dmitry Negoda

3
Ve bu yeni işe alımlarla kim röportaj yapacak, yazılı gereksinimleri güncelleyecek ve belgeleri tasarlayacak, hata veritabanını dolduracak, eğitim oturumlarına zaman ayıracak ... ?? Mevcut geliştiriciler mi? Çünkü bu tam zamanlı olarak gelişmeyecekleri anlamına geliyor. Böylece geliştirme hızı düşer . Hata.
MarkJ

Kod kendi kendini belgeliyor ve sadece deneyimli geliştiriciler kiralayacağız. Ve evet, mevcut geliştiriciler yenilerine yardımcı olacak ve hızları biraz düşecek. Sadece 100K loc projesindeki geliştiricileri işe almanın 270K loc projesinde işe alma kadar acı verici olmayacağını umuyorum ve soru buydu.
Dmitry Negoda

Dahili bir wiki'niz var mı veya her şey LAN'a dağılmış kelime belgelerinde depolanıyor mu?
Spencer Rathbun

1
100k, 50k veya 10k aynı şeyi temsil eder - hiç kimsenin kafasına transfer edemeyeceği bir ton kod. Birkaç yüz satır kod varsa, bu makul. Birkaç bini aştığınız zaman karmaşık bir sisteme sahip olursunuz ve hız istekleri çoğu zaman elde edilemez.
Michael Durrant

12

IMHO tüm yeni geliştiricileri yeni projeye koymak, mevcut ekibinizden ayrı olarak sorun getirmek zorunda. Evet, bu eski ekibinizin şu anki hızında az ya da çok çalışmaya devam etmesine izin verebilir (olabilir). Ancak, yeni adamların genel mimari ve büyük resim hakkında bir ipucu olmayacak, bu yüzden hızlanmak için çok zaman alacaklar ... ve o zaman bile yanlış yöne gidiyor olabilirler.

Mevcut ekibinizi ikiye bölmenizi ve her iki takıma da yeni üyeler almanızı öneririm. Bu şekilde, her iki ekipte de yeni gelenlere rehberlik edebilen ve ortak, tutarlı bir mimari vizyonun sürdürülmesini sağlayan insanlar var.

Aksi takdirde, Caleb ile net gereklilikleri belgeleme, geliştirme sürecini ve araçlarını tanımlama ve eğitim için zaman ayırma konusunda hemfikirim ... ve ayrıca 7 kişilik bir ekibin bir ay içinde işe alınmasını ve hızlanmasını beklemesi gerçekçi değil.


4
+1 - kesinlikle yeni geliştiricileri gemiye getirmek için kullanmak istiyorsunuz. Bunun sizi biraz yavaşlatması kaçınılmaz olsa da.
mikera

+1 de. Deneyimli geliştiricilerinizin yeni insanlara rehberlik etmesini istiyorsunuz. Yeni adamlar çok fazla deneyime sahip olsalar bile, şirketinizin işleri nasıl yaptığını tam olarak bilmeyeceklerdir.
Andy

9

Dmitry, geliştirme temponuzu kısa sürede ikiye katlamak inanılmaz iddialı bir hedef. Burada bazı iyi öneriler yayınlanmıştır; ancak, ne denerseniz deneyin, bunun olmayabileceğini unutmayın . gelişim adımlarını eğer değil çift, sonuçları bir iş perspektifinden, ne olurdu? Son teslim tarihini karşılamak için çabalamaya mı çalışıyorsunuz?

Eğer bir son teslim tarihine uymaya çalışıyorsanız, özellikleri azaltarak daha güvenilir bir şekilde yapabilir misiniz? "Kaçırılan son tarihleri" müşteri için kabul edilebilir kılmak için harika bir yol buldum; gerekli özelliklerin bir alt kümesine sahip bir sürümü yayınlayın ve daha fazla özellik hazır olduğunda, son sürüme kadar kademeli olarak bırakın.


Henüz son teslim tarihi yok. Ortaklıklar kurarak potansiyel müşteri sayısında ciddi bir artış bekliyoruz. Çözümümüzün daha rekabetçi olmasını istedik, böylece ortaklar bizi seçsin. Bu peşinde olduğumuz son tarih değil, yeni özellikler sunabilme yeteneğidir. Ama endişe için teşekkürler.
Dmitry Negoda

Durum böyleyse, belki de gelişim hızınızı bir adımda ikiye katlamayı amaçlamak yerine, belirli bir süre içinde "hızlandırmayı" deneyebilirsiniz.
Alex D

4

Yani Efsanevi Adam Ayının kurbanı olmayan takım olmaya çalışıyorsunuz . Birkaç probleminiz olacak, takımdaki birisinin teknik röportajları yapması gerekecek, daha sonra başlamadan önce pozisyonu kabul ettikten sonra birkaç hafta beklemeniz gerekecek. Yeni geliştiricilerin klavyelerinin önünde olması iki ay sürebilir.

Her yeni çalışanın ilk birkaç ay içinde üretkenliği olumsuz oluyor. Daha da kötüsü, mevcut geliştiricilerin onlara mentorluk yapması gerekecek ve bu da tems verimliliğini daha da azaltacaktır.

MMM'nin diğer kısmı, ekip büyüdükçe iletişim sorunlarının da artmasıydı. Toplantılar büyür, e-posta zincirleri uzar ...

Onları daha küçük gruplar halinde getirirdim ve uzun süre verimliliğin ekibin artan boyutuyla orantılı olmayacağını biliyorum. Ayrıca, ilk birkaç ay boyunca nakit akışındaki drenajın, biniş maliyetleri ve ekipman nedeniyle önemli olabileceğini fark edin.

Alex D'ye yaptığınız yorumda, "Bu peşinde olduğumuz son tarihler değil, yeni özellikler sunabilme yeteneğidir." Bu nedenle, daha küçük parçalardaki özellikleri ve daha sık rol alan bir geliştirme stiline geçin. Ekibin yeni üyelerine, kod tabanını anlamalarına yardımcı olacak yeni özellikleri test etmelerini sağlayın.


Yeni özelliklerin test edilmesinin kod tabanını anlamaya nasıl yardımcı olacağını anlamıyorum. QA mühendislerini de işe alıyoruz, bu yüzden geliştiricilerin geliştirmesine ve test etmelerine izin verin.
Dmitry Negoda

2

Hiç kimseyi işe almamak ve işleri daha hızlı hale getirmek için nerede değişiklikler yapabileceğinizi görmek için süreçlerinize bakmaktan daha iyi olur. Hatalar ne kadar erken bulunursa, bunları düzeltmek için o kadar az zaman gerekir, peki nasıl test ediyorsunuz? Kod incelemeleri mi yapıyorsunuz? İhtiyacın kalitesine dikkat ediyor musunuz? Otomatik yapı ve dağıtım süreçleriniz var mı? Otomatik testleriniz var mı? Günlük stand-up toplantılarınız mı var (Birisi sizden her gün prömürünüzü isteyeceği zaman ne kadar daha hızlı gelişme olabilir!)? Çevik süreçler mi kullanıyorsunuz? Gelişimin geri kalanını daha hızlı hale getirmek için ele alınması gereken bazı temel tasarım kusurlarınız var mı (kötü tasarım bir geliştirme projesini inanılmaz derecede yavaşlatabilir).

Lütfen Efsanevi Adam ayını okuyun. Üst yönetime bir projeyi hızlandırmak için neden seçimler yaptığını söyleyebilmek için açıkça ihtiyacınız olacak. .


Evet, tüm sorularınıza sonuncuyu yok edin.
Dmitry Negoda

0

Yani onları bir uçurumdan atmak ve uçup uçamayacaklarını görmek mi istiyorsunuz? Sanırım bir şeyleri kendi başınıza keşfettiğinizde, sadece size verilen çözümlerin aksine uzun vadede sizinle birlikte olma eğilimindedirler. Ancak, bu aslında daha iyi çözümler keşfettiğinizi varsayar. Bu takımın neden kaliteli hatalardan öğrenerek rehberlik ve talimat vererek kendi başlarına bazı hatalar yapmalarına izin verecek şekilde dengelenmiş nitelikli bir lidere sahip olmasına izin veremeyeceğinizi anlamıyorum.


Mike Partridge sorumu değiştirdi. Kimseyi uçurumdan atmayacağım. Tabii ki yeni geliştiriciler, sadece farklı bir alt projede deneyimli kişilerle birlikte çalışacaklar.
Dmitry Negoda

Sadece 100K loc projesindeki geliştiricileri işe almanın 270K loc projesinde işe alma kadar acı verici olmayacağını umuyorum ve soru buydu.
Dmitry Negoda
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.