Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- "Üretim Bandı" adlı podcastin "Üretim Bandı Tekniği" bölümünde sunucu Ender Ahmet Yurt, Craftbase şirketinin sahibi Lemi Orhan ile kod inceleme (code review) konusunu ele almaktadır.
- Video, kod inceleme süreçlerinin ne olduğu, neden yapıldığı ve nasıl uygulanması gerektiği üzerine odaklanmaktadır. Konuşmacılar, kod incelemenin sadece hata tespiti değil, daha temiz ve anlaşılır bir koda dönüştürme avantajı sunduğunu, ekip içi anlayışın artırılmasını ve kodun kalitesinin dramatik olarak artmasını vurgulamaktadır. Ayrıca, kod incelemesinin her zaman gerekli olmadığı, ekip yapısı, domain bilgisi ve iletişim dinamikleri gibi faktörlerin bu süreci nasıl etkilediği de tartışılmaktadır.
- Videoda ayrıca kod incelemesinin doğru şekilde nasıl yapılacağı, empati kurmanın önemi, iletişim kazalarının nasıl önlenmesi gerektiği ve iş görüşmelerinde code review sürecinin nasıl değerlendirildiği gibi konular da ele alınmaktadır. Konuşmacılar, kod incelemesinin hızlı, erken, anlaşılır ve minimal olması gerektiğini vurgulayarak, soru sorma, örnekler gösterme ve linkler paylaşma gibi faydalı yaklaşımları paylaşmaktadırlar.
- 00:00Üretim Bandı Tanıtımı
- Üretim Bandı sadece bir podcast değil, ürün geliştirme ve şirket yönetimi konularında aktif bir topluluk platformudur.
- Topluluğa katılmak için üretimbandı.com linkine giderek giriş yapabilir ve iki haftada bir yayınlanan bültene kaydolabilirsiniz.
- 00:52Programın Konuğu ve Konusu
- Programın konuğu Lemi Orhan, bir senesinden bu yana yazılım geliştiriyor ve son iki senedir Craftbase isimli dört ortaklı bir şirkette aktif olarak çalışmaktadır.
- Bugünkü konu kod inceleme süreçleri (code review) olup, Lemi'nin daha önce sunduğu bir podcasti ilham kaynağı olmuştur.
- 02:48Code Review Nedir?
- Code review, birisinin başka birinin ya da kendi kodunu bakarak yorumlaması anlamına gelir.
- Yazılımın ilk dönemlerinden itibaren code review tüm yazılım sektöründe dünyada çok var olan bir uygulamadır.
- Code review süreçleri zaman içerisinde evrim geçirmiştir.
- 04:27Code Review'ın Neden Yapılması Gerekiyor?
- Code review'ın en erken hata tespit yöntemlerinden biri olduğu düşünülse de, araştırmalar gösteriyor ki hata tespiti çok daha alt sıralarda karşımıza çıkan bir avantaj.
- En büyük artısı daha temiz, daha anlaşılır ve herkes tarafından anlaşılır bir koda dönüştürmesidir.
- Code review, ekip içerisindeki herkesin aynı çıtaya erişmesini sağlayarak antipaterinin yaşanmamasını ve yeni ekibe dahil olanların hızlıca adapte olabilmesini sağlar.
- 06:10Code Review'ın Sorunları ve Çözümleri
- Code review sırasında kodu anlayamadığımız ve sadece syntax ve indentation'a takılıp kalınması gibi problemler yaşanabilmektedir.
- Konteksten bağımsız code review, kodun kalitesini dramatik olarak arttırmaz, sadece best practiceleri uygulamak için ön ayak olur.
- Context hakim olarak code review yapıldığında, kodun özütü olarak kalır ve code review artılarını daha fazla sunar.
- 09:31Code Review Sürecinde Dikkat Edilmesi Gerekenler
- Kod review sürecinde sadece kodun kendisine bakarak ve isimlendirmeleri çıkararak değerlendirme yapmak, ekibe katkımızın sınırlı kalmasına neden olur.
- Kodun ne yaptığını ve tasarımsal kararların neden alındığını anlamak için, kodun yazıldığı satırların üstleri ve altları, ilişkili metotlar, klas ve modülleri de incelemek gerekir.
- Çok büyük change setlerini anlamak neredeyse mümkün olmadığı için, çeşitli code review yöntemlerinden doğru olanı seçmek önemlidir.
- 11:39Code Review Yöntemlerinin Formülize Edilmesi
- Code review süreçlerinde en büyük hata, code review'ın bir formülü olduğuna inanmaktır.
- Code review yöntemi, ekip yapısı, projeye katılım zamanı, git branching flow'u, modül dağılımı ve pair yapma gibi faktörlere göre değişmelidir.
- Ekibe yeni birisi geldiğinde veya domain'e hakim sadece bir kişi varsa, mevcut code review yöntemi etkisiz kalabilir.
- 14:07Code Review Yöntemlerinin Ekiplere Göre Değişimi
- Uzun süredir beraber çalışan, domain ve kontekste hakim ekiplerin yazılı code review tekniğine gerek yoktur.
- Ekibe sonradan katılan, domain bilgileri az olan juniorlar için code review yöntemleri değişikliğe uğrar.
- Ekip içerisinde belli başlı kişiler projeye hakimse, kodun sahipleri çoğunlukla code review yapar ve onay vermezse ilerleme olmaz.
- 15:48Dağıtık ve Sync Ekiplerde Code Review
- Dağıtık veya remote ekiplerde, iletişim kopuksa post (pull request) yöntemi kaçınılmaz olur.
- Sync çalışan ekiplerde, aynı zamanlarda online olabildikleri için yazılı haberleşmeden ziyade sözel birebir konuşarak yapılan podcastler daha verimlidir.
- Her ekip için bu yöntemler özel olarak fit edilir, her yazılımcı bir modülden sorumlu olduğunda code review gereksiz bir akış haline gelebilir.
- 18:48Code Review'un Gerekliliği
- Code review kesinlikle gerekli bir süreçtir, ancak bazı durumlarda (örneğin ekibin çok küçük olması, herkesin farklı modüllerle ilgilenmesi ve iletişim eksikliği) code review'un katkısı olmayabilir.
- Code review süreçlerini oturtmaya çalışırken, ekibinizde verimlilik artışından ziyade ciddi iletişim problemleri yaşanabilir.
- Code review ve test yazmanın, yazılımın sürdürülebilirliğini ve kalitesini korumak için belli dönemlerde yavaşlamak zorunda olduğu bir süreç olduğu belirtiliyor.
- 22:07Code Review'un Önemi ve Metaforlar
- Code review, mindfulness gibi bir süreç olarak düşünülebilir; çok hızlı kod yazmak ve düşünmek yerine, yavaşlamak ve dikkatli olmak önemlidir.
- Code review'un kültürünü anlamış işverenlerle çalışmak gerekir, çünkü bu süreç sadece mühendislerin değil, proje sahibinin de iyi anlaması gereken bir konudur.
- Code review uygulamayan ekipler "yemek yapmak ve servis etmek" odaklı olurken, uygulayan ekipler "sürekli kaliteli servis çıkarmak" odaklıdır.
- 24:27Code Review'un Uzun Vadeli Faydaları
- Code review sürecine oturtan şirketlerde uzun süreli bir hayat hikayesi vardır ve bu şirketlerin başarılı olabilmeleri için uzun süre sürdürebilmeleri gerekir.
- Code review, uygulamanın büyüyeceğini ve scale edeceğini düşünen ekipler tarafından yapılır.
- Code review, kodda gelecekteki potansiyel sorunları önceden tespit etmeyi ve refactor etmeyi sağlar.
- 25:16Kod İncelemesi ve Öğrenme Süreci
- Kod incelemesi yaparken, junior veya yeni gelen bir kişi için review yapmak öğrenme fırsatı sunar, ancak henüz bilmediği için çok fazla şey söyleyemeyebilir.
- Kod incelemesi sırasında, kodun neden değiştirildiği, testlerin olup olmadığı ve unit testlerde değişikliklerin gerekliliği gibi konuları düşünmek önemlidir.
- Zamanla, kod incelemesi yaparak kod yazma kültürünü geliştirebilir, daha temiz kod yazabilir ve best practice'leri kullanabilirsiniz.
- 26:29Kod İncelemesi Sürecinde Dikkat Edilmesi Gerekenler
- Meta programlama gibi ileri konuları kullanırken, okuyucunun anlayabileceği şekilde açıklama yapmak önemlidir.
- Kod incelemesi sırasında, "Benim kodum bu, kod konuşuyor, ben konuşmayacağım" yaklaşımı benimsenmelidir.
- Kod incelemesi sırasında zorla zorlamak yerine öğrenmeye çalışmak ve karşı tarafın hatasını aramaktan ziyade kodu sahiplenmek gerekir.
- 28:11Kod İncelemesi Sürecinde İletişim
- Kod incelemesi sırasında, "Benim kodumu sen kimsin de yorum" veya "Ben kimim ki Lem'nin kodunu yorumluyorum" gibi düşünceler yerine, iletişim kazalarının minimum olması gerekir.
- Eleştiri yaparken nazik olmak önemlidir çünkü herkes eleştiriden nefret eder ve savunma mekanizması oluşturabilir.
- Eleştiri yaparken uygun dil kullanmak gerekir, aksi takdirde daha şiddetli tepkiler alınabilir.
- 30:45Kod İncelemesi Sürecinde Empati
- Kod incelemesi sırasında, "Şunu şöyle yapmanın özel bir nedeni var mı?" gibi sorular sormak önemlidir.
- Önceki yazılımcıya saygı göstermek gerekir çünkü o da kodu yazarken bilgisi az olduğu veya deadline baskısı gibi kısıtlamalar nedeniyle mecburdu.
- "Kötü kod yok, kötü şart var" düşüncesi benimsenmelidir çünkü herkes farklı şartlarda kod yazabilir.
- 31:48Faydalı Kod İncelemesi Yorumları
- Faydalı kod incelemesi yorumları, eleştirmeden önce nedenini öğrenmek ve daha iyi olduğunu düşündüklerinde ilgili linkler, kod parçaları ve yöntemler paylaşmak şeklinde olmalıdır.
- Kod incelemesi sırasında, sadece kodun kötü olduğunu değil, nasıl daha iyi yapılabileceğini de öğrenmek önemlidir.
- Kod incelemesi yaparken, çok fazla dosya değişikliği yapmak yerine, mümkün olduğunca küçük ve anlaşılır dosyalar üzerinde çalışmak gerekir.
- 33:34Kod İncelemesi Sürecinin Özellikleri
- Kod incelemesinin faydalı olması için dört temel özelliği vardır: hızlı olması, erken yapılması, gece geç kalmaması ve anlaşılır olması.
- Kod incelemesi yaparken, minimal olması gerekir çünkü herkesin kendi işi yoğun olduğu için yarım saatten fazla vakit ayırması beklenemez.
- Kod incelemesi sürecinde, uzun süren ve bitmeyen requestler yerine, iyi bir şekilde yapmaya çalışmak ve gerekirse bırakmak gerekir.
- 34:29Code Review Süreçleri
- Code review süreçlerinde konsensus oluşturmak ve yüz yüze iletişim kurmak önemlidir.
- Ekip içinde herkesin code review yapması, test sürecini hızlandırır ve kolektif yorum toplama imkanı sağlar.
- Kod okumayı çok sevmek ve yazılımcıların çok fazla soru sorması, kod okuması ve dökümanları incelemesi gerekir.
- 36:16İş Görüşmelerinde Code Review
- İş görüşmelerinde adaylar kontrol süreçlerini sormalı ve öğrenmelidir, çünkü bu şirketlerin onları tercih etmemesinin nedeni olabilir.
- Günümüzde birçok şirket iş görüşmelerinde code review yaptırıyor, bu nedenle adayların buna hazırlıklı olması gerekiyor.
- Yurtdışına giden adaylar genellikle kendi yazdıkları kodu veya halihazırda yazılmış bir kodu karşılıklı olarak veriyorlar.
- 38:38Code Review Kültürünün Önemi
- Code review çok önemli bir konu olup, sektörün daha ileriye gidebilmesi için üzerinde herkesin kafa yorması gereken bir konudur.
- Code review sürecini anlamak için sözel olarak konuşmak kolay olsa da, canlı yayında bir kod incelemesi yapmak daha etkili olabilir.
- Code review sürecini anlamak için deneyim az olan arkadaşlara yardımcı olmak için canlı bir kod incelemesi yapılabilir.