“Efsanevi Adam Ayı” ndaki “Ameliyat Ekibi” modeline ne oldu?


164

Yıllar önce, Efsanevi Adam-Ay'ı okuduğumda, diğer kaynaklardan zaten bildiğim birçok şey buldum. Ancak, kitabın 1975'ten kalma olmasına rağmen, orada da yeni şeyler vardı. Bunlardan biri:

Ameliyat Ekibi

Mills, büyük bir işin her bölümünün bir takımla mücadele edilmesini, ancak ekibin domuz-kasaplık ekibinden ziyade cerrahi bir ekip olarak organize edilmesini önerir. Yani, her üye sorunu ortadan kaldırmak yerine, biri kesim yapar, diğeri ise ona etkinliğini ve verimliliğini artıracak her türlü desteği verir.

Bu, bir yazılım geliştirme ekibini organize etmek için çok ilginç bir kalıptır, ancak hiçbir yerde bahsetmediğim hiçbir Yazılım Mühendisliği kitabında açıkladım.

Neden?

  • "Ameliyat Ekibi" o zamanlar sıra dışı bile miydi?
  • Veya, denendi ve başarısız oldu mu?
    • Eğer öyleyse, nasıl başarısız oldu?
    • Olmazsa, neden bugünün yazılım projelerinde bu modeli uygulamıyoruz?

12
Bunun sadece görüş temelli cevaplar getirebileceğini söyleyebilirim. Diz çöküşüyle ​​ilgili düşüncem, hiçbir "yazılım mühendisi" nin "destek" rolü olarak görülmek istememesidir. Takımdaki herkese eşit olarak görülmek istiyorlar. Bu, yazılım geliştiricilerin çoğunun aşırı derecede genç olması ile ilgili olabilir. Çoğu takımda kıdem talep edebilecek ve ekibin "cerrahı" olarak kabul edilebilecek hiç kimse yoktur.
Öforik

43
Bir ekibi kasıtlı olarak bir ekip kurmaya çalıştığınızda gördüğüm olası bir problem, cerrahın kim olduğunu doğru bir şekilde belirlemektir.
Bart van Ingen Schenau

9
@Euphoric Süper uber-guru-yıldız-cerrah programcısına zaten sahip olduklarını düşünmeye kendilerini şaşırtan bazı yöneticileri unutma, öyleyse neden tüm bu köylüleri ilk başta istihdam etsin? Yazılım ekiplerini "yönetirken" yazılım geliştirme ve onun içsel zorluklarını anlama kanıtı göstermeyen mgrs'daki payımı veya renkli excel tablolarının ötesinde, ne yazık ki (genellikle her zaman olmasa da, emekliliğe yakın insanlar) gördüm. ).
code_dredd

7
"Ameliyat" ın tıpta en geriye dönük görünen dallardan biri olduğu gerçeğiyle ilgisi olabilir - aslında, İngiltere'de cerrahların 7 yıl çalışarak geçirdikleri ve "doktor" olarak adlandırdıkları bilinen bir şakadır. ve sonra 7 yıl daha böylece tekrar "Bay" veya "Bayan" olarak adlandırılabilirler! Aslında , diğer endüstrilerin “en iyi uygulamalarını” çok daha düşük hata oranlarıyla takip ederek performansını iyileştirmek için ameliyatı yeniden düzenlemek , vb (özellikle sivil havacılık) tıp mesleğinde devam eden bir çabadır. ...
alephzero

6
@ alephzero: Bunlar birkaç komik iddia. Tam olarak nerede ameliyat yaptınız? Burada, "en iyi uygulama" dediğiniz saçmalık, cerrahın zamanının büyük bir bölümünü kaplar ve sıfır fayda sağlar. Süper akıllı insanlar [ironik] hemen hemen her hafta daha fazla bürokratik saçmalık ekleyerek anlamadıkları bir şeyi geliştirmek için çok çaba harcıyorlar. Ancak, bahsettiğiniz başarısızlık oranının nedenleri tam tersi şekilde ele alınmamıştır. Neredeyse tüm başarısızlıklar uyku yoksunluğu, eğitimsizlik ve aşırı tahminden kaynaklanmaktadır. Genellikle her üçü birlikte.
Damon,

Yanıtlar:


103

"Efsanevi Adam Ayı", üniversiteye başladığım yıl çıktı ve şu anki yerel UUUGE! :-) Anlamanız gereken şey, yazılımın THEN ile NOW arasında nasıl geliştirildiğindeki fark. Geri Günde (tm) hemen hemen tüm kodlamalar ilk önce kağıda yapıldı, daha sonra delikli kartlara bastırıldı, sonra okundu, derlendi, bağlandı, yapıldı, sonuçlar alındı ​​ve süreç tekrarlandı. CPU zamanı pahalıydıve sınırlı kaynak ve onu israf etmek istemediniz. Aynen ve aynı şekilde disk alanı, teyp sürüş süresi vb. Bir derleme üzerinde mükemmel derecede CPU zamanını boşa harcayan (şok ve dehşet!) Hatalarla sonuçlanan ... iyi bir CPU zamanı kaybı. Ve bu 1975’te oldu. Fred Brooks’un fikirlerini geliştirdiği sırada, 1960’ların ortalarından sonundaki CPU zamanı daha da fazlaydı.pahalı, bellek / disk / hatta her ne ise DAHA sınırlıydı, vb. vb. Ameliyat Ekibinin arkasındaki fikir, Bir Süper Büyük Rockstar Geliştiricisinin, HIS zamanını masa kontrol kodu, anahtar teslimi kodlama gibi sıradan görevlerde harcamak zorunda kalmamasını sağlamaktı. işleri göndermek, sonuçlar için beklemek (bazen saatlerce). Rockstar Dude Geliştirici Adam YAZI KODU olacaktı. Onun leğen grupları / katip / genç geliştiricileri sıradan şeyler yapmak gerekiyordu.

Sorun, Brooks'un kitabının yayınlanmasından sonraki 2 yıl içinde, Cerrahi Ekip'in arkasındaki temel fikirlerin yıkılmasıydı:

  1. CRT terminalleri ve disk dosyaları, anahtar delikleri ve kart destelerinin yerini almaya başladı. Bilgisayar süresi daha ucuz hale geldi, birden fazla bilgisayar kullanıldı ve işe dönüş süresi önemli ölçüde azaldı. Üniversiteye gittiğimde (Miami Üniversitesi, Oxford, Ohio, '79 sınıfı, sorduğun için teşekkürler) iyiiş geri dönüşü yaklaşık bir saat sürdü. Finaller haftasında - dört saat, belki, bazen altı. (Bir sürü ticari şirket ve üniversiteyle CPU zamanı için rekabet ettik - ve ticari kullanıcılar birinci önceliğe sahipti). Miami’nin “paylaşılan bilgisayar” düzenlemesinden çıkmış olduğu son sınıfımda kampüste kendi IBM 370/145’i kurdu ve ana bilgisayarı açabileceğimiz bir RJE istasyonu olarak çalıştığım güzel bir HP mini vardı. Beş dakika veya daha kısa sürede işlerde Kodunuzu HP'ye yerleştirmeniz, HP'den ana bilgisayara göndermeniz, parmaklarınızı sallamanız / bir sigara içmeniz ve kodunuzu kontrol etmeyi bitirmeden önce çıktınızı almanızın faydası oldu.

  2. Cerrahi Ekip, temel öncül olarak sizin (veya "yönetim", tanrı hepimizin bize yardım ettiği) Rockstar Surgical Developer Dude'ı tanımlayabileceğiniz fikrine sahiptir. Aslında, bunun mümkün olduğundan şüpheliyim. Orada olan rockstar geliştiriciler, herkes bilir - çalışmalar kadar 2000 itibarıyla% iyi ve en kötü geliştiriciler arasında verimlilik farklılıkları göstermiştir - ama bu kişiyi tespit onları uzun bir süre boyunca kod yazmak zorunda kalmadanbüyük olasılıkla imkansızdır. Birisinin bir rock yıldızı geliştiricisi olup olmadığını öğrenmenin tek yolu, aslında kod geliştirmelerini sağlamaktır - ancak Rockstar Surgical Developer Dude değilse, kodunu masa başında kontrol etmek, kartlara kilitlemek gibi heyecan verici şeyler yapacaklar ve Delikli kartların kutularını İş Giriş departmanına doğru atarak, sonuçları beklemekten vazgeçerek, onları gerçekten çalışan tek yolu kodlamayı öğrenmek yerine Bay Rockstar Surgical Developer Dude'a geri koyabilirler - kod yazarak, kodları ayıklayarak, vb. Geri Gündüz (tm) hiçbir programlama yarışması yoktu, Yığın Taşması yoktu, dilediğiniz zaman kod yazabileceğiniz bir PC'niz yoktu, Aptal kitapları için Algoritmalar yoktu - programlama öğrenmenin tek yolu okula gitmek ve biraz programlama yapmanız gereken bir şeyde okumaktı. Ama programlamabaşlı başına ciddiye alınmadı ve insanların yapmak istemediği bir şey olduğu varsayıldı . İlk üniversite kursumda (SAN151 - Sistem Analizine Giriş, Dr. Tom Schaber - teşekkürler, Tom :-) bize eğitmen tarafından "... geçirmemiz gerektiği gerçeğiyle yüzleşmemiz gerektiği söylendi." Birkaç yıl önce programcı olarak sistem analisti olabilirdik ". "İki yıl mı?" Diye düşündüm. "SADECE İKİ YIL İÇİN BU ŞEYİ YAPABİLİR MİYİM?!?" Ben edildi ciddiye sinirlendirdi. Neyse ki yanılıyordu ve o zamandan beri kodlama yapıyorum. :-)

  3. Cerrahi Ekip, programcıların nispeten nadir bir kaynak olduğunu varsayar. Aslında birkaç yıl daha sürdü, ancak 80'li yılların başlarında programlamanın başlamasıyla birlikte PC'lerin ortaya çıkması, herhangi bir geek'in katılabileceği bir şey haline geldi. Bilgisayarların fiyatı düşmeye başladı, geliştirme araçlarının fiyatı düşmeye başladı. Selam Turbo Pascal - bugünün standartlarına göre çok değildi ama o zamanlar kesinlikle fındık olan yaklaşık 40 dolar için tam bir Pascal IDE oldu! Şimdi HERHANGİ BİR HERHANGİ BİR Programlamaya girebilir - bir bilgisayarı karşılayabiliyorsanız ve IBM PCjr'yi koymaya karar verdiğinde (ilk bilgisayarım, bu türkiye’den kurtulmak için yaklaşık 500 $ karşılığında satışta olan IBM’in en büyük hatalarından biriydi. her yerde tıkanmış inek her ay ki kira ödemelerini atladı ("Evet, biliyorum, ama ben ... uuvulamı kırdım ve ameliyat olmak zorunda kaldım .. .uh ... evet, gelecek hafta, sorun yok, teşekkürler, dostum ...) ve onları ateş satış fiyatlarında emdi. Ardından, kullanılabilir hale getirmek için bilgisayara eklentiler için ödediğimizden daha fazla para harcadı. ("Evet, dostum, gelecek hafta, kesin, muhtemelen ..." :-).

Beni gerçekten üzen şey şu ki, bugün bile, insanlara "Efsanevi Adam Ayı" nı hiç okudular mı, yoksa temel dersini anladılar mı ("Geç bir projeye kaynak eklemek daha sonra yapar") sorarsanız, size boş bir yer verirler. bakıyorum - ve OS / 360'ın gelişimi sırasında Tüm Yıllar Önce yapılan hataların aynısını yapmaya devam edin. Eski her şey yine yeni ...: -}


20
Bunu okuyan herkes kitabın 20. Yıldönümü baskısına sahipse, yeni önsözü ve yeni 19. bölümü okumayı hak ediyorsa, 20. yüzyılın baskısı 2017'den itibaren 20 yaşın üzerinde olsa bile, yazar bazı iddiaları belirtiyor Kitabın özetlenmesi için sık sık gözden kaçan bu cevap, “zaten bitmiş bir projeye mühendis eklemek, onu daha da geç yapar”.

1
Dünyada "UUGE" ne anlama geliyor? Bu arada harika bir cevap.
Wayne Conrad,

5
@WayneConrad büyük için yerel .
zzzzBov

1
Olan olmuş bu dönemde bir IBM sistem programcısı, işletim sisteminin belirli bir kısmında uzman olan, takımda çok sıkı bir şekilde tanımlanmış rolleri olması yaygındı. Bu rollerin her birinden kişinin bu konuda bilmesi gereken her şeyi bilmesi veya öğrenmesi ve diğer uzmanların herhangi birine destek personeli olarak davranması beklenir. Temel olarak, her birinin kendi uzmanlık alanına sahip personeli için bir cerrahi ekip kurduk.
Joe McMahon,

1
Aynı hataları tekrar tekrar yapma konusundaki yorumunuza cevaben, kitabın Wikipedia makalesinde beğeneceğiniz bir alıntı var: Yazarların proje geliştirmedeki bu hataları tekrar etme eğilimi Brooks'un kitabının çağrılmasını engellemesine neden oldu “Yazılım Mühendisliği İncil”, çünkü “herkes alıntı yapıyor, bazıları okuyor ve birkaç kişi geçiyor”.
Ryan,

87

Bu kavramın bazı yönleri vardır vardır bazen bugün uygulanan diğer yönleri vardır kaçınılmalıdır .

Ekipleri küçük tutmak, Çevik Yöntemlerin temel özelliklerinden biridir, ancak Çevik dışında da uygulanmaktadır.

Çapraz fonksiyonel ekipler aynı zamanda Çevik'in temel malzemesidir ancak Çevik dışında da ortaktır.

Program Görevlisinin rolü büyük ölçüde Versiyon Kontrol Sistemleri, Yazılım Konfigürasyon Yönetim Sistemleri, Değişim Yönetim Sistemleri, Doküman Yönetim Sistemleri, Viki, Artefakt Depolu Sürekli Yapı Sistemleri ve benzeri gibi bilgisayarlı sistemler tarafından üstlenilmiştir. Demek istediğim, kaynak kodu yazdırmak ve tam olarak indeksleyip dosyalamak için tam zamanlı bir çalışana ödeme yapmayı gerçekten hayal edebiliyor musunuz?

Benzer şekilde, bir Sistem Yöneticisinin rolü (Mills's Surgical Team’nin bir parçası değil, son yılların tipik bir çapraz işlevli ekibinin bir parçası) DevOps gibi kavramlar (Sysadmin’in Yazılım Mühendisi rolünü emmesi) gibi kavramlar tarafından engelleniyor. , Hizmet Olarak Platform, Hizmet Olarak Altyapı ve Yardımcı Programlama (Sysadmin'in “başkasının problemi” rolünü üstlenmesini) veya Kod Olarak Altyapısını (Sistem Yönetimini Yazılım Mühendisliğine çevirerek).

Bugün kaçınmaya çalıştığımız yönlerden biri , sistemi en çok iki kişinin anlamasıdır. Sadece cerrahın sistemi tam olarak anlaması garantilidir, yardımcı pilot olabilir veya olmayabilir. Bu, 1 ile 2 arasında bir otobüs faktörü verir . Cerrah hastalanırsa proje sona erer. Dönemi. Bunun Çevik cevabı , bu modelin tam tersi olan Kollektif Kod Mülkiyetidir : hiç kimse sistemin herhangi bir bölümünden tekil olarak sorumlu değildir . Bunun yerine, herkes bir grup olarak her şeyden sorumludur .

Son olarak, bu konsepte dahil edilmiş ve modası geçmiş bazı varsayımlar vardır. Örneğin, açıkça belirtilmediği halde, ekip, ekipteki tek bir kişinin (cerrahın) gerçekten bir bilgisayarı olduğu şekilde kurulur. Tabii ki, çünkü makale yazıldığı sırada, bir takımın kendi başına bir bilgisayarı olmasına rağmen, takımdaki bir kişinin bile uzaması gibiydi. (1980’de, Smalltalk’ın piyasaya sürüldüğü zaman bile, başarısızlığına katkıda bulunan şeylerden biri, sistemin her geliştiricinin ve her kullanıcının kendi bilgisayarına sahip olacak şekilde kurulmuş olmasıydı - o zamanlar tamamen düşünülemezdi.)

Yani, kısacası: anlatıldığı gibi sanmıyorum kavram tam olarak uygulamaya konmuştur, ama bunun bazı yönleri kesinlikle edilir uygulanan, bazı yönler istenmeyen olarak görülen ve aktif kaçınılır, bazı eski ve bazı ™ Muhtemelen İyi Fikirler vardır, ama kimse yapmaz.


1
İkinci ve son paragrafa gelince, cerrahın kalem ve kağıtla çalışması bekleniyordu ve tezgahtarın bilgisayara erişimi olan tek ekip üyesi olacağını düşünüyorum.
Bart van Ingen Schenau 18

15
'Kaynak kodunu yazdırmak için tam zamanlı bir çalışana ödeme yapmayı ve el ile dizin oluşturup dosyalamayı gerçekten hayal edebiliyor musunuz?' Hayır, ancak sürüm kontrolünü ve sürekli yapım sistemlerini yönetmek için tam zamanlı bir çalışana ödeme yapmayı kesinlikle hayal edebiliyorum ve aslında herhangi bir orta ölçekli veya daha büyük şirkette bu normdur. Aslında, wiki'leri, doküman yönetim sistemlerini ve benzerlerini yönetmek, genellikle tam zamanlı olarak çalışmak için ödenen teknik yazarların tam bir zamanı olmasının tamamen ayrı, hatta daha büyük bir rolüdür.
Miles Rout

9
"tüm ekibin kendisi için bir bilgisayar olurdu ... gerildi" - 1980'lerin başında orglarda minibilgisayar + terminal tabanlı sistemler olurdu, bu yüzden aynı bilgisayardı, kullanıcılar yine de eşit oranda erişime sahip olacaktı. temel ve kendi programlarını yürütme yeteneği (uygun kullanıcı yalıtımı ve güvenliği varsayarsak).
Dai

2
Bilgisayarlar 1975'te pahalıyken, tuşlar oldukça ucuzdu. Ana kareleri ilk programladığımda (75, ancak 77 değil) kodu kağıda yazarız, kartlara atar, bir küçük kapıya teslim eder ve çıktının geri verilip verilmediğini görmek için periyodik olarak tekrar kontrol ederiz. (Geri dönüş süresi bizim için ve bazı sitelerde bir günden fazla 2 saat olabilir.) Bir tezgahtar, bu görevlerin ilki dışında herkes için çok kullanışlı olurdu. 1979'a kadar terminal görmedim.
Theodore Norvell

1
Re: Smalltalk - sadece her dev ve her kullanıcının kendi bilgisayarı olması gerekiyordu, bu bilgisayarların aynı zamanda çok fazla hafıza ve GUI içeren güçlü bilgisayarlar olması gerekiyordu . "PC" yerine "iş istasyonu" düşünün. Orijinal IBM PC'lerin Smalltalk'ı çalıştırmak için beygir gücü yoktu. Dang ayıp, bence ...
Bob Jarvis

20

Eskiden bir kolej eğitimi benzersiz bir şeydi ve mühendisler seçilen birkaç kişi arasındaydı. Bilgisayarlar pahalıydı ve ekipler tanımlanmış ticari yatırım getirisi olan projelerde çalıştılar. Bunlar çok yaygın değildi.

Olanlar, mikro bilgisayarlar, her yerde bulunan lisans eğitimi ve ilerlemek için Üniversite derecelerine bile ihtiyaç duymayan bilgisayar sistemleriydi. Ayrıca, olan şey ekonomiyi değiştirmek ve işgücü maliyetini arttırmaktı.

8: 2 desteğinin ekonomisi: mühendis oranı artık bir anlam ifade etmiyor. Mühendisler kendi destekleri olmalıdır. Bir geliştirme ekibine ekli olmak için yeterli eğitim ve beceriye sahip modern bir insan, bir tür kendi gelişimini yapmamak için çok pahalıdır.

(İlgili bir ekonomi terimi, "hizmet sektörünün maliyet hastalığıdır.")


5
İşgücü maliyetinin artmasıyla ilgili saçma iddiası nedeniyle reddedildi. İşgücü, uzman mühendislik bilgisi bile, bugün 1969'dekinden daha ucuzdur. Gerçekten de, bugün işgücünün daha pahalı olmasının maliyeti, tüm bu cevabı desteklemektedir ve yanlış bir iddiadır.
RibaldEddie

2
@RibaldEddie neye göre? Eğer emeği geçim maliyeti ile kıyaslarsanız, azalan olmuştur; bir saatlik çalışma size 1969'da alabileceğinizden daha fazla yiyecek / barınma sağlayabilir
k_g

3
@k_g iyi o konuma bağlıdır. Enflasyon açısından, ABD’nin çoğu yerinde, bugün 1969’a kıyasla enflasyona göre düzeltilmiş dolarlardan daha düşük bir geliştirici kiralayabilirsiniz. Referans olarak, Brooks kitabında bugün kıdemli bir mimar olarak düşüneceğimiz şey için 20k önerdi. ve işin büyük kısmını yapan değirmen programcısının çalışması için 10k. Bugünün dolar, bu 10k yaklaşık 65k. Bugün, ekibinizde 65k kazanan devlerin çoğuna sahip olmak çok iyi bir fiyattır.
RibaldEddie

3
Bu, temel olarak, yazılım maaşları 1969'dan itibaren değişmiyor. Genel olarak enflasyon ve yüksek yaşam maliyeti göz önüne alındığında, geliştiriciler bugün çok daha ucuz.
RibaldEddie

11
Aslında, modern ekonomik çevrenin verimlilik ve ucuz işçilik açısından sağladığı tüm faydaların tümü iş dünyasında yönetici ve hissedar sınıfına gitmiştir. Dediğim gibi, enflasyona göre ayarlanmış olsa bile, yazılım geliştirici maaşları aynı kalırken, icra tazminatı enflasyondan yüzlerce kat arttı. Ek olarak, özellikle Kuzey Amerika'nın batı kıyıları boyunca birçok yer, yaşam maliyetlerinin enflasyondan (emlaklara bakınız) çok daha hızlı bir şekilde artmasına rağmen, profesyonel geliştirici maaşları, enflasyona ayak uydurmadı.
RibaldEddie

13

Bu kalıplar bana Mob programlaması gibi ses çıkarıyor:

Tüm grup (KG, gerekirse geliştiriciler ve hatta Ürün Sahibi) aynı problemde aynı anda çalışıyor. Stand up, yüksek iletişim yok, doğrudan hayata geçiriliyor.

Gönderen http://codebetter.com/marcushammarberg/2013/08/06/mob-programming/

Mafya programlamanın temel konsepti basittir: takımın tamamı aynı anda bir görev üzerinde takım olarak çalışır. Yani: bir takım - bir (aktif) klavye - bir ekran (projektör elbette). Tam takım çifti programlama yapmak gibi.

Burada çalışırken görün: https://www.youtube.com/watch?v=dVqUcNKVbYg


Bu alıntı temelde düşündüğüm şeydi: İkili programlama gibi geliyor, "cerrah" olarak adlandırdığımız "sürücü" olarak adlandırdığımız farklı bir ölçek dışında.
Izkata

7
Bana öyle geliyor ki bu dışa dönük insan odaklı uzman yazılım geliştiricilere ihtiyaç duyuyor. Bol şans sana.
Bob Jarvis

Bunu söylemek için buraya geldim; veya çeşitli takım öz organizasyonları.
Marcin

2
@BobJarvis Katılmıyorum. İçe dönük ekipler olarak çalışırken çok başarılı oldum (ve bazılarının da dışa dönüklükler içeren olduğunu düşünüyorum). Kilit nokta, insanların katkıda bulunmak için kendilerini güvende ve kendilerini rahat hissedebilecekleri ve grubun yararı için bir süredir doğal eğilimlerini genişletmeye istekli oldukları bir alan yaratmaktır. Susan Cain'in Sessizliği, farklı mizaçlarla nasıl iyi çalışacağını anlamada çok yardımcı oldu: ted.com/talks/susan_cain_the_power_of_introverts
David Carboni

12

Bu takım modeli 305. sayfada Steve McConnell tarafından Hızlı Geliştirme - Yabani Yazılım Programlarının Taminginde tekrar bahsedilmiştir. İşte Baş Programcı Ekibi.

Bu model ortaya çıktı çünkü takımda bir dahi vardı ve hesaplama kaynakları sınırlıydı. Bir şey nadir olduğu için lehine düştü ve her yerde bulunan bilgisayarlar ve dağıtılmış sürüm kontrolü ile ameliyat masasında birçok el için yerimiz var.

Diğer referanslar:

Baker, F. Terry. "Üretim Programcılığının Baş Programcı Ekibi Yönetimi", IBM Systems Journal, cilt. 11, hayır. 1, 1972, sayfa 56-73.

Baker, F. Terry ve Harlan D. Mills. "Baş Programcı Takımları." Datamation, Cilt 19, Sayı 12 (Aralık 1973), s. 58-61.


9

Tahminime göre, çoğu küçük kendini organize eden ekip, zaten fiili bir cerrahi ekip modeline razı olma eğiliminde olacak.

Bulunduğum son iki takım genellikle bir kıdemli (cerrah), bir ara pilot (yardımcı pilot) ve birkaç genç / uzmandan oluşan üç veya dört kişiden oluşuyor. Ameliyat ekibindeki rollerin bir kısmı Brooks tarafından bahsedildiği gibi bugünlerde Scrum ustaları ve sysadmins veya bulut sağlayıcıları tarafından doldurulur. O zamanlar kaynak kontrolünün zar zor var olduğunu, git kadar güçlü bir şeyi bıraktığını unutmayın.

Bezos'un iki pizza kuralını düşünün. İşte sizin kendi kendini organize eden cerrahi ekibiniz.


1
temelde, hiçbir şey olmadı. +
gordy

1
@ gordy evet ve hayır. Brook'un örneğinde, her ihtimalde, takımdaki her rolde kimin olduğunu belirlemenin yöneticilere kaldığını, ancak modern ve çevik bir konseptte takımın kendi kendini organize ettiğini fark edeceksiniz. Bu yüzden cerrahın veya yardımcı pilotun rolleri, ekibin çalışma şeklinden doğal olarak düşüyor. Bunun önemli bir fark olduğunu düşünüyorum: öz-örgütlenme vs şirkete göre.
RibaldEddie

"En" u "kimi" olarak değiştirirdim. Bu gerçekten takım dinamiğine bağlı. Ve eğer bir cerrah yukarıdan dikte edilirse, kesinlikle organik olarak büyümesi gerekir, sonuç kendiliğinden organize olmak için +1 olacaktır.
Peter,

2
Yazılım Taosu'ndan Sözler: #IV - Takım Çalışması Taosu: İyi yazılımlar, hızlı çalışan küçük takımlar tarafından yazılmıştır. Kötü yazılım, yavaş çalışan büyük ekipler tarafından yazılmıştır. Corollaries: - Bir takımın optimal büyüklüğü 1; - Takım büyüklüğü için maksimum pratik değer 3'tür; -> 3 büyüklüğündeki ekipler için (yanlış) iletişim ciddi bir sorun haline geldi; - Takım büyüklüğü> 6 için, projenin tamamlanması ciddi şekilde tehlikeye girer. Son teslim tarihi itibariyle proje tamamlama olasılığı büyüktür. Bu gibi durumlarda akıllı geliştiriciler kapıyı kullanacak ... Böylece yazılmıştır ... ( BWOOoooonnnggggg !!! )
Bob Jarvis

6

HP'den benzer bir şey öneren bir makale vardı:

  • Her yazılım mühendisi birden fazla yöneticiye ve birden fazla destekçiye ihtiyaç duyacaktır.
  • Her mühendis için teknik bir yazar, testçi, yapım yöneticisi ve araç üreticisi olmalıdır.

Bildiri web öncesi günlerde yapıldı ve zaman zaman komik geldi. Her yıl büyüdü, yorum biraz "çok komik, komik" den "belki de yapmalıyız" a taşındı.

Gerçek testlerin tasarlanması oldukça zordur, bu nedenle muhtemelen görüş kalır. Bazı araştırmalar ve tamamlanma oranları olabilir.


9
Beni gülümseten kısım (?) “... çoklu yöneticiler…” meselesidir. Bir yönetici üretkenliği azaltmak için fazlasıyla yeterli. Birden fazla yönetici, geliştiricileri ya intihar (içe dönükler) veya cinayet (dışsallar) düşüncelerine yönlendirebilir.
Bob Jarvis

4
@BobJarvis - Projeye bağlı olarak, farklı unvanlara sahip beş adede kadar eşzamanlı “yönetici” oldum. Etki, tahmin ettiğiniz gibi.
Rob Crawford

1
Belli ki dışa dönük birisin. Yani ... delilik savunma? Meksika? Veya ... haklı cinayet ..? :-)
Bob Jarvis

Bu yüzden bir şirkette beş patronum vardı. Ben oradayken, herhangi bir sorun, benim ya da bir başkasının olup olmadığına bakılmaksızın, 5 farklı bakış açısıyla duyacağım. Genelde 2 sayısı gelene kadar analiz ettim ve orada daha fazla duymak sinir bozucuydu.
Robert Baron,

Asıl fikir "karışmaya çalışan beş farklı yöneticiye sahip olmak" değildi, örneğin, "İK yardımları için bir kişi" ve "İK kariyer gelişimi için bir kişi" idi. Vb. mühendisle ne sıklıkta iletişim kurdukları. Eğlenceli bir video oyunu olur!
Charles Merriam

2

Ameliyat ekibine olan ihtiyacın ne kadarının internetin yükselmesi, entegre geliştirme ortamları ve Fred Brooks'un cerrahi ekibine atfettiği işlevsellikten büyük ölçüde faydalanabilecek yazılım geliştirme kitleri nedeniyle ne kadar gereksiz hale geldiğini merak ediyorum :

  • Cerrah: bir programcı
  • Yardımcı pilot: programcılar , çalışanlar, StackExchange veya IRC gibi çevrimiçi topluluklar
  • Yönetici: genellikle bir yazılım proje yöneticisi tarafından üstlenilen rol
  • Editör: Javadoc veya Doxygen gibi dokümantasyon-jeneratörlerini entegre eden IDE'ler; yazılım geliştirme kitlerinden dokümantasyon
  • Sekreter: e-posta istemcisi, sorun izci ve çekme istekleri, şirket sohbet odaları ve posta listeleri gibi proje yönetimi araçları
  • Program sorumlusu: IDE, yeniden düzenleme kodunu ekleyebilme özelliği ile proje tasarımı hakkında bilgi depolar; Yazılım geliştirme kitlerinden dokümantasyon ve örnekler
  • Araçlar: tüm açık kaynak topluluğu
  • Test cihazı: hemen, test süitlerini ve kütüphaneleri test etme. Fakat elbette, üretim kodu için ayrı bir KG süreci gereklidir.
  • Dil avukatı: çevrimiçi belgeler, StackExchange

1

Efsanevi Adam Ayının öncüllerine bakman gerektiğini düşünüyorum. Daha fazla programcı işe almak, yalnızca sorunlu / gecikmiş bir yazılım projesinin daha da kötüleşmesine neden olur. Sorun iletişimde ve projeye hız kazandırmak için yeni programcıların eklenmesi (mevcut gelişmeden zaman alıyor), teknoloji ve bazen etki alanının kendisi.

İyi desteklenmiş bir programcı iletişim süresinin ve koordinasyonun çoğunu ortadan kaldırır. Diyelim ki Teknoloji X için bir danışman tutmalısınız. Bu danışmanı, bu kişinin bu alandaki tüm kodlamaları yapabileceği kadar projeyi hızlandırmak için hızlandırmak yerine, mevcut geliştiriciyi yapabileceği bir noktaya koyar. biraz nezaret ile.

Bunun çoğunu görmemenizin bir nedeni, çoğu yazılımın zaten bir kişi tarafından yazılmış olması. Takımlar işi böler ve herkes gider ve işini yapar. Çift programlama, gözden geçirme ve mikro yönetme kokan her şey kaşlarını çattı. Pek çoğu programlamayı takım sporu olarak görmüyor. Bir kişi, belli bir sorunu tüm genel kısıtlamaları dikkate alarak çözer.


0

Tasarım, uygulama, test, dokümantasyon, inşa, dağıtım, operasyonlar, vb. Uzmanların yaptıkları eşsiz rollere ayırdıkça, "cerrahi ekip" felsefesini daha fazla takip ettiğimizi (belki de tam olarak tanımlandığı şekilde olmasa da) savunuyorum. ).

Tecrübelerime göre, her insanın her görev için yapması gereken devOps felsefesi domuz kasaplığı modeline bir dönüşdür (kötü olduğunu söylememek, sadece farklıdır).


2
Bu kesinlikle DevOps modeli değil.
RibaldEddie

5
Aslında DevOps, cerrahi ekip modeline benzer, çünkü Geliştirici Operasyonları, operasyonların geliştirilmesinde hizmette bulunduğunu ima eder. DevOps, iki temel kavramla ilgilidir: işlemlerin bir geliştirme pratiği olarak görülmesi ve bu nedenle, geliştirme ve kaynak yönetim ve çevik yönetim yöntemleri gibi geliştirilmede kullanılan araç ve tekniklerin, operasyonlar tarafından kullanılması ve operasyonların gelişmeyi desteklemek için orada olması gerektiğidir.
RibaldEddie

1
@RibaldEddie İlginç. Şirketimdeki DevOps grubuyla olan deneyimim, yalnızca geliştiricileri işe almaları ve ürün geliştirme, test etme, dokümantasyon, dağıtım vb. Her şeyden sorumlu olmaları. "Çapraz işlev" sözcüğü akla geliyor. Çok iyi, 2 oy ve 15 dakika içinde silme oyu ile sanırım bu siteden uzak duracağım.
Mike Ounsworth

1
Ah, o zaman farklı "çapraz işlev" tanımına sahibiz. Bunu, ekibin her üyesinin her görevi yapabildiğini ifade etmek için kullanıyorum - Jiras insanlar arasında rutin olarak dolaşıyorlar çünkü uzmanlıktan uzaklaşıyorlar. Bu özelliği geliştiren bir sonraki özelliği test edecek veya belgelendirecektir. Bu yaşadığım "DevOps".
Mike Ounsworth

1
@MikeOunsworth: Bu bir çok fonksiyonlu ekip:
Jörg W Mittag

0

DevOps ve Build Master rollerini sık sık dolduran bir programcı olarak sık sık cerrahi ekip olma pozisyonunda olduğumu hissettim .. err ... takımdaki adam. Bir yapı ustası olarak kodun tamamına genel baktım ve başarısız olduğunda ilk satır oldu. Çoğu zaman sadece kendim tamir ederdim.
Ben genellikle bu metrik sistemlerini yazan ve koddaki açık noktaları, daha sık başarısız olan kısımları, en fazla hata raporunu alanları vb. Ölçenlerden biriydim. soruna neden olan ilginçlik ve buna yönelik çözümler ve mimari değişiklikler önerildi.

Bir DevOps olarak, çok büyük işlem alanlarını ve ek yükleri otomatikleştirirdim. Geliştiriciden QA test uzmanlarından BT ekibine kadar yönetime kadar tüm ekipte, tüm ekipte hayatı kolaylaştıracak teknolojileri ve araçları araştırırdım. Benim rolüm süreci anlamaktı; ama gözlerimi ekipte (gerçek insanlar) sabit tutarak (bu acıyı çekerek) bu işlemi kullanarak onu tamamen şeffaf hale getirme noktasına kadar damıtmayı başardım. hiç zor "büyük resim".

Neden bu kadar çok bıktığını ve büyük olasılıkla nankör bir pozisyon. İşimi iyi yaptığımı, hiç kimse bu işlemi farketmediğinde, hiç kimse inşaat boru hattı hakkında bir düşünce vermediğinde. Yani evet, iyi yağlanmış bir makine hızlı bir şekilde alınıyor. Fakat biliyordum ki, aslında bu çalışmanın bir ekibin üretkenliği üzerindeki çarpıcı etkisini ölçtüm ve yatırımın iyi olacağını biliyordum.

Yani evet, bugün rolün hala çok canlı olduğunu düşünüyorum, ama kuşkusuz o zamanlar ne olduğundan geldiğine rağmen.

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.