Çekme talepleri gençler yetiştirme yeri mi?


11

Bir Çekme İsteğindeki master'ın tüm kodlarının üretime hazır olması gerektiği konseptine sahibiz. Bu mantıklı ve bence adil bir ifade.

Buradaki fikir, PR'ı oluşturduktan sonra, bunu efendiye koyacağınızı belirtiyorsunuz, ancak bazı yorumcuların sadece sizinle aynı fikirde olmasını ve kaçırdığınız her şeyi tespit etmesini istiyorsunuz.

Biz sadece insan olduğumuzdan, hata yapıyoruz ve diğer gözden geçirenlerin birim testlerin bulamadığı öğeleri bulabileceğini umuyoruz - yazım hataları, yanlış javadoclar vb.

AMA, bir Çekme Talebi geliştiricilere bir miktar yardım / eğitim sağlamamız gereken bir yer ve eğer öyleyse hangi seviyeye?

Yeni değişiklikleri her itişinizde, gözden geçirenlerin değişiklik zamanlarını gözden geçirmeleri gerekir; bu da bunların geliştirme sürelerinden sonra değişikliklerin yeniden gözden geçirilmesine neden olur.

Peki, Çekme İsteklerinde ne kadar eğitime izin verilmelidir? Bir parçamın gençlerden yaşlılara değiştiğini hissediyorum. Ancak, gençler için bile çok sayıda konuyu bulabileceğiniz bir yer olmaması gerektiğini düşünüyorum.

Geliştiricilerin "Çekme isteğim üretime hazır olmalı" hedefine ulaşmaya çalışmakla uğraşan biri var mı?

Yanıtlar:


13

Hayır. Çekme istekleri eğitim yeri değildir. Ekibinizin doğru fikri var. Bir halkla ilişkiler, "Gitmek iyi olduğunu düşünüyorum. Bir şeyi kaçırmam durumunda buna 2 göz atabilir miyim. Sonuçta insanım." Ve sanırım çırak tam olarak bunu yapıyor. Dürüst olmak gerekirse, gitmenin iyi olduğunu düşünüyorlar.

İşte aşırı bir fikir (kelime oyunu). Programı size mide ekşimesi veren çırak ile eşleştirin. Daha kıdemli bir ekip üyesi olarak, onları kaldırmak ve üretken hale getirmek sizin işiniz.


Teşekkürler @ RubberDuck. Çift programı harika bir fikir ve bunu yapıyoruz - sorta. Bunu daha fazla yapmamız gerektiğinden şüpheleniyorum. Bununla birlikte, okyanustaki "damlalarınızdan" tekrar tekrar aynı hataları yapıp yapmadığını ölçmek için bazı uygun metrikler veya araçlar, bu çift programlamaya kimin ihtiyaç duyduğunu bilmede yardımcı olacaktır. Eminim bu sorun daha büyük ekiplerle daha da kötüleşir !?
Riaan Schutte

2
Hepimizin çoğunu eşleştirmemiz gerektiğini savunuyorum . Çıraklarımızdan biri hatalarımdan birkaçından fazlasını yakaladı ve ben takımın daha üst düzeylerinden biriyim. Muhtemelen çekme istekleriyle ilgili yorum sayısını sorgulayabilirsiniz, ancak bunu tavsiye etmem. Bireyler ve Etkileşimler hakkında bir şeyler ... Cidden olsa. Bu cihazı kaldırmak sizin işiniz. Onlara Temiz Kod veya başka bir kopyasını alın.
RubberDuck

1
Her geliştiricinin bir müşteri için teklif edilen çalışma üzerinde çalıştığı bir işyerinde (kendilerini finanse eden dahili projeler yok) çift programlama o kadar kolay değildir, ancak önemli olmaya devam etmektedir! Teklif edilen işte daha üretken geliştiriciler istiyorsak, şirketin sadece çökerek ve yatırım yapmak zorunda kalabileceği bir şey gibi görünüyor.
Riaan Schutte

1
Hmm ... neden bu kadar kolay değil? Müşteri bu kadar çalışma saati ve daha da önemlisi dolarları için daha iyi bir değer elde etmiyor mu? İyi şanslar dostum. Çocuğa sakin ol.
RubberDuck

3
Bu ortak bir yanlış anlama @Andy. Gerçi bu doğru değil. Evet, karşı sezgisel, biliyorum.
RubberDuck

9

Ekibin temel tasarım ilkelerini veya standartlarını ihlal eden kod, onu çekme talebi aşamasına getiriyorsa, kesinlikle orada ele alınmalıdır. Kod incelemeleri, ekibin standartlarını ve tasarım uygulamalarını iletmek için iyi bir araç olabilir.

Ama burası en iyi yer mi? İşte söylemememin bazı nedenleri:

  1. Temel bir tasarım hatasını veya büyük ölçekli bir sorunu ele almak için birkaç kod inceleme yinelemesi gerekiyorsa, son teslim tarihleri ​​veya incelemeyle ilgili genel tükenme nedeniyle yukarıda belirtilen daha küçük sorunları göz ardı etmek için güçlü bir cazibe olacaktır. İdeal olarak, ekip bu cazibeye direnecek kadar dayanıklı olacaktır, ancak muhtemelen buna yol açacak bir durum yaratmamak en iyisidir.
  2. Çok sayıda yorum içeren bir kod incelemesi almak, yeni / işe alınan bir geliştirici için harika bir deneyim değildir. Evet, geri bildirime yanıt vermek geliştirmeleri gereken bir beceridir, ancak geliştiricilerin her zaman sevmedikleri koda dokunarak yanıt verme konusunda yetenekli olmadıkları da doğrudur.

Çift programlama ve tasarım incelemeleri, daha büyük ölçekli geri bildirimler için tercih edilen yerlerdir.

Bununla birlikte, kod incelemeleri sırasında adreslemenin "yanlış" olduğundan korkmak için kodun geçmesine izin vermek daha da kötü olurdu ve bunun yapabileceğiniz en iyisi olduğu bazı durumlar (örneğin uzak ekipler) olabilir. Bu durumda, kod incelemesindeki sorunları ele alın ve ayrıca geliştirme sürecinizdeki şu ana kadarki sorunları ele alın.

Bir çekme isteği sırasında problemi bulmak ideal olmayabilir, ancak test veya üretim probleminden kesinlikle daha iyidir.


5

Çekme istekleri, insanları eğittiğiniz tek yer olmamalı çünkü daha fazla ifade ediyorum . Ayrıca, bir çekme talebinde biraz eğitime ihtiyaç duyanlar sadece genç geliştiriciler değildir. Müteahhitler, açık kaynak katkıda bulunanlar, yerel yasalara veya standartlara aşina olmayan diğer departmanların geliştiricileri ve hatta deneyimli programcılar bile şikayetçi olduklarında zaman zaman hatırlatmalara ihtiyaç duyarlar.

Çekme talebini bir süre açık tutmanın çok az maliyeti vardır. İstediğiniz kadar çok sayıda veya istediğiniz kadar geri bildirim verin, ardından yazarlar birleştirilmeye hazır olduğunu düşündükleri sizi tekrar bilgilendirene kadar bırakın. Çekme isteği, ister tamamen hazır olsunlar ister çok çalışma gerektiriyorlarsa olsun, önerilen kod değişiklikleri hakkında iletişim kurmak için harika bir merkezi araçtır.

Bazı çekme istekleri incelemeleri bir lastik damgadan biraz daha fazla olur ve bir ekibe harici gönderimler yapmak bir ay ileri geri sürebilir. İlk tür, onu alabileceğiniz zaman güzel, ancak bu ikinci türün değerli olmadığı anlamına gelmez. İnsanların her zaman mükemmel çekme istekleri göndermelerini sağlamaya çalışmak herkes için sinir bozucu olacaktır.


Cevabınız için teşekkürler @ Karl-Bielefeldt. Biraz eğitim beklenebilir, ancak soru ne kadar uygun, hangi seviyede olduğu konusunda anlaştı. İfadeniz "... ister tamamen hazır olsunlar ister çok çalışma gerektiriyorlar." Usta bir PR'ın asla çok fazla çalışmaya ihtiyacı olmadığını söyleyebilirim. Bir çok iş, kaçırdığım şeyi tespit etmeme yardımcı olmak yerine tasarım kusurları, uygulama kusurları anlamına geliyor. Ancak katılıyorum ve deneyimledim "İnsanların her zaman mükemmel çekme istekleri göndermelerini sağlamaya çalışmak sadece herkes için sinir bozucu olacak."
Riaan Schutte

2

Her zaman iyi bir ipucunun ayırt edici özelliklerinden birinin, her geliştirme döngüsü sırasında gerektiği gibi ek eğitim veren biri olduğunu hissettim. Benim için, bu sadece kendimi kodlamıyorum ya da kodları gözden geçirmiyorum, aynı zamanda daha genç geliştiricilerle birlikte oturduğum, üzerine bastığım kara mayınlarından kaçınmalarına yardımcı olmak için onlarla programlamayı eşleştiriyorum.

Temel olarak, birincil hedefimizin eğitim olduğu konusunda hiçbir yanılsamam yok - değil. İster kıdemli, ister potansiyel müşteri, ister küçük bir geliştirici olun, hedef sizin düzenlemeniz değildir. Amaç her zaman müşteriye kalite kodu sunmaktır. Tercihen zamanında, bütçede, istediklerini yapmak. Bununla birlikte, tüm işleri kendim yapmamın imkansız olduğunu biliyorum, bu yüzden ekibin başarılı olmasına yardımcı olmak için bana bir ipucu olarak görev yaptım. Ve bu, doğada ortaya çıktıklarında eğitim fırsatlarını tanımak anlamına gelir.

Bu nedenle, çekme taleplerinin gençleri eğitmek için yer olup olmadığı hakkındaki sorunuzda, bunlar sırasında öğrenilebilir anların ortaya çıkmasının nadir olmadığını söylemeliyim. Hey, ilk birleşme çatışmanızla uğraşmanız gerekecek, gözden geçirmeden sonra bunu ele alalım. Oh bak, DAO'nuz için birim testleri eklemediniz, incelemenizi bu yeni yöntemleri kapsamak için bir şansımız olana kadar erteleyeceğiz. Neden bu finansal hesaplamada çift temel öğeleri kullanmanın BigDecimals'den daha iyi olacağını düşündünüz? Evet, bu çok nadir değil.

Yani, kesinlikle olabileceğini söylesem de, açıkça bir çekme talebinin ana amacı bu değil. Ayrıca bir çekme isteğindeki kodun üretime hazır olduğuna dair bir beklenti olduğunu düşünmüyorum. Genellikle değil.

Özellik ve sürüm dallarını gitflow stili dallanma stratejisinde kullanıyorsanız, çekme istekleriniz daha çok sürüm adaylarına benziyor. Üretime hazır değil, daha yaklaşan bir şey. Kodunuzun derlendiğini biliyorsunuz (doğru) ve kullanıcı hikayesinin amaçlarına uygun olduğunu iddia etmek için yeterli test covfefe var. Ve geliştirme ortamınızda zaten birkaç entegrasyon testi yaptığınız için, PR'nizi incelerken, değişikliklerinizi göstermeniz istenirse, gitmeye hazır harika bir demonuz var.

Nihayetinde, PR incelemeleri sırasında yardım sağlamamız gerektiğini hissediyorum, ancak bu yardım genel kodlama ile ilgili değil. Bunun yerine, önerilen kodun üretim-kalite kodunun bir çalışma tabanına dahil edilmesi için hazırlanmasıyla ilişkilidir. Halkla İlişkiler, geliştiricilere Halkla İlişkiler'e dahil ettikleri her değişiklik için bir gerekçe ve sağlam bir kavrayışa sahip olduklarını gösterme fırsatıdır. Ve o zaman bile - onları birim testler, demolar ve birçok soru ile tarttıktan sonra bile - önerilen değişikliklerin üretime hazır olacağına dair hiçbir beklentimiz yok.

Tüm bunlardan sonra kod yakın. Ama sonra KG'ye işkence etmesine izin verdik.


Cevabınız için teşekkürler @ Michael-Peacock. Söyledikleriniz ayrı bir KG departmanı olan şirketler veya bir sonraki aşamasına geçen test uzmanları için geçerli. Ancak geliştiriciler de test uzmanı olduklarında, halkla ilişkiler, geliştirmeden teste ve ustalaşmaya kadar her şeye eşlik ediyor. Bu iş akışında, PR onaylandıktan sonra kodun üretime hazır olması gerekir. Sorunun, hangi iş akışını kullandığınıza dair bir varsayımla yüklü olduğunu düşünüyorum.
Riaan Schutte

Tahsis edilmiş bir KG ekibiniz olmasa bile, iş akışınıza entegrasyon ve / veya kabul testi eklemenizi ve potansiyel yeniden işleme için kodun testlerinizde başarısız olması için zaman ayırmanızı sağlamak daha da önemlidir. Bazı geliştiricileri yükü almak için Selenyum ve Salatalık kullanarak kabul testlerinden bazılarını otomatikleştirebilirsiniz, ancak bunu test yoluyla gösterene kadar kodun üretime hazır olduğunu varsaymamak önemlidir.
Michael Peacock

Ben tamamen katılıyorum, bu yüzden neden tüm kod onunla ilişkili testleri gerektirir. Daha sonra birleştirme işleminden önce master'ı yeniden kazanırsanız, testlerin geçeceğinden ve kodun beklendiği gibi çalışması gerektiğinden emin olabilirsiniz.
Riaan Schutte

2

Katkılarından dolayı ve insanların bu konu hakkında söylediklerini anlamama yardımcı olan herkese teşekkür etmek istiyorum.

Bu, verilen geri bildirimlerden sonraki cevabım ve şimdi alınan cevaplara ve yorumlara dayanan anlayışım. Herkese teşekkürler.

özet

  • Yarasadan mükemmel çekme taleplerini beklememek veya zorlamamak, çünkü bu sadece ilgili herkes için sinir bozucu olacaktır.
  • Ancak mükemmel Çekme İstekleri için hedefimiz olmaya devam edin .
  • Expect bazı çekme taleplerinde işbirliği / yardımın miktarını. Sonuçta, bir Çekme İsteği oluşturarak temelde talep ettiğiniz şey budur.
  • Tasarım kusurları veya uygulama kusurları nedeniyle biraz fazla olursa, bu geliştiriciyle zaman geçirin ve bunları oluşturmak ve kodlarını hedefe yaklaştırmak için bazı Pair Programlama yapın . Bu, tüm üst düzey geliştiricilerin rolüdür.
  • Juniors, ara geliştiricilere göre daha fazla Pair Programlama oturumuna ihtiyaç duyacaktır. Bu nedenle çekme taleplerinin bu gereksinimi yansıtmasını bekleyin.
  • Geliştiricileri, Çekme İsteklerinde tanımlanan yeniden çalışmayı azaltmak için koda dokunmadan önce tasarım / uygulama toplantıları yapmaya teşvik edin.

1
Harika özet ve cevap. Kendinize onay işareti verirseniz hiç rahatsız olmazdım.
RubberDuck

@RubberDuck'a teşekkürler, ancak özetim herkesin soruma cevapları ve yorumları olmadan var olamazdı. Şerefe.
Riaan Schutte

0

Teknik ekipler açısından şirket kültürünüz hakkında daha fazla şey söyleyebilir misiniz? Bir geliştirici ana hatta birleştirmek istediğinde kodun üretime hazır olma fikri ile uğraşıyorsanız, geliştiricilerinize gerçekten ne söylüyorsunuz? Onlara, işleri "bittiğinde", işe yaramazsa sorun olmadığını mı söylüyorsunuz? Sistemi kırarsa sorun olmaz mı? Teknik borç ekliyorlarsa, belki de bunu haklı çıkarabilirler ve ne yaptıklarının farkındalarsa ve geri dönüp daha sonra yeniden düzenleme yapabildiklerini gösterebilirler. Ama neden tehlikeli bir şey yaptığını bilmiyorlarsa, kaç kez geçmesine izin vereceksiniz?

Küçük bir geliştiriciniz varsa, ilk birkaç çekme isteğinde sorun olacaktır. Sonunda asmak zorundalar. Sorun yaşamaya devam ettiklerini fark ederseniz, henüz hazır olmadıkları işleri ataıyor olabilirsiniz?

Ya da belki bir yedek genç kiralamanız ve çözemeyen birini bırakmanız gerekir?

Ne gördüğümü biliyor musun? Yetkin geliştirici olmayan insanlar, sadece kayırmacılık nedeniyle bir şirkette yıllarca çalışmaya devam ederler. Tabii ki çekme istekleri birden fazla inceleme gerektirir. Yalın bakışta, onlar "israf" - takımda bir sürükleme ve alt satırda bir sürükleme.

Bu yüzden kendiniz karar vermelisiniz: küçüklerinizin yetkinlik göstermesi için kaç tane çekme isteği alacak ve olmayanları bırakma cesaretiniz var mı?


Cevap verdiğiniz için teşekkürler @RibaldEddie, Geliştiricilerin birim testlerini yazmasını, manuel olarak test etmesini ve bu kodun harika olduğunu iddia edecekleri noktaya kadar kendi çalışmalarını gözden geçirmelerini bekliyoruz, ama gözden geçirmek ve umarım bu ifadeyi onaylamak için 2 gözden geçiren alacak. Herhangi bir teknik borcu kabul etmiyoruz ve çözüm lehine düzeltmelerden tamamen uzaklaşıyoruz. Dolayısıyla beklenti, kodun bu gereksinimleri karşılamasıdır.
Riaan Schutte

@Riaan İnceleyen kim?
RibaldEddie

Teknik müşterilerden gençler. Normalde bir genç / orta düzey gözden geçiren ile birlikte bir kıdemli / orta düzey gözden geçiren. (2 yorum)
Riaan Schutte

@Riaan zamanla ekibin genç üyelerinin kendilerini farklılaştırmasını beklerdim. Kimin vicdani kimin eksik olduğunu söyleyebileceksiniz. Yazılım geliştirmenin iyi yapıldığını, detay odaklı bir zihniyet için çok uygun bir etkinlik olarak görüyorum. Bazı insanlar bunu kaldıramayabilir. Onlarla ne yapacağınıza karar vermeniz gerekecek. Ancak temelde, kod gönderen geliştiricilerin birleştirilmesini beklemelisiniz, bunun amaçlandığı gibi çalıştığından ve üretime hazır olduğundan emin olmalıdır. Büyük, sofistike bir KG ekibiniz olsa bile, geliştiricilerin hala üretime hazır kod olmalıdır.
RibaldEddie
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.