Bir takımda tasarım, diğerinde kodlama


28

Tüm yazılım tasarımının yerel bir ekip tarafından yapıldığı ve bu tasarımların kodlama için bir denizaşırı ekibine gönderildiği bir projede yer alacağım.

Bu, bu özelliklere sahip bir projeyle ilk karşılaştığımda ve benim için garip hissettiriyor: Yöneticiler, çok detaylı tasarım belgeleri yapmamızı bekliyorlar; bu nedenle offshore ekibi için hataya yer yok; Benim bakış açımdan bir IDE'de yapabilirken kağıda kodlama yapıyorlar.

Öyleyse benim sorum şu, bu yaklaşım iyi mi, kanıtlanmış mı? Yazılım sürecimizin projemizde başarılı olması için sahip olması gereken ana hususlar nelerdir?



5
@mike: Spacecraft yazılımı çoğu yazılımdan biraz farklıdır. Her zaman mükemmel çalışması gerekiyor, yoksa hayat kaybı ve çok pahalı varlıklar ortaya çıkabilir. Bakınız fastcompany.com/28121/they-write-right-stuff
Robert Harvey

9
Sanırım offshore ekibi daha ucuz, tasarım ekibinin iki katı büyüklüğünde mi? Kurum içi takıma göre bazı gerçek avantajları var mı? örneğin, siz istemiyorsanız son kullanıcıların doğal dilini konuşuyorlar mı? Evde sahip olmadığınız bir çeşit yetenek var mı? Olmazsa , şirketinizin kötü bir PHB zehirlenmesi vakası olduğunu görüyorum .
ZJR 16

1
@mike: Çoğu yazılımda az sayıda hatanın kabul edilebilir olarak kabul edildiğini söylemek daha doğru olur, çünkü hatasız yazılım bir asimptottur ve kalanları çıkarmanın çok pahalı olduğunu düşünüyorum.
Robert Harvey,

9
Derhal başka bir iş aramaya başlamanızı öneririm. Programcılar, bu tür bir düzenlemenin altında yatan varsayımlar olan değiştirilebilir çarklar değildir. Tasarımın bu şekilde geliştirilmesinden - karadan veya denizden - ayrılması, müşteri ile arızayı büyük olasılıkla muhtemel yapan geliştiriciler arasında kopukluğu garanti eder.
Steven A. Lowe

Yanıtlar:


36

Benim fikrim:

Eğer denizaşırı insanlara vereceğiniz her şey belgeler ve şemalar ise, çok fazla yanlış anlaşılma ve hayal kırıklığı yaşarsınız .

Benim önerim

  • Onlara kadar çok belge, daha ziyade vermeyin arabirimleri ve soyut sınıflar için tasarım hedefleri içine deli gömleği .

  • Bilinen bir adlandırma standardını kullanmalarını isteyin.

  • Birim testlerini kullanmalarını isteyin.

  • Süreci denetlemek için tasarımcılarınızdan / mimarlarınızdan birisini kendi tesislerine gönderin, kurum içinde kodlamaktan daha ucuz olacak, ancak daha iyi sonuçlar alacaksınız.


2
Açık deniz takımları, kıyı ekiplerinin yaptığı gibi çalışmaz. Tam olarak ne istediğin konusunda çok spesifik olmalısın, yoksa istediğini elde edemezsin.
Robert Harvey

32
... Bu, ABD’ye doğru karada bir çok gelişmenin neden bir parçası; karada tasarım yapma, açık deniz geliştirme, sonra karada hemen hemen hata ayıklama bu yaklaşım, tüm çorbaları fındıkta geliştirmek için kullanacağınız aynı kara kaynaklarına sahip olmanızı gerektirir. Doğrudan malzeme ve iş yapma emeğinin yüksek olduğu diğer herhangi bir üretim sürecinde, açık deniz yaklaşımı anlamlıdır. Yaptıklarınız için tasarım sadece maliyetinizin büyük çoğunluğu değil, aynı zamanda nihai ürün de olabilirse, deniz gelişimi daha açık bir şekilde gereksiz hale gelir.
KeithS

@KeithS Harika bir yorum. Seninle% 110 aynı fikirdeyim.
Tulains Córdova

2
Onları, kendiniz herhangi bir kod yazmadan bulduğunuz sınıfları ve arayüzleri kullanmaya zorlamak, felaket için bir reçetedir.
Mike Weller

2
@Euphoric Yazma abstract void calculateDroneTrajectoryBasedOnCNNNewsFeed()ve gerçekten uygulamak arasında uzun bir mesafe var .
Tulains Córdova

26

Adı Big Design Up Front, Şelalesi. Çok başarılı bir metodoloji olarak kabul edilmiyor. Ama ben işe yaradığını gördüm ve işe yaradığında çok iyi çalışıyor. Doğru yapmak çok pahalı.

Aynı zamanda işvereninizin sizden yapmasını istediği şey.

Açık deniz takımları, kıyı ekiplerinin yaptığı gibi çalışmaz. Tam olarak ne istediğin konusunda çok spesifik olmalısın, yoksa istediğini elde edemezsin.


"Çok özel" hakkında biraz daha ayrıntı verebilir misiniz? Pseudocode include yöntemine ulaşmak zorunda mıydım?
Carlos Gavidia-Calderon

8
Sahte kod, offshore ekibinden tam istediğiniz gibi kod alma şansınızı artıracak. Diğerlerinin de belirttiği gibi, offshore işini başarılı bir şekilde yapma süreci, tüm işi yerinde tutmaktan daha maliyetli olabilir. Ama bu senin kararın değil.
Robert Harvey

2
Olmamalıydı It's very expensive when it goes wrong. :-)
LarsTech

@LarsTech: Bu yüzden doğru yapma ek masrafı haklı.
Robert Harvey,

Gibi Sözdekod gerçek kod yazmak aynı çabayı almak, + deniz haberleşme havai için
Web devie

16

Son projede yazılım tasarımcısıydım. Bütün gelişme denizden çıktı. Başarılı olduk. Böylece bu işlem işe yarayabilir.

Çok fazla dökümantasyon yaptım fakat bu hiçbir şekilde kapsamlı değildi ve adım adım talimatlar vererek veya sınıf isimleri, fonksiyon isimleri vb. İle detaylandırılmıyordu. diragramlar, gerektiğinde daha detaylı bir tasarım dokümantasyonu.

Bu gerçekten deniz gelişmesine ne kadar güvendiğinize bağlı. Yeterli geliştiriciler olmak için offshore ekibime güveniyorum. Bu, genel bir yön verdim, ancak offshore ekibinin hoş bir şekilde tatmin edici bulduğu uygulamaları uygulamalarına yer verdim. Geçmişte daha fazla mikro yönetiliyorlardı. Bazı durumlarda, onları tasarım desenlerini gerektiği gibi kullanmalarına yönlendiririm. Ayrıca düzenli olarak kod incelemeleri ve yazdıkları kod üzerinde analizler yaptım ve yeniden düzenleme veya temizleme çabaları konusunda tavsiyelerde bulunacağım. Ayrıca, ekibin bir kısmı eğlence araçlarıyla kaza geçirdiğinden, bazı kaynaklar konusunda yetersiz kaldığımız için uygulama sırasında bazı öyküleri kodladım.

Ek olarak, bu sürecin gerçekten sadece teknik lider (ler) inizin projedeki gücünün ve işletme, tasarımcı, potansiyel müşteriler ve geliştiriciler arasındaki iletişim üzerinde başarılı olduğunu düşünüyorum. Her bir özelliğe ve hikayeye göz gezdirmek için çok zaman harcadık ve açık denizdeki liderlerin / kaynakların gereksinimlerin neler olduğuna iyi karar verdik. Özelliğin / hikayenin gözden geçirilmesi sırasında soru sormuyorlarsa, o zaman bazı sorunları bekleyin. Ayrıca iş imzalanıncaya kadar da iş tamamlanmış sayılmaz. Böylece her şey çevik kalkınmayı yöneten bir araçta takip edildiğinden beri herkesin sorumlu olmasını sağladı.

Diğer cevaplardan biri çoktan atfedildiği gibi, geliştirme süreci, adlandırma standartlarını (yerleşik yeniden yapılandırma kuralları), test senaryosunun kapsamını (TDD, Mocking vb. Kullandı) içeriyordu. başarılı bir proje için şansınızı.


Belirli bir çevik süreç kullanıyor musunuz? Özel bir tane belki?
Carlos Gavidia-Calderon

2
Saf çevik değildi, daha çok planlı tekrarlamalar gibi. Her şey önceden planlanmış ve daha sonra 2 hafta tekrarına bölünmüştür. Her etkileşimde çevik süreçler kullandık. Kullanılan hız ve yanma çizelgeleri, standart günlük ayağa kalktıktan sonra denizde bir ya da iki telefon görüşmesi yapıldı. Telefonda denizaşırı olarak kesinlikle çok zaman harcamak, ancak ideal gelişme günümüz iletişim süresini hesaplamak için 6 saatti.
Jon Raynor

2
Kendime not: eğlence amaçlı araçları gelecekteki yazılım yinelemelerinden kurtar.
Robert Harvey

Başarınızın doğru offshore ekibini seçmekle ya da mikro yönetim olmadan doğru şeyi yapmalarına güvenmekle daha fazla ilgisi olduğuna inanıyor musunuz? "Planlı yinelemeler" tekniğinizin başarınız için kritik olduğunu düşünüyor musunuz?
Robert Harvey

1
@Jess - Hayır, takım yalnızca onaylanmış öyküler ve özellikler sunmaktan sorumludur (işlevsellik). Gelecekteki işlevsellik sunulmaz, ancak yazılımın tasarımı genellikle bir çeşit esnekliğe izin verir, ancak yalnızca istenenleri sağlarız.
Jon Raynor

2

Açık deniz kalkınmasının en büyük maliyeti iletişimdir. Belgelendirme iletişimin bir yoludur, ancak belgeler genellikle tüm ayrıntıları ve olası değişiklikleri kapsayamaz.

Projenizin ne kadar büyük olduğundan emin değilim. Büyük olduğunu düşünüyorum, aksi takdirde açık deniz geliştirme ekibini kullanmak değerli değildir. Böylece benim deneyimim

  1. İskelet kodunu, genel arayüzü, servis arayüzünü vb. Tanımlayın ve birlikte gözden geçirin
  2. Kabul testlerini diğer tarafla tanımlayın
  3. Büyük belgeyi küçük hikayelere ayırın, küçük hikayelere dayalı çalışın. Büyük belge tüm sistemin sadece büyük bir resmi
  4. Hikayelerin kontrol noktalarını bir hafta veya iki hafta olarak ayarlayın

1 ve 2 aslında gelişme ile ilgilidir, diğer tarafın gereksinimi iyi anladığından emin olmak için ve her iki taraf da aynı düzeni kullanıyor. Şekil 3 ve 4, çevik kalkınma metodolojisinin bir parçasıdır, ancak açık deniz gelişimi için tam çevik süreci kullanmak zordur.


1

Bir dereceye kadar hepimizin böyle çalıştığını düşünüyorum. Bir yerde birileri bir şeyler tasarlar ve sistemin parçası olan veya onunla çalışan bir şeyi kodlarız. Örnekler, mobil cihazlardaki oyun dışı uygulamalar gibi bir çerçeveye dayalı uygulamalar oluşturmaktır. Çerçeveyi yapan kişilerin tasarım ekibi tarafından birçok kullanıcı arayüzü kararı verilmiştir. Bir uygulama yazmaya, uygulamanızı satmaya kadar öğrenmekten her şeyi kontrol ettiler. Bu modelin neden başarılı olduğunu görmek istiyorsanız, sadece bazı satıcılar tarafından sağlanan dokümantasyon ve araçların miktarına bakın.

Diğer bir örnek, REST tarzını uygulamaya çalışan çok sayıda web uygulamasıdır. Bu, gerçekten HTTP'nin nasıl kullanılacağına ilişkin spesifikasyonlar olmasına rağmen, nasıl bir şeyler uygulanacağını anlatmaz. Her neyse, izlenmesi gereken şartnameler ve yol gösterici ilkeler var. Yığın değiş tokuşunda veya işyerinde REST uygulaması hakkındaki tartışmaların miktarını görürseniz, insanlara bir şeyi belirli şekillerde uygulamalarını söyleyen bir mimar varmış gibi. Hala başarılı bir model, bence, tarzı takip eden birçok insan var.

Bu iki örnekten, tasarımların nasıl yayıldığını görebilirsiniz, bazıları kâğıt özellikleri olarak, diğerleri kitaplarla, araçlarla ve örneklerle gelir. İnsanların nasıl bir soru sorduğunu (hacimce), hangi standartları / tasarımları takip etmeye çalıştıklarına bağlı olarak farklı derecelerde anlayışı doğru anlamaya çalıştığını görebilirsiniz. Sadece yığın akışına gidin ve izleyin;)

Bana şartnamenizi verirseniz soracağım. Bana ünite testi yaparsan, kodlar ve test ederim.

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.