“Kod geliştirme” nin önceliği ve ciddiyeti nasıl belirlenir?


15

Hata izleme sistemimizde "öncelik" ve "önem derecesi" alanlarımız vardır. Şiddeti "kullanıcıyı nasıl etkiler" ve önceliği "ürünü nasıl etkiler" olarak tanımlıyoruz.

Benim sorum, "kod geliştirme" görevinin önem derecesine ve önceliğe göre nasıl sınıflandırılacağı ile ilgili. İyileştirmenin herhangi bir davranışı değiştirmediğini, ancak bunu "daha iyi bir kod" haline getirdiğini varsayalım. Genel olarak uzun vadeli bir bakım iyileştirmesi bekliyoruz ancak miktarını belirlemek zor.

Öncelik ve ciddiyet için tanımlarımızı kullandığımızda, resme uzun vadeli faydalar öngörmek için biraz zorlamadığınız sürece kod iyileştirmesi her ikisi için de en düşük değerleri alır. Bu nedenle, kod geliştirmenin anlamsız bir görev olduğunu ve asla denenmemesini gerektirir.

Ancak sürekli kod geliştirmek ve refactor için ham olduğuna inanıyorum, çünkü:

  • Yazılım geliştirmenin kendisi sürekli bir öğrenme sürecidir ve kodu geliştirmeden daha iyi olamazsınız.
  • Bir ekip kodlarından gurur duymalıdır.
  • Gelecekteki bakım daha az zaman alacak ve uzun vadede tasarruf önemli olacaktır.

Yoksa bu tür görevlerin asla yaratılmaması gerektiğini mi düşünüyorsunuz ve bu tür iyileştirmeler yalnızca "istek üzerine", "bir hata ile ilişkilendirildiğinde" gerçekleştiriliyor mu? Bir hata ile ilişkilendirilmiş olsa bile, bu bir kod incelemesinde bir tartışma noktası olmayacaktır, örneğin "yapıdaki bu büyük değişikliği neden yaptınız?".

Yanıtlar:


16

Tipik olarak "kod iyileştirme" faaliyetlerini ayrı bir atanabilir görev olarak görmeyi sevmiyorum çünkü kod iyileştirmenin kendisi sizi doğrudan kullanıcı hikayelerini veya gereksinimlerini tamamlamaya yaklaştırmaz. Bu nedenle kod geliştirme görevleri her zaman asla atanmayacak kadar düşük önceliğe sahip olacaktır.

Kod geliştirmeyi sabit olarak görüyorum, her geliştiricinin klavyede yazmak kadar doğal olarak yapması gereken bir şey. Herhangi bir görev için tahminlerime dahil ediyorum. Eğer görevim uzun süredir bakılmayan bir sınıfa veya bazı kaynak kodlarına dokunmamı içeriyorsa, bazı kapıcılık çalışmalarının muhtemelen uygun olduğunu varsayacağım ve tahminimi buna göre arttıracağım.

En iyi durum senaryosu Görevi erken bitirir ve kod veya hatta tasarım üzerine geliştirmek için kalan zamanı kullanabilirim. En kötü durum senaryosu görev beklenenden çok daha uzun sürüyor, ancak arabellek olarak fazladan zamanım var.


4
+1, kod geliştirmeyi tek başına bir görev olarak görür görmez, boktan kodla sonuçlanırsınız, çünkü bu her zaman düşük önceliklidir. Kod kalitesi şirket standardına göre yeterince iyi olmadığı sürece diğer görevleri tamamladığınızı düşünmeyin. Burada kod incelemesi yapmak zorunludur.
deadalnix

1
@deadalnix Kod incelemeleri hakkında mükemmel bir nokta. Başlangıçtan itibaren yapılırsa, kod kalitesi varsayılan olarak teorik olarak korunur. Eski uygulamaları korumakla birlikte bu her zaman böyle değildir ve kod iyileştirme gittikçe ele alınmalıdır.
maple_shaft

2
Eski kodla, en iyi yol, boku kod tabanının her tarafına yaymamak için temiz bir arayüze sarmaktır. Ardından sargıyı büyük ölçüde test eder, bu yüzden ona güvenebileceğimizden eminiz ve sonunda tüm projeyi daraltmadan eski koda dokunabiliriz.
deadalnix

1
+1 Özellikle "Görevim uzun süredir bakılmayan bir sınıfa veya bazı kaynak kodlarına dokunmamı içeriyorsa" için. Yalnızca değiştirilmesi gereken kodu geliştirmelisiniz. Yakın zamanda değiştirilmesi gerekmiyorsa, rahat bırakın.
MarkJ

1
Özellikle büyük projeler ve ekipler için, kod geliştirmeyi ayrı bir görev olarak tutmak hala mantıklıdır - yeni bir özellik üzerinde çalışırken yalnızca tek bir geliştiricinin gidebileceği tek şey vardır. Genellikle ekibimin iyileştirme ve yeniden düzenleme yapması için yılda 2-3 hafta ayıracağım (pratikte, daha uzun olduğu ortaya çıkıyor, çünkü genellikle, ekibin yalnızca bir alt kümesi herhangi bir zamanda çevrimdışı olabilir)
blueberryfields

2

Kodunuzu yeniden düzenlemek istiyorsanız, görevin önceliğini tanımınıza göre ayarlayın (örneğin "ürünü nasıl etkiler"). Bazı yeniden düzenleme, ürünü çok fazla etkilemez ve bazıları da gerekli işin kapsamına bağlı olarak etkiler. Daha yüksek bir öncelik belirlemek, yeniden düzenleme tamamlandıktan sonra beklenmedik bir şey olmadığından emin olmak için daha fazla test yapılması gerektiğini gösterecektir.

Ayrıca, bu tür görevleri "Yeniden düzenleme" görevleri olarak sınıflandırmak için hata izleme sisteminize yeni bir kategori eklemek isteyebilirsiniz. Bu şekilde öncelik değerini nasıl yorumlayacağınızı bileceksiniz; yani daha yüksek öncelik, daha büyük etki anlamına gelir ve bu nedenle daha fazla test gerektirir.


2
Buna eklemek için (üstlenmeden eksikliğinden) teknik borç yapar onu korumak ve hataların tanıtır daha ihtimali zorlaşır çünkü ürünü etkiler. Ürün etkilendikten sonra kullanıcı etkilenir ... Ekibimizde, yeniden düzenleme ve süreç / araç iyileştirmeleri için kullandığımız "İyileştirme" görevlerimiz var
Atif

2

Eksik olan, mevcut kod hakkındaki varsayımlarınızı doğrulamaktır: kodu geliştirirsek daha az zaman ve önemli tasarruflar elde edilebilir. Bu kozmetik mi yoksa ciddi sorunlar mı var?

Hata ayıklama ve geliştirme tahminlerinizi kontrol edin. Daha uzun sürüyorlarsa ve önce kodu yeniden düzenlemek veya temizlemek zorunda kalmak için sürekli yorumlar varsa, bu en iyi ölçümünüz olabilir. Daha sonra kod tabanınızı şu şekilde tanımlayabilirsiniz: İyi, küçük yeniden işleme veya ciddi yeniden düzenleme gerekir.

Bütün bunlar göreceli. Faturalandırılabilir saatler için daha fazla özellik isteyen ve hemen ödemeye istekli müşteriler olduğunda bu yüksek önceliğe sahip olmak zordur.


1

İlginç soru.

Sanırım kaç satır kod ve bir değişikliğin kaç modül etkileyebileceğini tahmin etmeniz gerekir.

Belki eğer varsa, kaç tane birim testin kırılacağına bakabilirsiniz. Bu muhtemelen bir fikir edinmek için önce daldaki değişikliği denemek anlamına gelir.

Sonra bu eşleştirme seviyeleri için öncelik ve ciddiyet eşiklerine sahip olun.

Ayrıca, çok fazla testin dahil edilmesi gerekeceğini dikkate almalısınız. Değişiklik uygulamanın geniş bir yüzey alanına dokunursa, çok sayıda sistem testinin yeniden gözden geçirilmesi gerekebilir.


1

Burada iki varsayımla başlayalım.

  1. Her yeni hikaye için, kodunuzu, muhtemelen ekibinizin ortam bilgisiyle paylaşılmış olan, mümkün olan en iyi şekilde yazarsınız.
  2. Mevcut kodun işlevselliğini değiştiren bir hikayeniz olduğunda, sistem hakkındaki yeni bilginizi ve yeni hikayeyi uygulama sürecinde kodu geliştirmek için daha iyi beceriler kullanırsınız.

Bu iki varsayım göz önüne alındığında, hiçbir zaman açık bir "kod geliştirme" çabasına ihtiyaç yoktur. Sistemi yazdıkça kodunuz düzelir. Bu, kodun tamamının sürdürülebilirlik için en son ve en büyük standartlarınıza uygun olmadığı anlamına gelir, ancak "Eğer kırılmazsa düzeltmeyin." Gereksiz görünür işlevsellik eklemek kadar "altın kaplama" olarak değiştirilmesi gerekmez yeniden düzenleme kodunu düşünüyorum. Kod bir şekilde bozulursa, başarısız olan geçerli bir test yazın; hata günlüğü; ve sonra bu hatayı gidermek için refactor.


1

Çevik hareketin oylamasını çalarım:

Hatayı girin, önem derecesi ve öncelik için kaba tahminler yapın,

Ardından, günlük, haftalık veya aylık tüm yeni hataları gözden geçirin ve derecelendirmelerine oy verin. İdeal olarak bunu son kullanıcılarla yapılan bir sprint planlama toplantısında yaparsınız. O zaman bir sonraki özellikler hakkında da konuşabilir ve olumlu olabilirsiniz,

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.