Bir proje için gereken Programcı Sayısını Belirleme


18

Belirli bir projenin kaç programcının başarılı olması gerektiğini nasıl anlarsınız?

Çalıştığım şirket müşteri şirketlerinin siparişlerini yerine getiriyor. Konuma dayalı envanter yönetimi, sipariş işleme, konşimento üretimi, faturalama, yük denetimi ve raporlamayı işleyen bir şirket içi depo yönetim sistemi yazdık (muhtemelen 50 rapor). Ayrıca, düzinelerce diğer daha küçük özelliklerin yanı sıra barkod tarama işlevleri ve bir istemci portalı da vardır. Ayrıca tam bir çalışan zaman saati içerir. Quickbooks, UPS ve FedEx ile entegre olur. İşlevselliklerinde biraz farklı olan en az 50 istemci için iş yapar. Örneğin, müşterilerin gönderdiği dosyalardan siparişleri içe aktarırız, ancak her müşteri farklı bir dosya biçimi (csv, excel, düz dosya ve web hizmetleri) gönderir, böylece bir düzineden fazla sipariş dönüştürme yöntemi kurulumuna sahibiz. İhracat aynı hikaye.

Proje, her gün çeyrek milyondan fazla kod satırı ile karmaşık ve karmaşık bir şekilde büyüyor. Yaklaşık 250.000 satır VB.NET kodu, 6.200 satır Ruby kodu ve belki de 5.000 satır PHP. Ayrıca yaklaşık 200 tablo içeren bir MySQL veritabanına sahiptir.

Sürekli değişen gereksinimler ve düzinelerce müşterinin farklı ihtiyaçları nedeniyle, kodun kalitesi son derece kötüden nispeten iyi koda kadar büyük ölçüde değişir.

Şu anda, bu projenin sadece bir programcısı var - kendim. Şu anda 75 kişilik şirketimiz için de tüm ürün desteğini yapıyorum. Bu, yeni istemcilerin sorun gidermesini ve kurulumunu ve gereken yeni özellikleri içerir. Ayrıca, her şeyi% 100 Ruby on Rails tabanlı olacak şekilde yeniden yazmaya çalışıyoruz. Ve tüm sistemi önümüzdeki yıl içinde diğer şirketler tarafından kullanılmak üzere pazarlamak istiyoruz.

Şu anda sadece bir programcı olarak kendim var ama bunun yeterli olduğuna inanmıyorum. Bu büyüklükteki bir projenin kaç programcıya sahip olması gerektiği veya bu sorunun cevabını nasıl belirleyeceğimiz konusunda herhangi bir önerisi olan var mı? Özellikle yönetimin ürünün gelecek yıla kadar ticari kalitede olmasını istediği göz önüne alındığında?


11
Bir ampul şakası bekliyordum :(
Oded

lol ... google başlık ve muhtemelen bazı bulacaksınız. Ben googling yaparken ben aslında o yanlışlıkla lol bir demet buldum.
kstevens715

8
Gereksinimler değişmeye devam ederse, bu ürünün gönderilip kapı dışına çıkmasına izin verilmez. Öncelikle gereksinimleri çivilemelisin.
Oded

Benim durumumda bu kesinlikle doğrudur. Sorduğum soruyu muhtemelen çok cevapsız değil biliyorum. Ancak diğer insanların ne tür projeler üzerinde çalıştıklarını ve bu projelerde kaç kişinin tam zamanlı olarak yer aldığını karşılaştırabilirsem bu yardımcı olabilir.
kstevens715

Bu soru bu soruya çok benziyor . Belki de bazı cevapları yararlı bulabilirsiniz.
S.Robins

Yanıtlar:


3

En az 5 kişi söyleyebilirim. Biri test, diğeri spec, destek ve dokümantasyon ve 3devs. Durumunuzda test edilecek birçok şey var, bu yüzden% 50 özel bir test cihazı mantıksız olmamalıdır. Gereksinimleri not eden ve infra yapınızı test etmek için vb. Böyle bir proje için üç geliştiricinin oldukça düşük olduğunu düşünüyorum. Birçok üçüncü taraf sisteme entegre edilmiş büyük bir arka uç ve son derece çok sayıda özelleştirilmiş raporla eksiksiz bir şekilde ön plana çıkmış. Sahip olmak isterdim.

  1. İyi bir arka uç geliştirici (kalıcılık / iş katmanı)
  2. Eylem sınıfları ve JavaScript CSS Tasarımı yapan iyi bir orta uç / ön uç geliştirici.
  3. Mimar olarak hareket eden ama aynı zamanda iki kattan uzman yardımı ile tüm katmanlarda kod oluşturan iyi bir geliştirici. Bu geliştirici ayrıca JUnit framework Maven Jenkins Git dallanma kurmak gibi şeyler yapabilir.

Ayrılırsanız ne olur, hasta olun tatil vb. Alır. Proje başına bir kişi asla akıllı değildir. İş arkadaşınız olmadan profesyonel olarak gelişmediğiniz için yalnız kalmak da iyi değil. Çok sık yalnız çalışıyorum, yeni mimariler kuruyorum vb., Genellikle 5 geliştirici ekibinden oluşan ekiplerde çalışıyorum, ancak bir iş arkadaşına bunu bir araya getirmesine izin verdiğim kadar asla evrimleşmiyorum ve kendimizi bir hafta konuşmaya, tartışmaya kilitliyoruz ve çerçeve seçimi. Eşli programlama son derece vericidir ve bir geliştirici ile yapılamaz ve emin değilseniz kod incelemelerini kim yapacak? Eğer takılırsanız size kim yardım eder? Yalnızca daha geniş bir kapsamın parçası olsaydı ve gerektiğinde çağrılan uzman kaynakları alabilsem tek kişilik bir proje üstlenirdim.


1
Geçen yaz 2 günlük bir tatil yaptım ve birileri dizüstü bilgisayarımı almak için evime girmek zorunda kaldı ... evet. Her zaman bir boşlukta çalışmaktan bahsediyorum çünkü etkileşime girecek başka geliştiricim yok. Ve küçük bir kasabada yaşayan herhangi bir kullanıcı grubu ya da katılacak bir şey bile yok. Kısa süre önce test kodunu yazmaya başladık, aslında Rails'e geçmeye başladığımızda. Testler olmadan gelişmeyi hayal bile edemiyorum. % 50 özel test cihazına sahip olma fikrini seviyorum.
kstevens715

1
En az bir geliştirici bir sepcialist veritabanı olmalıdır.
HLGEM

8

Kaynakların çoğu zaman zor dünyasına hoş geldiniz !

Sorun, Project Size ile Team Size arasındaki sorunlardan biri değil. Bu, genellikle yönetim ile ilgili diğer sorunları gizleyen çok yaygın bir yanlış anlamadır. Sorun tamamen Scope ile ilgili . Mevcut kaynaklarınızla ne elde edebileceğinize karar vermelisiniz - aka siz. Daha sonra, iş yükünü ele alma kapasitenizin görevi tahsis ettiğiniz zaman dilimlerinde işlemek için yeterli olup olmadığına karar vermeniz gerekir. Bu nedenle proje ihtiyaçlarınızın belirlenmesi ve kapsamının belirlenmesi gerekir.

  • Mevcut kod tabanını temizlemek için zaman harcamak ister misiniz?
  • Bu, projenin başarısını sağlamak için temel bir gereklilik mi?
  • Sisteme eklemek için yeni özellikleriniz var mı? Projenizin ele alınması gereken en önemli yönleri nelerdir ve istek listesindeki küçük öğeler nelerdir?
  • Gereksinimlerden herhangi biri terk edilebilir veya en azından bir sonraki bakım sürümüne kadar ertelenebilir mi?

Gereksinimlerinizin kapsamı hakkında bir fikriniz olduğunda, belirli bir zaman dilimi içinde bir sonuç elde etmek için gereken iş yükünü daha kolay bir şekilde belirleyebilirsiniz. Kaynaklarınızın gereğinden fazla kullanılacağı düşünülüyorsa, daha fazla personele ihtiyacınız olacaktır. Kaynaklarınızın gereğinden az kullanılacağı düşünülürse, son tarihi daha yakına taşıyabilir veya projenizin kapsamını artırabilirsiniz.

Bağırsak içgüdüleriniz size projeyi yönetmek için yeterli personele sahip olmadığınızı söylüyorsa, doğru olabilirsiniz, ancak bağırsaklarınızın bunu size neden söylediğini anlamanız gerekir. Sadece bir his hissetmek yeterli değil. Bunun yerine, içgüdülerinizi desteklemek için kanıt sağlamak için sorunu bilimsel olarak inceleyebilmeniz ve içgüdülerinizin yanlış bile olabileceği ihtimaliyle yüzleşmeye hazır olmanız gerekir. Kanıtlarınızı topladıktan sonra - yani: projeyi kapsamıştır, o zaman gerçekten yönetiminizle oturup projenin kapsamını azaltmak veya projenin başarısını sağlamak için mevcut kaynakları artırmak için bir dava açmanız gerekir. eldeki kanıtlar üzerinde.


Kapsam, 250K SLOC sisteminin büzülme kalitesi (veya en azından danışmanlık yazılımı kalitesi) olan bir şeye tamamen yeniden yazılması gibi görünmektedir. Avantaj, gereksinimlerin toplanması ve genel tasarımın muhtemelen zaten yapılmış olmasıdır. Bu küçük değildir ve başka sorumlulukları olan bir geliştirici için bir şey değildir.
David Thornley

@DavidThornley Bu, geliştiricilerin görevlerinin kapsamına, son teslim tarihlerine, iş yüküne, şirketinin ürünü zaten nasıl pazarladığına bağlıdır. 1-2 kişilik bir ekip tarafından üzerinde çalışılan ve iyi yönetildikleri için çok başarılı olan birçok proje gördüm. Bununla birlikte, görevin büyük bir görev olduğunu ve kendi içinde kaynak bulma konusunda zaten bir kırmızı bayrak olduğunu kabul ediyorum. Mesele şu ki, ilk önce küçük bir ödev yapmadan birçok insanı işe almaya değmez, ki bu benim cevabımın asıl noktası. :-)
S.Robins

Kapsam, son birkaç aydır biraz büyüttüğüm bir şey. Projenin% 20'si şirket üzerindeki etkisinin% 80'ine sahiptir. Odaklanmaya çalıştığım şey bu. Ne yazık ki, etkinin% 20'sine sahip olan% 80, daha fazla kod ve özellik atarak "acil durumlar" ile uğraşmaya çalıştığımızda hattın önüne itilen şeydir. Bir keresinde bazı temel sorunları çözebilmem için bir özellik dondurması istedim. Bana 5 gün verdiler. Söylemeye gerek yok, 5 yıl sonra ve temel sorunların çoğu devam ediyor. Gönderiniz için teşekkürler, çok yararlı.
kstevens715

6

Ürün / projenin başarısı, ödediği şirketin taahhüdüne bağlı olacaktır. Eğer daha fazla programcı / destek personeli işe alacaklarsa, eğitmeyi, öğretmeyi, yönetmeyi vb. Bilmesi gereken tek bir programcıdan verimlilikte doğal bir azalma olacaktır. herhangi bir artış gerçekleşmeden önce bir azalma olabilir .. ayrıca ticari analistlere, yöneticilere, satışlara ve ticari olarak piyasaya sürüldükten sonra ürünün desteğine ihtiyaç vardır.

Ticari bir uygulama barındırmak, sağlam bir platform oluşturmaktan çok daha fazlasıdır. destek gereksinimleri, teknik destek, hata düzeltme, kullanıcı eğitimi vb.

yerinde iyi bir analiz / şartname / tahmin prosedürünüz var mı? değilse, şimdi başlayın , bunu kendiniz yapabilirsiniz.

şu an beynini mi çalıştırıyorsun? Eğer öyleyse, bu süreci yönetmeniz ve geliştirmeye devam etmeniz (vadesi uzatılsın mı?)

ve işte daha önceki deneyimlerimin Güney Kaliforniya bölgesi fiyatlandırmasında benzer bir durumda olmanın cevabı:

5-6 kişi && ~ 500k

  • 1 Tüm şapkalarda Baş Geliştirici / yönetici kullanıcı (~ 100k - 120k)

  • İyi DB anlayışı ve becerileri olan 2 Sr. (çok yetenekli, kendi kendine çalışan) programcılar (2x ~ 80 - 100k)

  • 1 Proje Yöneticisi ile Yönetim arabirimi ($$?) Bu kişi de uygulamanın ihtiyaçlarını anlamak ve bu ihtiyaçları doğrudan programcılar ile iletişim gerekir

  • 1? (HTML / UI) geliştiricisi? javascript becerileri ile (programlama arayüzünden / İşaretleme kodundan nefret ediyorum)

  • 1? Veritabanı sorumlusu? ancak, çoğu iyi programcının ölçeklenebilir veri yapıları oluşturmada bir sorunu yoktur, ancak optimizasyon endişelerine girecekseniz, en azından bir danışmana sahip olmak istersiniz.


1
+1 Arızalarınızı çok seviyorum! Sunulan maaşları tamamlayın, SoCal'da çalışmayı düşündüğüm için benim için üzücü hissettiriyor, ancak Sr halkı MSc + 5 yıl çalışıyorsa, Batı Avrupa'dan çok daha yüksek değiller.
Çiftçi

1
Giriş seviyesi bir programcıya destek görevlerini (istemci kurulumu ve küçük geliştirmeler) devralmasını ve genel homurdanma işi yapmasını tavsiye ederim. Bazı rolleri birleştirmek, ilgili beceri düzeylerine bağlı olarak işe yarayabilir.
jfrankcarr

Vay be, sen 80-100 K için So Cal kıdemli devs alabilirsiniz? Yaşam maliyeti göz önüne alındığında bu oldukça düşük görünüyor. Belki 'kıdemli' ile ilgili farklı fikirlerimiz vardır; Dallas'ta tanıdığım kıdemli geliştiriciler bundan çok daha fazlasını elde ediyor.
kevin cline

Muhtemelen lezzetin de iyi olduğu konusunda farklı fikirlere sahibiz .. 2 .Net Sr. kiraladım. Son 10 yılda genç ve yetenekli olan bu aralıkta çalışmaya istekli. En son Microsoft Stack'i (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, falan filan ..) kullandık ve iyi temiz kodlar çıkarmakta sorun yaşamadık. Biz küçük bir ekiptik ve bazı Sr işe almaya çalışırken bulduğumuz sorun, öğrenmeye karşı dirençli oldukları ve çok fazla fikirleri olduğu ve çok fazla bagaj taşıdığıydı (Çok fazla işe alma penceresi de yoktu)
hanzolo

2

Büyük bir kod tabanındaki 1 programcıyı yapılandırma, test etme, iletişim kurma, destekleme, belgeleme ve hata düzeltmenin tüm sorumluluğu ile yeni kod yazmak veya özellik eklemek (ya da eski kodu yeniden düzenlemek) için fazla zamanınız olmayacak.

İşinizi genişletmeyen bu zorunlu görevlerin yüzdesiyle haftanızı ayırın ve yönetimin ne kadar hızlı ek yardım aldığını görünce şaşıracaksınız.

Büyük projeler, gitmeyecek belirli bir miktarda ilişkili ek yüke sahiptir (özellikle yeni müşterilerle her zaman göründüğünüz gibi uygulama / test etme). Genel olarak destek rotasyonlarına ve desteğe sahip olmanızın nedeni budur; böylece takımdaki bazı kişilerin yeni özellikler üzerinde çalışmak için zamanları var.

Yazılım tahminiyle ilgili kitaplara da bakmak isteyebilirsiniz. Bu kitaplar söyleyecek çok şeyleri var gibi gelmeyebilir, ancak çeşitli alanlardan ilginç vaka çalışmaları içerirler ve iddialarını kanıtlarla desteklerler.


Zamanımın% 95'i bu görevlerden birini yapmakla geçiyor. Destek rotasyonları fikrini seviyorum. Bu, lol ile döndürebildiğim birini işe alırsak dikkate alınması gereken bir şey olabilir. Bugün, örneğin, aslında bazı temel kodlar üzerinde çalışıyordum ve birisinin bataryaya ihtiyacı olduğu için kesintiye uğradım.
kstevens715

@ kstevens715 - Teknik olan birinin çocuğu olsa bile yardıma ihtiyacınız var gibi görünüyor. Size en az 5 rakamlı bir gelir ödendiğini varsayıyorum, eğer bir batarya almam söylenirse, çalışanım için yaklaşık 10 $ 'a mal olur (saatlik ücretimin% 35'i).
Ramhound
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.