Kod inceleme sürecinden sonra geri bildirim nasıl verilir?


10

Şu anda ekibime yeni katılan genç geliştiricilerin kodlarından bazılarını inceliyorum, bu incelemenin çıktısını nasıl sunmam gerektiğini merak ediyorum:

  1. Kodu kendim düzeltmeli miyim?

  2. Onlara inceleme süreci hakkında geri bildirimde bulunmalı ve düzeltmelerimi talimatlarıma göre yapmalarına izin vermeli miyim? Ve eğer öyleyse, bu geri bildirimi nasıl verebilirim, belirli bir şablon belgesini doldurup onlara gönderir miyim, yoksa kod dosyalarının içindeki sorunları daha sonra kontrol edebilecekleri şekilde işaretlememe yardımcı olacak bazı yazılımlar var mı? (Visual Studio kullanıyorum).

Kod gözden geçirme yaptıktan ve düzeltmeler yapıldıktan sonra biraz zaman geçti ve geçmişte gözden geçirdiğim kodun bazı bölümleri değişti, yeniden inceleme işlemini nasıl yapabilirim? Tüm kodu tekrar kontrol etmeli miyim? Yoksa sadece değişen parçaları mı kontrol ediyorum? Ve eğer öyleyse, kodun tekrar gözden geçirilmesini önlemek için değiştirilen parçaları nasıl takip edebilirim?


Yanıtlar:


14

Kısa cevap

Kodu kendim düzeltmeli miyim?

Hayır.

Onlara inceleme süreci hakkında geri bildirimde bulunmalı ve düzeltmelerimi talimatlarıma göre yapmalarına izin vermeli miyim?

Evet. Önerilerinize göre , talimatlara göre değil . Talimatlar kulağa çok yetkili geliyor.

Ve eğer öyleyse, bu geri bildirimi nasıl verebilirim, belirli bir şablon belgesini doldurup onlara gönderir miyim, yoksa kod dosyalarının içindeki sorunları daha sonra kontrol edebilecekleri şekilde işaretlememe yardımcı olacak bazı yazılımlar var mı? (Visual Studio kullanıyorum).

Geri bildirimde bulunmak için bir araç kullanın. Visual Studio'yu kullanabilirsiniz.

Uzun cevap

Visual Studio'yu kullanıyordum ama sürekli olarak diğer geliştiricilere, "Hey, çalışmanızı gözden geçirebilmem için bana gönderebilir misiniz?" Bunu beğenmedim ve gerçekten iyi çalışmadı. Şimdi, Review Assistant'ı kullanıyorum çünkü check-in'lere bakarak bir inceleme başlatabiliyorum. İncelemem için bana iş gönderen başka bir geliştiriciye güvenmem gerekmiyor. Ayrıca, öğeleri kusur olarak işaretlememe veya yalnızca yazar tarafından bakılacak öğeleri işaretlememe yardımcı olur. Bu, ekibimiz için işe yarar, çünkü bir incelemeye başladıktan sonra, inceleme tahtasında orada kalır ve çeviride kaybolmaz. Bu, Visual Studio ile entegre edilmiştir. Bahsettiğim gibi, Visual Studio'nun yerel inceleme süreci de var, ancak sınırlamaları olduğunu ve sürecin doğal olmadığını görüyorum; bu nedenle Review Assistant'ı kullanıyorum.

Bu araç ayrıca ileri geri süreç, tartışmalar vb.

İşlem, aşağı yukarı aşağıdaki gibidir:

Bir şeyi gözden geçiriyorum, sonra yazara gönderiyorum (senin durumunda junior dev). Değişiklik yaparlar ve sonra geri gönderirler. Değişikliklere bakıyorum ve geri bildirimde bulunuyorum. Değişikliklerle iyiysem incelemeyi kapatırım. Aksi takdirde ileri geri gider. Bazen çok fazla ileri geri giderse, onların masalarına gidip bir beyaz tahta kullanacağım - bu gerçekten süreci hızlandırır.

Kod incelemeleri hassas bir alandır, bu nedenle ifade seçiminde çok dikkatli olun. Asla kimseye söylemem

Kötü ifade seçimi

Kodunuzu inceledim ve değiştirmeniz gereken bazı öğeler var.

Bunun yerine şunu söylüyorum:

Daha iyi ifadeler seçimi

Koduna baktım ve yardıma ihtiyacım var. Size gönderdiğim öğeleri inceleyebilir ve bazı sorularımı açıklığa kavuşturabilir misiniz?

Bu yazarın düşünmesini sağlar:

  1. Savunma moduna girmemek için yardıma ihtiyacım var.
  2. Bana değil, gözden geçiren gibi görünüyor. Teknik olarak konuşursak, onlardan başka bir görünüme sahip olmalarını ve bazı şeyleri değiştirmelerini istediğimden, bunlar gözden geçiren gibi.

Bu basit kelime seçimleri bana çok yardımcı oldu.

Junior Devs'i asla hafife almam. Bazı üst düzey geliştiricilerle çalıştım (10 yıldan fazla deneyim) ve kod genç bir kooperatif öğrencisinden daha kötüydü. Bu yüzden sadece kıdemli veya genç olmaları o kadar önemli değil; çalışmaları gerçekten yılların deneyiminden daha yüksek sesle konuşan şeydir.

Çoğu zaman, genç geliştiricileri teşvik etmek ve incelemelere katılmalarını sağlamak için, onlara benim için gözden geçirmeleri için bir şey göndereceğim: Anlayabilecekleri bir şey, zorlayıcı bulacakları ancak tamamen ötesinde olmayan bir şey. Aşağıdaki gibi kelime olabilir:

Lütfen benim için bazı kodları inceleyebilir misin çünkü anlayamıyorum.

Bu bana çok yardımcı oluyor. Bu açıkça çünkü ben sadece gözden geçiren biri olmadığını gösterir, ama aynı zamanda değerlendirmeleri yapmak ve onlar da sürecin bir parçası olduğunu gösterir. Tüm fikrin iyi, temiz kod üretmek ve gerekirse yardım istemek olduğunu gösterir. İnceleme süreci bir kültürdür, bu yüzden gerçekten üzerinde çalışmamız gerekir.

Şimdi bazı insanlar yukarıdakileri yaparlarsa, genç geliştiricilerin saygısını kaybedeceklerinden endişe edebilirler çünkü yapamayacağınız bir şey yaptılar. Ama bu gerçeklerden uzak: yardım istemek alçakgönüllülük gösteriyor. Ayrıca parlayabileceğiniz birçok durum var. Sonunda korkunuz buysa, benlik saygısı sorunlarınız var. Son olarak, belki de gerçekten bilmiyorum: Yani bu geliştiricilerin bazılarının başlarında taze algoritmalar var, çünkü sadece bir ay önce onları incelediler.

Neyse, geri gençler ve yorumlar. Anladıkları ve bana bir cevap gönderdiklerinde yüzlerindeki görünümü görmelisin. O zaman onlara "Tamam, değişiklikleri yapmama izin verin ve bundan memnunsanız, lütfen sorunu kapatın." Diyebilirim.

İşime bakma ve "Evet, değişiklikleriniz iyi. Sorunu kapattım."

Asla kendimi kodu düzeltmek çünkü:

  1. Yazar bundan bir şey öğrenmeyecek.
  2. Bana şöyle diyor: "Kenara çekil, nasıl yapıldığını göstereyim. Kodum sizinkinden daha iyi."
  3. Neden yapayım? Bu benim için daha çok iş.

Ancak yazara yardımcı olması için yorumlarımda fikirler ve kod parçacıkları önereceğim. Lütfen bazen yorumlarımın yazarına kodlarını anlamadığımı sorduğunu; kodlarında yanlış bir şey olmayabilir. Değişken isimlerini değiştirmek, yorum eklemek vb. Gerekebilir. Böylece, bu durumda neyi değiştireceğimi bile bilemeyeceğim; sadece yapacaklar.

İncelemeye devam ederseniz, er ya da geç, takımdaki her geliştiricinin bilgi düzeyi hakkında gerçekten iyi bir fikre sahip olacaksınız. Bunu bilmek gerçekten yararlıdır ve bundan faydalanmanız ve salıvermeniz gerekir. İşte nasıl: Bazı kodları gözden geçirmek ve iyileştirilmesi için açık alanlar görüyorsanız ve başka bir geliştiricinin de onları yakalayabileceğini biliyorum, bunun yerine gözden geçirmelerini sağlayacağım. "Hey, geliştirilebilecek birkaç alan görüyorum. Lütfen daha ayrıntılı bir şekilde inceleyebilir ve yorumlarınızı yazara gönderebilir misiniz?" Bu da harika çalışıyor çünkü şimdi birbirleriyle çalışan 2 geliştiricim var.

Bazı çalışmaları gözden geçiriyor ve tüm ekibin yararlanabileceği bir şey fark edersem, o zaman varsayımsal bir senaryo oluşturacağım ve bir toplantıda sorunu açıklayacağım. Senaryoyu açıklayarak başlayacağım ve herkese sorunu bulup bulamayacaklarını veya bir sorun görüp görmediklerini soracağım. Herkesin soru sormasını sağlayın. Sonunda daha iyi bir yaklaşım sunun. Başka birinin daha iyi bir yaklaşımı varsa, onlara teşekkür ediyorum ve takımın önünde yaklaşımlarının daha iyi olduğunu kabul ediyorum. Bu, benim “benim yolum ya da otoyol” tipi olmadığımı gösterir. Dahası, ASLA birisinin çalışmasını açmam ve bir toplantıdaki sorunları göstermeye başlamam, yazar ne kadar güzel ve zararsız olduğumdan bağımsız olarak bunu takdir etmeyecek.

Değerlendirmeler yaptığımda, sadece iyi temiz kod aramakla kalmıyor, aynı zamanda kodun ne yaptığını da görüyorum. İş gereksinimi şuysa: Bir çalışan şirkette 10 yıldan uzun süredir çalışıyorsa, onlara% 5 artış sağlayın. Aksi takdirde,% 2.5 . İlk kontrol ettiğim şey aslında bunu yapıp yapmadığıdır. Sonra bunu temiz, tutarlı ve performanslı bir şekilde yapıp yapmadığını kontrol ediyorum.

Bir inceleme yaparsam, takip ettiğinizden emin olun yoksa hiç kimse değerlendirmeleri ciddiye almaz.

Yıllar önce bir inceleme ve geliştirici yöneticisi ve KG yöneticisi olan biriyle çalışıyordum, ancak her iki yönetici de bir iş geçmişinden geldi ya da çok az geliştirme deneyimi vardı. Bunu sadece onları etkilemek için yaptı. Kimse hoşuma gitmedi ve o zaman kendime asla bu hatayı yapmayacağımı söyledim.

Yaptığı diğer şey programlama stilini seçmek ve stilinin en iyisi olduğuna ikna olmaktı ("Kungfu maymun stilinizden çok daha iyi ..."). Bu benim için başka bir dersdi: Bir problemi çözmek için her zaman 1'den fazla yol var.

Numaralandırılmış sorularınızın bazılarına cevap verin

1- Kodu kendim düzeltmeli miyim?

Hayır, lütfen yukarıda belirttiğim nedenlere bakın.

2- İnceleme süreci hakkında geri bildirimde bulunmalı ve talimatlarımı talimatlara göre düzeltmelerine izin vermeli miyim?

Evet, cümleler ve dostça ama dikkat gerektiren bir ton kullanmaya çalışın. Mümkün olduğunca açık olun. Kodla ilgili sorunun ne olduğunu, nasıl geliştirileceğini belirtin. Sadece değiştirmek istemeyin. Ancak nedenleri belirtin.

bu geri bildirimi nasıl verebilirim, belirli bir şablon belgesini doldurabilir ve onlara gönderebilir miyim, yoksa kod dosyalarındaki sorunları daha sonra kontrol edebilecekleri sorunları işaretlememe yardımcı olacak bazı yazılımlar var mı? (Visual Studio kullanıyorum).

Dediğim gibi, kullandığım aracı veya başka bir aracı kullanabilirsiniz. E-posta veya kelime belgeleri kullanmayın çünkü kaybolurlar ve izlenmesi zordur.

Kod gözden geçirme yaptıktan ve düzeltmeler yapıldıktan sonra bir süre geçti ve geçmişte gözden geçirdiğim kodun bazı bölümleri değişti, yeniden inceleme işlemini nasıl yapabilirim? tüm kodu tekrar kontrol etmeli miyim?

Çoğunlukla yaptığım deltayı kontrol etmektir (sadece değişiklikler). Ancak, hiçbir şeyin kırılmadığından ve mimariyi izlediğinden emin olmak için genel resmi göz önünde bulundurmanız gerekir.

Son düşünceler

Şahsen kelime "kod inceleme" kötü bir seçim olduğunu düşünüyorum ve nasıl başladı bilmiyorum. Çok daha iyi ve daha az yetkili bir kelime seçebilirlerdi.


Bu yalnızca değişken adları gibi küçük şeyler için işe yarar. Ancak, mimari yanlışsa, yardımcı olabilecek bir araç yoktur.Tüm şeyi atmanız ve yeniden yazmanız yeterlidir.
t3chb0t

@ t3chb0t Neden küçük şeyler? By making sense architecturally, emin veri erişim katmanı kodu yapma anlamına veri erişim katmanında içindedir UI doğrulama emin kaygılar diğer alanlara kan ağlamaz yapma Başka bir deyişle, UI vb içindedir. Mimariyi korumaya yardımcı olacak araçlar vardır; aslında VS bunu şimdi kutudan çıkarıyor . Bunu da kullanıyoruz.
CodingYoshi

Araçlar ile ilgili olarak, bence kullanmak için mükemmel geçerli bir araç, yapılması gerekenleri izlemek için zaten kullandığınız biletleme / iş takip yazılımıdır. Örneğin, Github kullanıyorsanız, tüm değişikliklerinizi bir sorunla ilişkilendirmiş olabilirsiniz ve daha sonra inceleme bu tartışma dizisinde yapılır. Jira ve Trac bu tür iki araç daha. Bu, işle ilgili tüm bilgiler için merkezi bir yer tutar ve bilet kapatılmadan önce açıkça görülebilir.
Kat

@Kat Bir biletleme aracının burada kullanılacak doğru araç olup olmadığından emin değilim. Kod inceleme araçları, değişiklikler arasındaki farkı gösterir ve sorunlar, bir biletleme sistemindeki sorunlardan farklıdır; farklı şeyler kastediyorlar. Ama yanılmış olabilirim.
CodingYoshi

3

Çok şey şirketinizdeki kod incelemelerini nasıl anladığınıza bağlıdır. Bir kod incelemesinin nadiren gerçekleşen ancak çok önemli olan oldukça resmi bir süreç olduğu şirketler vardır. Diğerlerinde, kod incelemesi, uygulanan her görevin zorunlu bir parçasıdır ve az biçimcilik ile çok sıradan ve hızlı bir şeydir. Şahsen, ikinci yaklaşımı tercih ederim, ancak bunu kullanıp kullanamayacağınız sizin kararınız olabilir veya olmayabilir.

Kod incelemeleri zaman ayırmaya değer mi? Başlıklı bir blog yazısı yazdım . ekibimin kullandığı süreci özetlemek. Sorunuzla ilgili olan paketler:

  1. Geliştiricilerin kodu düzeltmesine izin verin. Bu, yorumlarınızı daha iyi anlamalarını (veya tam olarak anlamadıklarını ve sormadıklarını fark etmelerine) izin verir ve bir görevi gerçekleştirmek, sadece onu okumaktan daha iyi bir öğrenme yoludur.
  2. Kod değerlendirmeleri için yazılım gitmek için bir yoldur. Hem açık kaynaklı hem de tescilli birçok seçenek vardır. Çoğu git ile çalışır. Ekibim BitBucket (eski adıyla Stash) kullanıyor, GitLab ve GitHub, Gerrit (ki ben şahsen hayran değilim) ve bir sürü başka var. Bu uygulamaların çoğu web tabanlıdır, bu nedenle hangi IDE'yi kullandığınız önemli değildir, ancak birçok IDE için de eklentiler vardır, bu yüzden Visual Studio için de bazılarının olduğundan eminim. Bunun gibi bir yazılım, kodu ana dalda birleştirilmeden önce incelemenize izin verir (genellikle Çekme İstekleri aracılığıyla) ve değiştirilen parçaları ve her değişikliğin etrafındaki bazı bağlam çizgilerini gösterir. Bu, kod incelemesini akıcı ve sorunsuz hale getirir.

Düzeltme-düzeltme-kontrol-düzeltme döngüsüne gelince, seçtiğiniz şey geliştiricilerin olgunluğuna ve tespit ettiğiniz sorunların ciddiyetine bağlı olmalıdır. Ekipler kod incelemelerini günlük bir işlem yaptıktan sonra, bir sınıfı yeniden adlandırma gibi basit değişikliklerin basitçe uygulanmasını bekleyebilirsiniz ve muhtemelen bunları yeniden kontrol etmenize gerek yoktur. Takım henüz kod incelemelerinde satılmadıysa veya insanlar gerçekten deneyimsizse, ne olursa olsun bu tür şeyleri kontrol etmek isteyebilirsiniz. Öte yandan, incelemeniz, genç geliştiricilerin onlara işaret ettikten sonra bile tam olarak anlayamayabileceği karmaşık bir eşzamanlılık sorununu tespit ettiyse, düzeltmeyi kontrol etmenizi ve gerçekten düzeltildiğinden emin olmadan önce onayınızı değiştirmemenizi öneririz.

Çekme istekleriyle çalışıyorsanız, yazılımı önceden belirlenmiş sayıda geliştiricinin onayına kadar bir değişikliğin birleştirilmesine izin vermeyecek şekilde kolayca ayarlayabilirsiniz. Genellikle, yalnızca yorumlarınızın son turundan bu yana eklenen değişikliklere kolayca bakmanıza olanak veren bir değişikliğin bireysel taahhütlerindeki değişiklikleri görüntüleyebilirsiniz.


1

İkinci seçenek için oy veriyorum. Değişikliklerin kendileri yapılırken gençler daha iyi bir "eğirme eğrisi" alabilirler.

Ayrıca: kodu inceleyen tek kişi olmayın.
Ekibinizin deneyimli üyelerinden bazılarının koda bakmasına ve gözden geçirenlerin bulgularını ( toplantıdan önce yaptıkları !) Yazara sundukları düzenli bir inceleme toplantısı planlamasına izin verin . Bu hem gençler hem de tecrübe ekibi üyelerinin motivasyonunu artıracaktır .


4
Harika bir nokta. Ayrıca, gençler OP kodunu ve birbirlerinin kodunu da "gözden geçirmelidir".
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.