Kod incelemelerinde olumlu geribildirim ne kadar önemlidir?


48

Kod incelemesi sırasında kodun iyi kısımlarına ve iyi olmasının sebeplerine dikkat çekmek önemli mi? Olumlu geri bildirim, incelenen geliştirici ve incelemeye katılan diğer kişiler için yararlı olabilir.

Çevrimiçi bir araç kullanarak incelemeler yapıyoruz, bu nedenle geliştiriciler taahhüt edilmiş kodları için incelemeler açabilir ve diğerleri kodlarını belirli bir süre içinde inceleyebilir (örneğin 1 hafta). Diğerleri kod veya diğer hakemlerin yorumları hakkında yorum yapabilir.

Olumlu ve olumsuz geribildirim arasında bir denge olmalı mı?


3
Hey, geçerse, olumlu geribildirim. :)
Adrian J. Moreno

1
Büyük ölçüde, kodunun incelenmekte olan kişiye bağlı olduğunu düşünüyorum. Sadece eleştiriye cevap vermeye olumsuz tepki vereceklerse, bir denge bulmak önemlidir; Aksi takdirde, olumlu eleştiriler gereksizdir, çünkü incelemeyi geçmek olumludur. Yeni ve harika şeyler yaparlarsa bundan bahsedebilirsiniz, ancak bunu ekibinizin en iyi uygulamalarına dahil etmek de olumlu geribildirim olacaktır.
Matt

SE hem artı hem de düşük oylar içeriyor, bu yüzden olumlu geri bildirimler işleri iyi yapmak için önemli olmalı. Buradaki soru ve cevaplarınızın umabileceği en iyisi sıfır olsa nasıl olur? Bu, kadın ve erkeklerin klişeleşmiş bir farklılığıdır: erkekler için geri bildirimler "iyidir" anlamına gelir. Kadınlar için şu anlama gelir: "Söyleyecek iyi bir şey yoktu". Bu, bu alanın erkekler ve kadınlar için göreceli cazibesini açıklamada çok uzun bir yol kat edebilir.

Yanıtlar:


41

Eş Kod İncelemelerini Kullanarak Kaliteyi ve Moralinizi Arttırın
http://www.slideshare.net/SmartBear_Software/improve-quality-and-morale-using-peer-code-reviews

Herkesin Yapması Gerekenler: Kod İnceleme
http://scientopia.org/blogs/goodmath/2011/07/06/things-everyone-should-do-code-review/

Bu makalelerin her ikisi de, kod incelemesinin amaçlarından birinin, yalnızca hata bulmak değil, iyi geliştirme teknikleri hakkındaki bilgileri paylaşmak olduğunu belirtmektedir.

Yani çok önemli olduğunu söyleyebilirim. Kim bir toplantıya katılmak ve yalnızca eleştirilmek ister?


26
Ben mi! Ben mi! alaycı kenara, kodumun eleştirilmediği aslında kod incelemelerinden çok rahatsız oldum; Mükemmel şeyler yapmadığımı biliyorum ve bu yüzden eleştirilmemek, inceleme için bile zamanımı boşa harcıyormuş gibi hissediyorum. Bu yüzden eleştiriden başka hiçbir şeyin kötü olmadığı, hiçbirinin de iyi olmadığı konusunda hemfikirim.
Jimmy Hoffa

3
Jimmy Hoffa ile aynı fikirdeyim. Genel olarak (yalnızca kod incelemelerinde değil), birçok olumlu geribildirim almaya çalışan insanlarla uğraşmakta çok can sıkıcı buluyorum. Olumlu geribildirim faydalı olmalıdır: Kodun yazarının zaten bildiği şeyleri söyleyerek incelemeyi kirletmeye gerek yoktur. Şahsen, tavrı tercih ediyorum: "Harika ve zekisin ama kodunda birkaç küçük sorun var."
Arseni Mourzenko

6
@MainMa: "Güzel görünüyor" hiçbir sorun bulunmazsa benim için çalışıyor. Özellikle yararlı veya iyi yazılmış bir kod için: "Bu faydalı olabilir. Bunu bazı notlar içeren kod paylaşım arşivimize koyalım veya günlük kodlama uygulamalarımıza dahil etmeye çalışalım."
Robert Harvey,

2
Bir zamanlar kod incelemelerimizin eskisi kadar korkunç olduğu için birileri ayrıldı. O zamandan beri, ciddi problemler için, ama çoğunlukla eğitim için biraz kod eleştirisi yaparak, bir atölye çalışması olarak kod incelemelerini kullanmaya geçtik. Ayrılan adam, görüş ayrılıklarından dolayı inceleme sırasında müdürümüzle çığlık atarken. İnsanlar gözden geçirme sırasında gerçekten savunmaya girebilir, bu yüzden gerginliği azaltmak ve ara sıra egoları basmaktan başka bir neden yoksa, gözden geçirenin ilgilenmesi için anları daha kolay hale getirmek için "bu durumu değiştirmelisiniz" anlarını kolaylaştırmak için olumlu geribildirimde bulunmayı şiddetle tavsiye ederim
Brian

2
@Brian, Söylemem gerekir ki, eğer birileri küçük bir eleştiri üzerine çığlık atarsa, şirket kültüründen ve ofis moralinden tamamen uzaklaşabilirler, bence daha iyi.
Jimmy Hoffa

29

Kod incelemeleri yaparken sadece çalışan bir monologum olma eğilimindeyim, bu yüzden okuduklarımdan bir anlam çıkacağım gibi çok şey olacak "Tamam, ne yaptığını görüyorum .. Güzel. Bu, tamam .. ve bu parça her ikisine de bağlı. ”

Bu şekilde "bu kadar harika!" Değil, kesinlikle önemsiz sıkıcı bir kod olabilir, ama aslında başkasını duymak, ayrıştırıp yazdığın şeyin kendisinde olumlu bir geri bildirim şekli olduğunu kavradığını gösterir. geri bildirim "Bu kod mantıklı" olarak, anlamadığım kısımlara girdiğimde açıklama isterim ve "Ah, anladım" diye bir şey anlamadığımda.

Kolay anlaşılma transferinin başka bir mühendis için övgü olduğunu düşünüyorum, çünkü hepimiz kodumuzun başkaları tarafından anlaşılmasını istiyoruz, bu bir tür gizli onaylama şekli veriyor.

Bununla birlikte, kodun iyi veya pozitif özelliklere sahip kısımlarını görürseniz (sıkıcı önemsiz kod bile asgari biçimse iyi olabilir) Kesinlikle bu özellikleri belirtme eğilimindeyim, yine "Vay" olarak nitelendirmiyorum harika!" "Bunun minimal bir uygulama olduğunu görüyorum" ya da "Tamam, bu karmaşık algoritmanın çok fazla yorumu var" dır, kodun özniteliklerine odaklanın.

Mühendisin bir kaide üzerinde durduğunu ya da tutulduğunu hissetmemek için bir kod incelemesinde kodlamak için "iyilik" veya "kötülük" olarak tanımladığınız zaman, bir şeyin iyi ya da kötü olduğunu söylemeyin, bunun yerine neden ve sonuçtan bahsedin onların kodu.

"Tamam, bu kısım mantıklı geliyor, ah burada sihirli bir sayı var, bu değerin anlamı bir sonraki mühendis tarafından buna dokunacak kadar iyi anlaşılmayabilir"

"Burada bir DI konteyneri olduğunu görüyorum tamam, bu yüzden o depoyla bağlantınızı koparacaksınız"

"Ah burada statik bir sözlük var, eğer birden fazla konu bu sözlüğe dokunuyorsa bazı yarış koşullarında karşılaşabiliriz"

Dikkat, hiçbir şeyin iyi ya da kötü olduğunu söylemiyorum, ancak mühendisin değiştirmesi gerekip gerekmediği, kodu gözden geçirilen mühendis tarafından anlaşılacak. Açıkçası, kod incelemesini bir yay veya nay ile sonlandırmanız gerekiyor, ancak bu ifadeleri bunun içinde biriktirmek, nay'in yumuşatmasına neden olacak, çünkü "açıklamak için neden-sonuç ifadeleri şeklinde açıkladım" Bu sihirli sayılar bunu kontrol etmeden önce sabitlendi ".


4
"Basit bir anlama transferi başka bir mühendis için övgüdür ... ... bir tür gizli doğrulama verir"
Roy Tinker

Bunu iki kez + 1'lemek istiyorum. Biri @RoyTinker ile aynı sebepten, diğeri de "Bir şeylerin iyi ya da kötü olduğunu söyleme, bunun yerine neden-sonuçtan bahset". Her ikisi de çok iyi puan!
Ben Lee

7

Bir kod incelemesinde gerçekten sevdiğim ve "yeterince iyi" kodun üstünde ve ötesinde bir şey görseydim, olumlu geribildirim verirdim.

Genel olarak, sanırım birileri size aslında "Vay, bu gerçekten çok güzel!" Demesini sağlayan bir parça kod yazarsa. o zaman evet, olumlu geri bildirimler önemlidir - yazarın yaptıklarından başkaları tarafından yararlanıldığını ve bunu tekrar yapmaya çalışmaları gerektiğini bilinir. Ancak, sadece yönergeleri ve standart uygulamaları takip etmekten daha fazlası olmalı. Övgü vermek, çünkü birileri güzel girintili ya da kazan plaka yorumları ekledi, barı oldukça düşük tutabilir.


6

Bu genel bir yönetim ve insan etkileşimi sorusu olduğu kadar bir programlama sorusu değildir. Kod incelemelerinde olumlu geri bildirim, her türlü incelemede olumlu geri bildirim kadar önemlidir.

Bunun gerekli olup olmadığı (ve ne kadar gerekli olduğu), konuştuğunuz kişinin eğiliminin ve duygusal yapısının bir işlevidir. Bazı insanlar övgü ile birleştiğinde düzeltmeye çok daha etkili cevap verir. Diğerleri düzeltme ile teslim edildiğinde övgüyü samimiyetsiz görüyorlar.

Genel formüle bazen "Geri bildirim Sandviçi" denir: Önce iyi şeyler, ikinci kötü şeyler, son iyi şeyler. Fikir, genel tonu pozitif tutarken aynı zamanda negatif geri beslemenin alındığından emin olmaktır. Bu, gözden geçirmeyi beklerken stresi önlemeye yardımcı olabilir ve daha sonra kendini emen yavruları önlemeye yardımcı olabilir. Her ikisi de verimlilik ve kalite açısından çok önemlidir. Bu sadece dokunaklı-duygusal duygusal domuz otu değil; Bu insan davranışı 101.

Yine birlikte çalıştığınız kişiyi tanımanız ve ne yanıt verdiğini anlamanız gerekir. İnsanlarla çalışmak, yönetimin neyle ilgili olduğunu ve iyi yöneticiler insanların nasıl tepki vereceğini biliyor.


4

Olumlu geribildirimin çok önemli olduğunu düşünüyorum ve esas olarak kişisel, realpolitik bir dinamikten geliyor. Hepimiz saatlerce, günler, haftalar, aylar için oturup kod yazıyoruz ve çoğumuz yaptığımız şeyle gurur duyuyoruz. Kod incelemeleri bunu göstermek için bir şans.

Bir kod incelemesine giderseniz ve ümit edebileceğiniz en iyi sonuç "yorum yok" (yani, olumlu geribildirim dengesi yoktur) ise, toplantı kolayca "İnsanların Ne Kadar Kötü Düşündüğünüzü Bulundığını Bulun" görünümünde açıklanabilir. Sonuç olarak, geliştiriciler rahatsız edici kod incelemeleriyle rahatsız olmaya başlayacak ve hatta korkutucu kod incelemeleri yapmaya başlayacak ve bu açıkça takıma zarar veriyor. Geliştiriciler, kodlarını gözden geçirmeyi veya öğrenilmiş çaresizliği geliştirmeyi "unutur" ve sürekli eleştirmenlerine, bu toplantılarda patlatılmamak için her küçük şey hakkında ne yapmaları gerektiğini sorarlar.

Teorik olarak, kötüyü düzeltmek ve herkesten kapıda duygu bırakmalarını istemek mantıklıdır, ancak bu iyi bir şeydir, ancak rep geliştiricilerin kişilerarası tonda sağır olmalarından sorumlu olan davranışları tam olarak budur. Teoriler bir yana, biz insanlarız ve insanlar zaman zaman arkalarına, hatta nominal olanlara sırtını takmayı severiz. Bu önemli.


Bu bana, çözülecek sorunlara odaklanmak yerine, halihazırda neyin işe yaradığını geliştirmek ve genişletmek isteyen “Takdir Edici Sorgulama” kavramını hatırlatıyor.

3

Yan yana veya ekip incelemeleri yapıyorsanız daha önemlidir. Yazılı bir incelemede, hiçbir haber iyi bir haber değildir. Amaç kodu üretime sokmaktır. Bu senin kodun olduğunda, kendin hakkında iyi hissetmelisin.

Kod gözden geçirmesi, ekibin danışmanlık ve yönetimine yardımcı olmak için bir bilgi kaynağı olarak kullanılmalıdır. Kod inceleme veritabanını karıştırmadan olumlu geribildirim vermek için birçok fırsat vardır. Diğerleriyle paylaşmak için örnekler çıkarılabilir.

Geliştiriciyi kodlarından başka incelemek için çok daha fazlası var. Kod kaçırma kodunun gözden geçirilmesi, bir uygulamanın kapının dışına çıkması için karşı üretken olabilir. Geliştiriciye kod incelemeleri dışında yardımcı olmak için belirli bir zaman belirleyin, ancak bu kod inceleme geri bildirimlerini hariç tutmanız gerektiği anlamına gelmez.


2

Kod hakkında olumlu geri bildirimler sağlamanın size geri tepebileceğini düşünebilmemin tek yolu, "backhand iltifattan" kaçınmak konusunda dikkatli olmamanızdır. Çoğu insan buna aşinadır ... "Harika iş, ama ..." gibi ifadelerle ifade edilir.

Toplantıya herkes bunun programcının kişisel bir incelemesi olmadığı, tüm sistemin kalitesi için kodlama uygulamasını geliştirme çabası olduğu söylenirse, tüm geri bildirimler "iyi" geri bildirimdir. Kodlama uygulamasını iyileştirmenin yollarını vurgulayan geri bildirim, bir sorunu ele almak için kullanışlı yeni bir yöntemi vurgulayan geri bildirim kadar önemlidir.

En azından, eğer bir kişi bu uzunluğa ulaşmazsa, gözden geçirme sürecinde “iyi geri bildirim, kötü geri bildirim, iyi geri bildirim, kötü geri bildirim” döngüsü yapma çabasının yalnızca aynı backhand iltifat duygusu. İyi geri bildirimlere zorlamaya çalışmayın, iyi çabayı güçlendirmeye çalışmayın ve bilgi birikimine boğun.

Yıllar boyunca en çok öğrendiğim ifadeler:

  • “Bu ilginç bir yaklaşım. [Başka bir kullanım senaryosuna] uymamız gerekirse ne olur?”
  • “İyi deneme! Bunu yapmak için zaten bir yöntemimiz olduğunu biliyor muydunuz? Belki de hangi yaklaşımın daha verimli olduğunu görmek için bazı kıyaslamalar yapmalıyız.”

2

Kod incelemelerinde en çok sevdiğim iş akışı şuydu:

  1. Dev, e-posta listesine / çevrimiçi aracına düzeltme eki gönderir.
  2. Bakımı gereken herkes yamaya bakar, iyileştirmeler önerir.
  3. Dev # 1 e dönüyor
  4. İyileşme gerekmiyorsa, insanlar "İyi iş, lütfen taahhüt et" der. <- POZİTİF GERİ BİLDİRİM. Kabul edilen tüm kodlar iyidir. İnsanları bir şeyleri değiştirmeni söylemek için ne kadar az şey yapsa, o kadar iyi yapıyorsun.
  5. Dev, bir sonraki maddeye geçer, taahhüt eder.

Genelde olan şey, yeni geliştiricilerin kod tabanına aşina olduklarından daha fazla 'düzeltici' geri bildirim alacağıdır.

Bu yaklaşımın faydaları:

  1. Herkes herkesin ne yaptığını bilir. Tekelleşme ya da gizemli taahhütler hakkında bilgi yoktur.
  2. Herkes başkalarının geri bildirimlerini öğrenir. Bu önemli. Eğer eşleşme sırasında yüz yüze görüşmede sadece 2 kişi arasında geri bildirim olursa, odanın diğer tarafındaki birileri posta listesinde olduğu gibi fayda sağlamamaktadır.
  3. Diğer aygıtlar genellikle bazı hataları sürüm kontrolünde bulunmadan önce tespit edebilir.

Yani, temelde, hiçbir geri bildirim almayı ummuyorsunuz. Neden işe gitmiyorsun? Evde görünmez olabilirsin.

1

Buna kesinlikle katılıyorum. İyi Geliştirme Teknikleri ile harika ama anlaşılmaz ölümlüler kodu yazabilen Ninja Kodlayıcıları arasındaki fark nedir? Yazılım Geliştirme artık (IMO), yetenek ve kurnazlığın sürdürülebilirlik ve anlaşılma kolaylığı lehine çevrildiği bir En Düşük Ortak Payda disiplini. Sadece çok riskli.

Bir daha gözden geçirme sırasında 'Oh, bu harika' gitmeme neden olacak bir kod gördüm. Ancak böyle bir kodla karşılaşırsam Kabul Edilemez Cool kampına gireceğini varsayabilirim.

Ayrıca çok fazla çaba sarf etmeden ve "Bana güvenin işe yarıyor!" Diye bir sorun çıkaran olumlu bir geri bildirim almayan insanlarla da sorunlarınız olabilir.

Kod incelemeleri ekip arasında kod kalitesi sorumluluğunu yaymak için vardır, yani daha sonra ciddi bir sorun ortaya çıkarsa bireysel bir geliştirici sorumlu tutulamaz. Sorunları bulmak için kullanın, bakımını yapmak zorunda kalmazsanız, garip şeylerin orijinal geliştiricisinden açıklamalar almak için kullanın. Şahsen, olumsuz geribildirim almakla daha çok ilgileniyorum. Müşteriler kodunuzun serinliğini umursamazlar, sadece istediklerini yaparlar.

Arka koltukları bara bırak.


1
"Müşteriler kodunuzun serinliğini umursamıyor, sadece istediklerini yapıyorlar." Müşteriler ayrıca kod okunabilirliğini de umursamıyor. Onlar belki bu bir hata düzeltmek bir özellik eklemek veya bazı davranışını değiştirmek için ne kadar sürdüğünü önemsemez, ancak onlar kesinlikle kendi başına kod okunabilirliği umurumda değil.
CVn

1

Benim için önemliydi. Olumluluk uğruna kabartmak yorumlar veya pozitiflik istemiyorum. Yazdığım tüm kodlar berbatsa, nedenini söyle, düzeltelim ve öğrenelim. Ama doğru bir şey yaparsam, bir süre ve bir süre duymak güzel. Yaptığım her şey için "doğru" pozitif pekiştirmeye ihtiyacım yok, ama "X, Y ve Z'yi iyileştirelim, ama gerisi iyi görünüyor" olsa bile bu önemli.


0

Dürüst geribildirim kadar önemli değil. Büyük bir finans şirketi için çalışıyorum ve müşterilerimiz programcının çok çalışıp çalışmamasını veya iyi bir adam olup olmadığını ya da genellikle iyi kod yazmasını umursamıyor! Çalışan bir yazılıma ihtiyaç duyarlar.


Tecrübelerim, çok çalışan programcıların 'iyi adamlar' olduğu ve destekleyici bir ekiple mutlu olanların işe yarayan bir yazılım yazma eğiliminde olduğu.
c_maker

Tavuk ve yumurta sanırım. Ancak soru kod incelemesiyle ilgiliydi ... ki bence sadece egoya çarpma zamanı
gelmedi

Kod gözden geçirme, yazılımın kullanıcı tarafından görülebilir kısımlarının teknik özelliklere göre çalışıp çalışmadığını belirleme zamanı değildir.
CVn

0

Tamamen nesnel olmanın önemli olduğunu düşünüyorum. Olumlu yorumlar yaparak morali artırmaya çalışmak aklıma zaman kaybı.

Bu, kod incelemelerinin aşırı derecede kritik olduğu anlamına gelebilir - ancak önemli olan bu değil. Kendimizi de eleştirmeliyiz. Yazdığım kodun muhtemelen tamamıyla çöp olduğu ve kesinlikle geliştirilebileceği varsayımının kodumu ve beceri seviyemi geliştirmek için beni yönlendirdiğini düşünüyorum.

Yorum alamazsanız, iyi bir iş çıkardığınızı düşünebilirsiniz.


Belki de bu yüzden çoğu programcı erkektir.

-1

Mantra basittir: Kalite Kodunu istemek için (gerçekte daha az olan) o zaman uygun inceleme yöntemleri uygulanmalıdır. Bunu söyledikten sonra, olumlu geri bildirimler geliştiricinin / programcının düşünmesine ve fikir / çözüm / düzeltmeler bulmasına yardımcı olur. Çok sert olmayın, ama tam anlamıyla kesin olun. Soru-Yanıt Yöneticileri, takımı (veya bir üyeyi) doğru yöne yönlendirmesi için iyi yöntem ve uygulamaların farkında olmalıdır. Bu da kaliteyle sonuçlanır. Dönemi.


-3

Kod bir yarışma için olduğunda veya bir iş görüşmesi için gönderildiğinde (başka bir deyişle, yazılan ve yeniden yazılamayan kod), o zaman olumlu yorumlar bir zorunluluktur. Aslında, olumlu geri bildirimlerin (mümkünse!) Olduğu kadar olumsuz olduğundan da emin olmalısınız. Bu şekilde, kodlayıcı, güçlü ve zayıf yönlerinin nerede olduğunu bilir ve telafi edebilir.

Ancak, kodun yeniden yazılabileceği bir işyeri ortamında konuşuyorsunuz. Bu durumda, sisteminizden uzaklaşmaya çalışıyorsunuz. Yani, bu durumda, yalnızca olumsuz böceklerin değeri yoktur.

Bundan rahatsızlık duyuyorsanız, herkesin hem iyi kodu hem de kötü kodu tartışabileceği haftalık bir kod inceleme toplantısı yapın.

EDIT: Söyleyeyim ki, bir şey sizi yeterince etkiliyorsa, şahsen övgülerinizi ifade etmekten alıkoyacak hiçbir şey yoktur. Ancak, izleyici yalnızca üretim kodu incelemesi için görünüyor.


6
“Öyleyse, bu durumda, yalnızca olumsuz böceklerin değeri yoktur.” - Buna katılıyorum. Birisi bir hatayı düzeltmek / bir özelliği uygulamak için harika bir yol bulursa, kesinlikle değersiz değildir. Ve motivasyonu yüksek tutmak önemlidir. Yalnızca başarısızlığı vurgularsanız, sorunlarınız olur.
Mat

Benim açımdan kötü kelime seçimi. İyi şeyler değersiz olmasa da (zamanımda yeterince cüruf yazmış olmakla birlikte), böcekler büyük olasılıkla izleyicinin ne için kurulduğunu gösteriyor. OP, isterse olumlu yorumlar bırakabilir. Ancak, şahsen, izleyicinin tıkanmasını önlediğinden, yüz yüze konuşmalar için bunu bırakacağım. Ayrıca çok kızgınım yorum yapamam. :)
KBKarma

1
@KBKarma - Özgün cevabınızın olabileceği gibi ifade edilmediğini düşünüyorsanız, lütfen geri dönün ve düşüncelerinizi doğru şekilde yansıtmak için cevabınızı düzenleyin. Cevabınızın altındaki düzenleme düğmesine bakın.
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.