Eminim şu anda yorumlarımı ve diğer yazımı gördünüz, bu yüzden cevabı gerçekten bildiğimi iddia etmeyeceğim. Sunabileceğim en iyi, başkalarından duyduğum / okuduğum şeyin bir özeti ve kendi deneyimlerimin bir kısmını karışıma eklemek.
İlk olarak, bir süre önce kendi Programcılar SE üyelerimizden biri olan Martin Blore ve IMO'ya ait bir blog ile karşılaştığımı söylemek istiyorum, TDD kendini gerçekleştirme ile ilgili bu özel yazı çok doğru. TDD, her şeyi birbirine bağlayan son, en yüksek seviyedir, ancak önceki seviyeler, özellikle de en büyüğü olmadan, açık ve okunabilir kod üretme ilke ve uygulamaları, TDD'nin çalışması imkansız değilse çok zor olacaktır.
Şirketimde, hem Agile hem de TDD bize yönetim tarafından empoze edildi ve ilk başta bunları basitçe yaptık çünkü söylendi (çevikliğin tersi). TDD'yi iki kez denedik ve otomatik testleri kullanmanın büyük bir savunucusuyken, ekibin son sürümde birlikte tokatladığı herkesi şahsen attım. Kırılgan, devasa, wazoo'yu kopyaladı / yapıştırdılar ve onları gerçekten yavaş ve öngörülemez bir şekilde çalıştıran uyku ifadeleriyle bilmiyorlardı. Ekibiniz için tavsiyem: TDD YAPMAYIN ... henüz.
Durumunuzun ne olduğunu bilmiyorum çünkü sadece 6 aydır şirkette olduğunuzu ve müteahhit olduğunuzu söylediniz. Bu şirkette kalmak için uzun vadeli hedefleriniz mi var, yoksa sözleşme bitecek mi? Soruyorum çünkü bir şey yapsanız bile, sonuçları görmek biraz zaman alabilir.
Ayrıca bir ekibe katıldığınızda, ekibinizin (geliştiriciler ve yönetim) önerdiğiniz herhangi bir şeyi bile dikkate alacağı yeterli derecede güvenilirlik ve saygı duymanız genellikle zaman alır. Deneyimlerime göre, birkaç yangın çıkarır ve başkalarının güvenebileceği beceri ve bilgiye sahip olduğunuzu gösterirseniz yardımcı olur. 6 ayın yeterli olup olmadığından emin değilim. Sık sık yeni, hırslı bir kişi takıma katılıp, burada dünyayı nasıl değiştirebileceklerini soran bir yazı yapardı. Üzücü gerçek şu ki yapamazlar.
Yani ekibinizin saygısını ve ilgisini aldığını varsayarsak. Şimdi ne olacak?
İlk olarak, hem yönetim hem de geliştiricilerin bir sorun olduğunu bilmeleri gerekir. Yönetim sonuçları yapılan iş açısından ölçer. Mevcut özellik ve nicelikten memnunlarsa, üzücü gerçek, dinlemeyecekleridir. Diğerlerinin de belirttiği gibi, yönetimin desteği olmadan, her türlü değişikliği uygulamak son derece zor olacaktır.
Yönetim desteği aldıktan sonra, bir sonraki adım derinlemesine kazmak ve takımın neden olduğu gibi çalışmasının temel nedenlerini belirlemektir. Bu sonraki konu, kısa bir süredir benim kişisel arayışım olan bir şey. Şimdiye kadar bu benim yolculuğumdu:
- Bir kez yönetim desteğiniz var. Bunu merkezi diktatörlüğü uygulamalar / süreçlerin çok tanıtan başlayabilirsiniz MainMa cevaben önerdi sorumu . Birçoğunu yaptık (eşli programlama hariç) ve kesinlikle faydaları görüyorsunuz. Kod incelemeleri özellikle şekillendirme, dokümantasyon üzerinde standartlaşmaya yardımcı oldu ve aynı zamanda ekip arasında bilgi / teknikler paylaşmamızı sağladı. Kod incelemeleri dikte edilmiş olsa da, ekip onları gerçekten seviyor ve teslim edilen her işlevsellik parçasını gözden geçiriyoruz.
- Genel olarak yazılan kodun hala çok eşli olduğunu, tasarımın kötü veya tamamen eksik olduğunu fark ettiniz. Kod incelemeleri bazılarını yakalar, ancak yeniden yazabileceğiniz çok şey vardır. Tasarım ilk etapta neden kötü? - Pek çok geliştirici asla iyi uygulamalarla tanışmamış ve ilk etapta resmen OOD öğretilmemiştir. Bir çok insan hangi görevi yaparsa yapsın "basitçe kodladı".
- Yönetimin desteği ile herhangi bir kodlama yapılmadan önce tasarımın tartışılması gibi daha fazla süreç sunabilirsiniz. Ama sen sadece bir insansın ve dikkatini çekmez etmez takım her zaman yaptıkları şeye geri döner. Neden?
- Daha iyi uygulamalar veya alışkanlıklar tanıtılabilir ve öğretilebilir, böylece sürekli izlemeniz gerekmez mi? - Bu bölümün o kadar kolay olmadığı ortaya çıktı.
- Diğer takım üyeleri neden yeni uygulamalar öğrenmek ve almak konusunda isteksizdirler ve modern yazılım metodolojisi literatüründe bu kadar çok şey yazıldığı zaman neden SOLID veya DRY'ye karşı bu kadar dirençlidirler? Ekibimde yaptığımız tüm olumlu değişikliklerle, 2 hafta önce 15 satırlık özdeş koda sahip 2 işlevi yeniden düzenledim ve inceleme yapan kişi kahraman, gereksiz çaba dedi, çünkü sadece kopyala / yapıştır ile yanlış bir şey yok 15 satır. Bu tür görüşlere kesinlikle katılmıyorum ancak şimdilik katılmamaya karar verdik. - Peki şimdi ne olacak? Şimdi diğer yazımın konusuna ulaştık .
- As maple_shaft ve nikie onların cevapları (pardon, işaret MainMa , sen en çok oyu var, ama sen 5 adım gerisinde böylece vardır :)), bu forumunda bir sahne "süreç" artık yardımcın olsun ve kimse ulaşmış size "düzeltmenin" ne olduğunu söyleyebilir. Bir sonraki adım, bireylere, belki bire bir, belki bir takım olarak, muhtemelen hem bir seferde hem de diğerinde yaklaşmak ve onlarla konuşmaktır. Onlara, neyin işe yarayıp neyin yaramadığını sorun. Onları yönlendiren şeyin temel nedenini tanımlamanın tek yolu şimdi onlarla bireysel olarak konuşmak ve bunu bulmaktır. Bu adımın bir parçası olarak, son zamanlarda tamamen farklı bir takım problemiyle karşılaştım, ancak sanırım Joel'in cevabı buradaçok detaylı ve anlayışlı olan bu dava için de geçerlidir. Özetle, yönetimi "kısa tasma" olarak kullanmak hemen hemen her şeye olası bir yaklaşım olsa da, insanlarla uğraştığımızı hatırlamalıyız ki motivasyonları gerçekten anlamak için saf yönetim veya teknik liderlikten daha çok psikanalize geçmeliyiz.
- Şimdi takım arkadaşlarınızla mı konuşuyorsunuz? Onlara ne soruyorsun? Bir sonraki kısımdan emin değilim çünkü burada hiç bulunmadım. İşte olası bir senaryo: S: Nasıl SOLID gelmiyor? C: Buna ihtiyacım yok. S: Yardımcı olabilir. C: Olduğu gibi yaparım. - Her nasılsa, ağzınızı terk edecek ve dinleyicinin, bir şansı yakaladığınız her şeyi verirlerse, işlerin daha iyi olabileceğini fark etmesine neden olacak bir dizi ses oluşturmanız gerekir. Burada başarısız olursanız, "süreç" ne yaparsa yapsın aslında herhangi bir değere sahip olduğuna ikna olmazlar. Öte yandan, bu noktadan geçerseniz, muhtemelen artık "sürece" ihtiyacınız olmadığını göreceksiniz.
- IMO en temelde, takım arkadaşlarınız mevcut alışkanlıkları / uygulamaları ile ilgili yanlış bir şey görmediklerini öğrenmezler. Belki de bundan sonraki adım, açıklamak, sorunları açıklamak ve açıklığa kavuşturmak için bir yol bulmaktır. Sonuçta, bize sıcak ve bulanık bir his verdiği için okunabilir kod yazmıyoruz, SOLID / DRY ilkelerini kullanmıyoruz veya belgeleri koruyoruz. Bunu yapıyoruz çünkü daha kaliteli kod üretiyor ve açıkçası bizi daha hızlı kodlıyor. Bu ölçülebilir mi? Belki de bu noktada yazılım metrikleri devreye giriyor?
- İşte çılgın bir fikir ve gerçekten işe yarayıp yaramayacağı hakkında hiçbir fikrim yok (standart bir endüstri uygulaması olabilir ya da tamamen geçersiz olabilir. Son 24 saat içinde uydurdum), ama getirmek için çok cazipim gelecek yıl başlar başlamaz masaya:
- Diğerlerinin görüşlerine karşı , tüm kaynak dosyalar için Yazar / Sahip fikrini tanıtın. Pragmatik Programcı'nın da belirttiği gibi , bunun bir kaynak koddan sorumlu olacak tek bir kişiye sahiplik ve sorumluluk duygusu vermesi. Bu, diğer kişilerin kodu değiştiremeyeceği anlamına gelmez, hepimiz bir ekip olarak çalışıyoruz, ancak günün sonunda, kodun sahibi olan kişi değişiklikleri incelemekten sorumludur.
- Tüm check-in'leri izleyen ve özellikle hata düzeltmeleri arayanları arayan bir kaynak havuz tetikleyicisi oluşturun. Her hata düzeltmesinin check-in açıklamasının hemen önünde bir referans tanımlayıcıya sahip olması için bir işlem yapın. Şimdi, değiştirilen dosyaların listesini ayrıştıracak bir komut dosyası yazın ve "Yazar" ı dosya başlığı yorum bloğundan çıkarın. Dosya başına / proje başına / yazar başına teslim edilen kusurların sayısını izleyecek bir SQL veritabanı oluşturun.
- Yeterli istatistiğiniz olduğunda, kodunuzun diğer kodlardan bazılarından daha az kusur / değişiklik içerdiğini umarsınız. Bu kullanabileceğiniz zor verilerdir. Tek bir projenin ortalama kusur oranının çok üstünde olması halinde, projeyi bir miktar teknik borcu geri ödemek için bir sonraki temizlik / yeniden düzenleme çabasına aday olarak getirin.
- Bir proje veya dosyanın ortalama hata oranının çok üzerinde olması ve bir sahibi varsa, o kişiyle bire bir görüşün. Onlara, kibarca, çatışmasız bir şekilde, bunu ele almak için neler yapabileceklerini sorun. Onlar sahibi olduklarından, onlar değişiklik sürücü, ancak yanınızda herhangi bir ve tüm yardım sunuyoruz. Umarım, sahibi kendi spagetti kodunun birçok nedenini izler ve yardım istedikleri anda, eyleme geçtiğinizde ve bazı SOLID'leri koyduğunuzda.