Bir ekip büyüdükçe uygulama mimarisinde tutarlılık nasıl korunur?


46

Başlangıçtaki tek geliştirici olarak, uygulamamızın mimarisinde ve çerçevelerinde çok fazla karar verebilme lüksüne sahip oldum.

Hızlı ileri 4 yıl ve bir satın alma daha sonra, 5 kişilik bir ekibim var ve çoğu zaman vahşi batı gibi hissediyorum. Her ne tasarım kararını verirse verilsin insanlar: tamsayı ve bir yerde DB tipleri için numaralandırır ve başka bir dize, bir problem için bu çerçeve ve daha sonra başka bir yerde aynı problem için farklı bir çerçeve vb.

Tutarlılığı güçlendirmeye nasıl devam edebilirim? Benim için önemli geliyor ama ekip üyelerim "çalışıyorsa işe yarıyor" metodolojisine abone gibi görünüyor.

Sanırım sorumun büyük bir kısmı şudur: böyle standartlar beklemek benim için gerçekçi değil mi? Ben yaratıcılığa engel olan bir diktatör olarak karşı karşıya gelme fikriyle mücadele ediyorum, ancak istediklerini yapmak ölçeklenebilir gibi görünmüyor.


8
Bize mevcut SDLC süreciniz hakkında elinizden geldiğince bahsedebilir misiniz? Şelale, Çevik, vb. Misiniz? TFS veya görev yönetimi kullanıyor musunuz? Kod incelemeleri yapıyor musunuz veya FxCop veya diğer kod doğrulama biçimlerini kullanıyor musunuz? Tasarım dokümantasyonu üretiyor musunuz? Belirlenmiş bir mimar rolünüz var mı?
John Wu


1
@gnat: Cevaplar herhangi bir gösterge ise, mükemmel bir kopya değildir.
Robert Harvey

2
Adil olmak gerekirse, bu standartlar çok erken belirlenmeli ve yaygın olarak kabul edilen bazı "en iyi uygulamalar" belgesine dayanmalıdır, böylece hiç kimse iyilik veya seçkinlikten şikayetçi olamaz. Eğer bir kişiden sert bir baskı alıyorsanız, bir kovboyun takımın geri kalanı için sağlıklı bir çevreye değip değmeyeceğini göz önünde bulundurmanız ve onun yerine yenisini koymak zorunda kalacaksınız. Sonra check-in öncesinde sıkı kod incelemesini kullanmak ve bir mimari bileşen eklemek için aşağıda verilen tüm tavsiyelerin harikalar yaratacağını düşünüyorum.
Patrick Hughes,

1
Bu, yazılım mühendisliğinin kutsal kâsesidir (diğer şart olan kâğıt kabın dışında, kesin gereksinimin ortaya çıkması).
pmf

Yanıtlar:


52

Seni bu kadar özel yapan ne?

İşlemcim çalıştığını söylüyor ve eve gitmek istiyorum. Neden beni rahatsız ediyorsun?

Bu tutumu, herkesi çekme istekleri düzenlemeye zorlayarak halledebilirsiniz. Ama şimdi son tarihler beliriyor. Kötü kod, bozulmamış kalenizin kapılarına basar ve sonunda baskıya maruz kalırsınız. Veya sadece herkesin ayrıldığını bulmak için kazanırsınız ve kimse bozulmamış kalenizi kullanmaz.

Bu konuda yardımcı olacak birçok araç var. Kaynak kontrolü, kod incelemeleri, kodlama standartları vb. Ancak sorunun kalbi ve ruhu, en iyi neyin alakalı olduğuna dair öznel düşüncelerinizdir. Bunun için saygılarını kazanmak ve korumak zorundasın. Bunu yapın ve bu çok daha kolay. Bunu yapmamak ve hiçbir araç veya uygulama sizi kurtaramaz.

Bunu yapmanın en iyi yolu erken iletişim kurmaktır. Bana bu fikre karar verdikten 6 ay sonra "bu dükkandaki DB türlerimiz için dizeleri kullanmıyoruz" deme. Bana iki yıl boyunca belgelere gömüldüğünü söylemek, bunu yapmama izin vermenin bir gerekçesi değildir.

Hangi sebepten olursa olsun, değer verdiğiniz şeyler var. Onları önemsiyorsanız ve bir noktaya sahipseniz, bu şeylerin her modülün kodlanmasından önce, sırasında ve hemen sonra açıkça iletilmesini sağlayın.

Kod takip etmek harika bir uygulamadır. İhtiyacınız olan araç ve uygulamalara yatırım yapın, böylece kodu yazdığınız dakikalar içinde inceleyebilirsiniz. Programı eşleştirmek ve araç sadece bir misafir koltuğu.

Neden? Kod yazdıktan sonra geçen her saniye üssel olarak değiştirilme maliyetini arttırıyor. Çünkü kodun hafızasının yarılanma ömrü var. Mesanem bir mola talep ettiği anda unutmaya başladım.

Önemsediğiniz şeyleri temel prensiplerine göre azaltın. Bana izlenmesi gereken 101 kural listesiyle vurulmak yerine, ihlal ettikleri 10 prensibi ver, böylece hangi kuralın 102 kendi başıma olması gerektiğini çözebilirim.

Sizinkini görmeme yardım ederek kendi vizyonumu benimseme konusunda beni güçlendiriyoruz.

böyle standartlar beklemek benim için gerçekçi değil mi? Ben yaratıcılığa engel olan bir diktatör olarak karşı karşıya gelme fikriyle mücadele ediyorum, ancak istediklerini yapmak ölçeklenebilir gibi görünmüyor.

O zaman dikte etme! Bunu olumlu bir deneyim haline getirin. Bu bazı yeni yaş hippy saçmalık değil. Temel psikoloji. İnsan davranışını değiştirmeye çalışıyorsunuz. Rastgele ve olumlu olanı en çok pekiştiricidir (sadece Las Vegas'a sorun). Olumsuz giderseniz, takviyenizle tutarlı olmalısınız. Bu alınamaz bir acı. Bilgeliği yayarken pozitif olun ve bu konuda geçici olabilirsiniz.

Nereden geldiğini biliyorum çünkü oradaydım. Kontrol sende ve şimdi gitti. Geri istiyorsun. Peki, üstesinden gel. Şimdi bir ekibin var. Kontrol edilmeleri gerekmez. İhtiyaç duydukları şey liderlik. İhtiyacın olan şey kontrol değil. Etkisi. Daha iyi çalışıyor ve çok daha az iş. Bu usta ve rahatla. Bu eğlenceli olmalı.

Doğru yapın ve tatile gidebilirsiniz ve bu hala işe yarayacak. Nasıl? Sadece lider olmakla değil, diğerlerini de lider olarak almak. Bir kez vizyonunuzu takıma soktuğunuzda, sadece ne yaptığınızı taklit ederek gittiğinizde çalışabilirler. Yenilikleri akıl hocasına getirin ve onları diğerlerini de hızlandırmaya ve etkilemeye teşvik edin.

Zor olduğunu biliyorum. Bu mesleğe girmedik çünkü insanlarla ilişkilerde iyiyiz. Kod ile en iyi şekilde iletişim kurarız. Bu iyi. Sadece çabuk ve sık yap. Bana neden senin daha iyi olduğunu göster. Dinle olmadığını söylersem, dinle. Hala düşünürken bunu yap. Kodlamayı seviyorum. Gezegende bunun hakkında konuşabileceğim çok az insan var. Onlardan biri ol.


4
"Kod takip" derken ne demek istediğin çok açık ... Ama google bana dünyanın dört bir yanından suç yasası dışında hiçbir şey vermiyor.
Jeremy

3
Listeye "kodlama standartları" ekle
BЈовић

5
Terimi tanıtıyor gibiyim çünkü 'kod izleme' etimolojisini vereceğim. Soyut bir fabrika kullanan zaman kodlarını kontrol etmek için bir kod yazmıştım. Bir eş geliştirici birleşmeye çalışıyordu (giriş kodunu kontrol ediyor) ve kontrol edildiğinden beri kod değişiklikleri arasında dolaşıyordu. Fabrikamı fark etti ve merak ettiğini düşündü. Bunu neden yaptığımdan emin değildi. Bu yüzden yürüdü ve bana sordu. Kafam karıştığında, "Ah, sadece seni izleyen koduydum" dedi. Facebook sözlüğümüzü değiştiriyor.
candied_orange

1
Doğru! “ Sizinkini görmeme yardım ederek kendi vizyonumu benimseme konusunda beni güçlendiriyoruz ve mükemmel olacağız. ” Şiir, kod ve felsefenin karıştığını seviyorum!
Pedro Lobito

@candied_orange: Ben "kod takip etme" olayından biraz şaşırdım. Az önce onu mu okudun? Cevabınız bağlamında, sizi takip eden kod gibi görünüyor.
Robert Harvey,

23

İlk olarak, insanların yazmadıkları şeyleri sürdürmelerini sağlayın. Bir geliştiricinin, alışkın oldukları çerçeveleri ve teknikleri kullanma alışkanlıklarına girmesi çok kolaydır. Çerçeveler ve metodolojiler arasında geçiş yapmak zorluyor. Birisi kodun kendi köşesinin dışına çıkmaya zorlanırsa ve bunu sık sık tecrübe ederse, bazı şeylerde standardize etmek isteyenlere yol açabilecek bazı şikayetler ve umarım üretken tartışmalara neden olur.

Ardından istekleri çekin ve incelemeleri kodlayın. İlk önce bir kod incelemesi yapmadan kodun ana dallarınızla birleştirilmesine asla izin vermeyin. Herkes yapabilir. Yine, birileri yaptıklarından farklı bir şey gördüğünde, daha iyi bir çözüme ulaşmak için tartışmayı ve ekip çalışmasını teşvik edebilir. Aynı zamanda herkesi (temelde) umursayacakları ve içine giren kodun durumunu umursayan kod üssünün bir bekçisidir.

Son olarak tasarım tartışmaları yapın. Resmi veya gayri resmi olabilirler, ancak onlara sahip olabilirler. Katılmak isteyenler bunu yapsın. Hangi çerçeveleri kullanmak istediğinizi, enums ve vs'lerin artılarını ve eksilerini, vs. tartışın. Daha sonra bir karara varın ve bir yerde belgeleyin (standartlar belgesi gibi). O zaman sorun ortaya çıktığında işaret etmek için bir şey var. Ayrıca, standart bir kararı tekrar gözden geçirmekten korkmayın. Teknoloji değişiyor (hızlı bir şekilde) ve böylece bir ekip olarak ve bir şirket olarak ihtiyaçlarınız da olabilir.

Gördüğünüzü görmelerine ve kodun kalitesinde bir pay varmış gibi hissetmelerine yardımcı olun. Daha sonra, fikir farklılıkları ortaya çıktığında, bir standart bulma yolundaki tartışmaları nazikçe yapın.


Bu yöntemle ilgili güzel şey, yöneticinin sadece tercihlerini empoze etmemesi değil, ekibe karar verme şansı veriyor ve onlara uygulama yapma yetkisi veriyor.
Robin Bennett

6

Birisi kodu ana şubeye / bagajda birleştirmek istediğinde kod incelemeleri yapın ve kodu gözden geçirirken insanları bu standartlara uydurun.

Ve sadece kod incelemelerini yapman gerektiğini kastetmiyorum. Herkes başkalarının kodunu incelemelidir. Bu, sistem hakkında bilgiyi ekip çapında yayar, ancak Carol'ın Bob'un kodunu incelediği ve "Orada bir tamsayı kullandığını görüyorum. Her zaman bir enum kullanıyorum" dediği bir durum yaratır. Gördüğünüz tutarsızlıkları keşfederler ve umursadıklarına göre herkesin aynı sayfada olması gerektiğini fark ederler.

Kabul edilen, üzerinde anlaşılan standartlar ortaya çıkacak, bu noktada onları belgeliyor ve insanların onları takip etmesini sağlıyorsunuz. Bu, "DB için numaralandırmalar ..." gibi şeyleri de içerecektir, vb. Hangi çerçeveleri kullanacağınızı belgelemek de olabilir.


Sanırım sorumun büyük bir kısmı bunun gibi standartlar beklemenin gerçek dışı olduğudur. Ben yaratıcılığa
engel

3
@Matthew, genelde seninle aynı fikirdeyken, bunu ters sırada yaparım. Öncelikle tasarım incelemeleri ve kılavuzlar tasarım incelemeleri sırasında / sırasında ortaya çıkar. Her şeyi mimara / ipucuya önceden yazma yükünü yüklerseniz, bu yükü müdahaleye kaydırır .
Nick Alexeev

@Deekor: Savaşlarını seçmelisin. Ayağınızı yere indirmeniz gerekeni anlayın ve bunu belgeleyin. Her şeyi
Robert Harvey

2
@Deekor, "yaratıcılığı boğmadan" standartlar ve ortak kodlama uygulamalarını uygulayabilirsiniz. Bu zaten sahte bir argüman. Ortak kodlama standartları, bakımı kolay bir yazılıma yol açar. Herkes için ücretsiz kodlama kabuslara yol açar.
Matthew

1
@Nick Alexeev, katılıyorum; düzenleyeceğim.
Matthew

1

Mümkün olduğunda, projelerinizi otomatik olarak analiz etmek ve projenin hangi standartları, araçları ve yaklaşımları kullandığını belirlemek için araçlar / komut dosyaları yazabilirsiniz. Bunu CI yapısının bir parçası olarak özel bir araç çalıştırarak yapabilirsiniz.

Çıktıları bir 'puan kartı' belgesine (örneğin, birim başına satır içeren bir google sayfası (örneğin, 'uygulama' veya proje veya api veya her neyse) yazılı çeşitli metrikler / standartlar için sütunlarla yazılmış bir araç haline getirin. Bu, insanlara hangi standartların olduğu, ne kadar iyi benimsendikleri vb. Hakkında görünürlük sağlayacaktır ve kaosa bir düzen sağlayacaktır.

Sütunları manuel olarak da güncelleyebilirsiniz, ancak güncel kalmaları için iyi şanslar: D

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.