Ben mcottle'un cevabını sevdim ve ona karşı çıktım, fakat diğer cevapların henüz ortaya koymadığı bazı dinamikleri ve argümanları ele almak istiyorum.
Birincisi, mcottle'un cevabındaki açıklık, belirli bir beceri seviyesinin altında, bazı problemlerin sadece imkansız olduğudur. Ne yazık ki, bunu bulma şekliniz ekibiniz tarafından deneniyor ve başarısız oluyor, ki bu çokpahalı. Başarısız olduktan sonra, bundan öğrenilecek iki ders vardır. Bir seçenek, daha yetkin geliştiricilere ihtiyaç duyduğunuzu öğrenmenizdir ve bu yüzden onları işe alırsınız ve projeyi bütçenizin üzerinde ve fazla programlamanızı tamamlarsınız, ancak en azından gelecekte hazırsınız. Diğer seçenek, böyle bir projenin ekibiniz için "çok zor" olmasıdır ve gelecekte böyle şeyler denenmemelidir, yani projeden vazgeçersiniz ve benzer olanları. Elbette, nadiren "bunu yapmak için çok aptalız" olarak ifade edilir, ancak bunun yerine "sistemlerimiz çok karmaşıktır" veya "çok fazla eski kodumuz var" veya diğerleri gibi rasyonelleştirilir. Bu son görüş, bir şirketin neyin mümkün olduğu ve ne kadar uzun / pahalı bir gelişme olacağı konusundaki bakış açısını önemli ölçüde çarpıtabilir. "
Bir soru, şirketinizin planı tam olarak nedir? Tamam, ucuz, küçük programcılar işe alacaklar. Üç yıl geçti, şimdi ne? Bu üç yıl boyunca onlarla birlikte olan geliştirici ile ne yapıyorlar? Az önce ona zam yapmadılar mı? Buradaki seçenekler şunlardır:
- Çalışanları elde tutmak için rekabetçi bir şekilde yükseltmeler yapıyorlar; bu durumda neden üst düzey geliştirici oranları ödeme konusunda bir sorun yaşarlar? Yine de buna döneceğim.
- Durgun oranlara sahipler, bu da sonunda sürücü ve / veya vasıftan yoksun çalışanlara "kaynamak" anlamına geliyor.
- Daha aktif çalışanlar daha aktif olarak çıkarılır.
İkinci iki dava, bir çok çalışan devri anlamına gelir; bu, şirket bilgisinin kaybı ve sürekli çalışanlara ödeme yapılması anlamına gelir. İkinci durumda, temelde kötü geliştiriciler için seçiyorsunuz ve böylece artan programlar şeklinde maliyetler artacaktır. Bunun ortaya çıkmasının yolu, X projesinde aniden daha iyi geliştiricilerden biri olan Jim ayrılıncaya kadar her şey yolunda gidiyor, çünkü iki yıl içinde bir artış elde etmedi, çünkü şimdi proje "anlaşılır şekilde" daha uzun sürecek (muhtemelen) Jim kadar iyi olmayacak yeni geliştiriciler kiralamanız ve eğitmeniz gerekiyor. Beklentileri böyle yeniden ayarlıyorsunuz.
Rekabetçi yükselmeler sağlanıyorsa bile, sahip olduğunuz tek şey küçük geliştiriciler nerede ve nasıl öğrenmeleri gerekiyor? Temel olarak, birisinin çalışma ortamına rağmen kendi başlarına iyi uygulamaları öğrenmelerini ve nihayetinde (daha yeşil meralara gitmekten ziyade) başkalarını akıl hocalanmasını umuyorsunuz . Bazı iyi geliştiricilerle "pompayı doldurmak" çok daha anlamlı olacaktır. Büyük olasılıkla bir Uzman Acemi kültürü geliştireceksiniz . Sonuç olarak, küçük geliştiricilere göre sadece biraz daha iyi ve kültürel olarak toksik olan kişilere üst düzey geliştirici oranları ödemeniz gerekecek.
Özellikle çok iyi geliştiricilerin, kimsenin bahsetmediğine şaşırmamın bir avantajı, kolayca çarpımsal bir faktör olabileceğidir . Küçük bir geliştiricinin ve bir üst düzey geliştiricinin masa hazırlamak için aynı zamana sahip olması uygun olabilir. Ancak, iyi bir geliştirici bunu yapmaz. Herkesin masa yapma zamanını azaltan bir masa jeneratörü yapacaklar. Alternatif olarak / ek olarak, herkes için mümkün olanın tavanını yükseltirler . Örneğin, Google’ın MapReduce çerçevesini uygulayan geliştiriciler muhtemelen son derece nitelikliydi, ancak kullanıcılar bileMapReduce'un algoritması, algoritmasının kitlesel olarak dağıtılmış bir versiyonunu kendi başlarına yapamaz hale getirdi, artık kolayca MapReduce ile yapabiliyorlar. Çoğu zaman bu dinamik daha az belirgindir. Örneğin, daha iyi kaynak kontrolü, test ve dağıtım uygulamaları herkesi daha iyi hale getirir , ancak belirli bir kişiyi takip etmek daha zor olabilir.
Diğer tarafını biraz tartışmak için belki üstler haklıdır. Belki daha deneyimli geliştiriciler gerekli değildir. Durum buysa, gelişmenin şirketin önemli bir parçası olmadığı görülüyor. Bu durumda, geliştiricileri tamamen ortadan kaldırır ve kullanıma hazır yazılımı kullanır veya talep üzerine müteahhit kiralardım. Neden bir şirket içi ekip yerine sadece müteahhit kullanmadıklarını keşfetmeye değer olabilir. Zaten çok sayıda çalışan karmaşası yapacaksanız, artan müteahhitlerin bir problem olmaması gerekir.