Hatalar teknik borcun bir parçası mı?


44

Scrum Master'ımız hataları teknik borç olarak adlandırıyor. Haklı mı? Çevik dünyada hataların teknik borç olduğu düşünülüyor mu?


Teknik borç olup olmadıklarına karar vermek neden önemlidir? Scrum tahtanızdaki böcekleri nasıl temsil ettiğinizi ya da onları nasıl düzeltmeyi planladığınızı etkiler mi?
Bryan Oakley

@BryanOakley Bazı böcekler sizi etraflarında çalışmaya zorlayacak şekilde engelleyebilir ve daha fazla teknik borç sağlar. Bu hataların giderilmesi çok pahalı olabilir
BЈовић

4
@BryanOkley - Ben her zaman teknik borcun, uygulamayı geliştirmek için gerekli olan tasarım veya yeniden yapılanma olduğunu düşündüm, ancak zaman / bütçe kısıtlamaları nedeniyle şu anda mümkün değil. Doğru terminolojiyi kullanmanın önemli olduğunu düşünüyorum. Yanlış olabilirim veya yanlış olabilir, bu yüzden soruyu sordum.
user86834

Onu anlıyorum. Onlara teknik borç demek neden önemlidir? Onları “teknik borç” olarak sınıflandırırsanız, bu böceklere diğer böceklerden farklı davranacağınızı mı söylüyorsunuz?
Bryan Oakley

1
Çok fazla teknik borç sahibi olabilirsiniz ve tek bir hataya sahip olamazsınız. Teknik borç, iyi yazılmış ve iyi tasarlanmış kodun zıttıdır. İyi yazılmış kodun bakımı, test edilmesi ve eklenmesi kolaydır. Teknik borç gelişimi yavaşlatır, hataları izlemeyi zorlaştırır ve yeni kodun hataları getirme şansını arttırır.
Luis Perez

Yanıtlar:


35

Buradaki cevabın oldukça basit olduğunu düşünüyorum - teknik borcun kilit özelliği, seçtiğimiz bir şey olması.

Belirli hedeflere daha erken ulaşmak için bize daha sonra sorun çıkarmamızı beklediğimiz mimari, tasarım veya uygulama kararlarını vermeyi seçiyoruz.

Bir hata, kodumuzda seçmeyi seçtiğimiz bir şey değildir - bu yüzden teknik borç değil fiilen.

Elbette, keşif sonrası yapılan seçimlerle ilgili her türlü ilginç (ve muhtemelen geçerli) argümanlar yapılabilir, ancak temelde (ve özellikle de soru bağlamında) hayır, böcekler teknik borç değil - bana buzzword bingo kötüye kullanılması gibi geliyor.


Bir dipnot olarak - Teknik borcun kendi içinde hatalara yol açacağı yönündeki iddiaların, yapılan seçimlerin doğası hakkında birçok varsayıma yol açacağı iddiasına katılmıyorum. Örneğin, erken teslimat için yine de mimari açıdan ödünç veren iyi yazılmış, iyi yapılandırılmış, test edilmiş kodlara sahip olabilirsiniz. Benzer şekilde, yerleştirme işlemlerinizi otomatikleştirmeyip, hatalara yol açmayacak, ancak muhtemelen çok fazla stres ve acıya neden olacak şekilde seçebilirsiniz. Elbette eğer borç, katı (ya da her neyse) katı olmayan kodunuzu yazdıysanız, evet ... ama bu asla olmaz.


1
+1. Bence BЈовић'nin cevabı oldukça doğru, ama cevabınız gerçekten kafanın üstündeki tırnağa isabet ediyor. (Biraz terimin kullanımınız sonucunda karıştı değilim fiilen . Bunu söyleyerek olabilir sanmıyorum gerçi, hukuki bir hata olduğunu teknik borcu?)
ruakh

Dilin kullanımı çok eğlenceli ... şunu deneyin: en.wikipedia.org/wiki/De_facto - niyetim için yeterince yakın olan "tüm amaç ve amaçlar için" olarak okuyun
Murph

“Buradaki cevabın oldukça basit olduğunu düşünüyorum - teknik borcun kilit özelliği, seçtiğimiz bir şey olması.” Bu tanımı nereden aldın? Bence doğru değil. Bu teknik borcun bir kısmı, diğer kısmı örtük ve genellikle cehalet ve kötü uygulamalardan kaynaklanıyor.
gphilip

Jure du Jure. Yarın fiili. QED.
radarbob

1
Martin Fowler tarafından Teknik Borç Çeyreğine göre, hataları ve hatalı kodu "dikkatsiz yanlışlıkla" borç olarak tanımlayabilirsiniz: martinfowler.com/bliki/TechnicalDebtQuadrant.html . Bence asıl nokta, eğer bazı hassas böcekleri borç olarak işaretlerseniz, onların size ne kadara mal olduklarını ve bunu ortadan kaldırmak için gerekip gerekmediğini anlayabilirsiniz. Bu borç faiz ödemesi çok çok küçük olduğu için, olduğu gibi muhtemelen bunu tutmalı - Örneğin, bir yılda sadece bir kez değiştirilir ve bunu yeniden yazmak haftalar alacağını özensiz yazılı modüle sahip olan
shershen

20

Evet.

Teknik borç (tasarım borcu ya da kod borcu olarak da bilinir), bir kod tabanı içindeki kötü ya da gelişen yazılım mimarisi ve yazılım geliştirmenin nihai sonuçlarını ifade eden neologistik bir metafordur.

Kaynak: Wikipedia

Teknik borcu, daha iyi bir iş akışına (örneğin kodlamaya başlamadan önce mimariyi düzgün bir şekilde yapmak, TDD, vb.), Daha iyi kodlama uygulamalarına vb. Sahip olmaktan kaçınabileceğiniz bir şey olarak okuyun.

Çoğu gözden geçirme ya da daha resmi yöntemlerin kullanılmasıyla böceklerden kaçınılabilir. Her şeyden önce yapamayacağınız her şeyi yapmadan, projenin ani / kısa vadeli maliyetini düşürürsünüz, ancak teknik borcu arttırırsınız.


BЈовић'nin cevabını okuduktan sonra , düşündüğüm kadar kolay olmadığını görüyorum.

  • Örneğin, böcekler teknik borcun bir parçası mı? yalnızca bildiğiniz ancak düzeltmemeye karar verilen hataların teknik borcun bir parçası olduğunu iddia eden makale.

  • Başka bir örnek, Christopher'ın Teknik Borç Üzerine Düşünceleri, bir parçanın değil, teknik borcun bir sonucu olarak hataları nitelendiriyor . Bu, "yeni özellik uygulama maliyeti" gibi listelenen sonuçların çoğunun böcek sayısından etkilendiği söyleniyor.

  • Son olarak, ABCDE-T teknik borç modelini oluştururken , hataları altı faktörden biri olarak dahil ettim, ancak farklı sayılıyorlar. Odak böceklerin kendileri üzerinde değil, onların toplanma, önceliklendirme ve çözülme şekilleri üzerinedir. Hatalar, teknik borcun bir sonucu olarak ortaya çıkar (önceki örnekte olduğu gibi), ancak hiçbir zaman kendilerini teknik borcun bir faktörü olarak görmezler.

Bu söyleniyor, hala hataların - herhangi bir hata - teknik borcun bir parçası olduğunu cevaplamaya meyilliyim.

İlk argüman:

Jeff Atwood'un teklifini okuyarak çoğu böcek şöyle nitelendiriyor:

hızlı ve kirli tasarım seçimi nedeniyle gelecekteki gelişimimizde yapmamız gereken ekstra çaba

İş uygulamalarında hemen hemen her hata hızlı ve kirli tasarım seçiminden veya kötü uygulamalardan kaynaklanmaktadır (test eksikliği, geliştiricilerin yeterince bilmediği teknolojilerin kullanımı, iletişim eksikliği, etki alanını anlama eksikliği, vb.) Bu, "hızlı ve kirli tasarımın daha iyi tasarıma yeniden yansıtılmasıyla" ve daha iyi uygulamaları uyarlayarak işletmelerin hatalarının çoğunu çözebileceği anlamına gelir.

İkinci argüman:

Bir şirketin bir başkasına satıldığı zaman hesaba katılması gereken bir şirketin normal borcu ile bir proje başka bir şirkete satıldığında veya verildiğinde hesaba katılması gereken aynı derecede önemli olan teknik borç arasında bir paralellik varsa Başka bir ekibe, yeni ekibin yapacağı gibi böceklerin teknik borcun bir parçası olduğunu kolayca görebiliriz:

  • Yeni özelliklerde bulunmadan önce bu hatalarla başa çıkmanız gerekir (Joel Test 5. Maddesi: Yeni kod yazmadan önce hataları düzeltir misiniz?)

  • Veya teknik borcu bu şekilde koruyarak / artırarak böcekleri saklayın.


1
Şahsen bu cevabın argümanı sağlam olsa da, teknik borç olarak kusurları düşünmüyorum, ancak a) IMO teknik borcunu nasıl tanımlamamız gerçekten önemli değil ve b) bu ​​çok iyi yazılmış bir cevap. Yine de oy kullanıyorum. 1!
Bryan Oakley

13

Jeff Atwood, Teknik Borcunu Ödemek başlıklı makalesinde , teknik borcun ne olduğu konusunda oldukça güzel bir cevap veriyor:

teknik borç, hızlı ve kirli tasarım seçimi nedeniyle gelecekteki gelişimimizde yapmamız gereken ekstra çaba biçimindeki faiz ödemelerini içeriyor. Faizini ödemeye devam etmeyi seçebilir veya hızlı ve kirli tasarımı daha iyi tasarıma yeniden yerleştirerek müdürü ödeyebiliriz. Anapara ödeme maliyeti olsa da, gelecekte faiz ödemelerinin azalması ile kazanıyoruz.

Kesin konuşursak, daha fazla yazılım geliştirmeyi yavaşlatmazlarsa (bazı şeyleri değiştirmek, yeni özellikler eklemek, vb.) Teknik borçların bir parçası değildir. Bunlar yazılım hatalarıdır.

Ancak, bir hatayı düzeltmek çok pahalı olduğunda veya sizi bu konuda çalışmaya zorlar (ve daha fazla teknik borç verir), o zaman teknik borcun bir parçası olur.


1
Aslında bunu yaparlar, çünkü böcekler, böcekler olmadan gerekmeyecek yeni özellikler üzerinde daha fazla çalışmaya yol açabilir. Müşterilerin senaryolar yazdığı ya da her ne kadar buggy davranışına dayanan bir senaryo yazdığı için, bir şekilde “bir hata değil, bir özelliktir” e dönüşen bir hata nedeniyle bile daha kötü bir yönde gelişen (daha fazla teknik borç oluşturmak) gördüm.
Marjan Venema,

@MarjanVenema İyi nokta. Bunu hiç düşünmedim.
BЈовић

Bu teklifin Jeff Atwood'a ait olmadığını, Martin Fowler'ın bir görevinden alındığına dikkat edin . Jeff, blog yazısında da bu alıntılar.
Uooo

6

Bir hata teknik borç değildir. Teknik borç kaliteden yoksun, yokluğundan değil. Yazılım, ilk başta içinde böceklerle birlikte teslim edilmemelidir. Bilirsin, bütün çalışan yazılım kapsamlı bir dokümantasyon meselesi.

Teknik borcun en büyük suçluları "geçici hata düzeltmeleri" dir, testten geçmek ve hikayeyi kabul etmek için koyduklarınızı bilirsiniz. Kendine söz verdiğinizleri daha sonra yeniden değerlendireceksiniz, fakat sonra asla yapmazsınız. Bu geçici düzeltmeler, yamalar ve diğer şeyler biriktikçe, kod gereksiz yere dağılır, güncellenmesi ve test edilmesi zorlaşır ve genel olarak bir kabustur, ama yine de işi yapar.

Bu görüşü desteklemek için doğrudan kaynağa gittim, Ward Cunningham. Bununla ilgili olarak, Ward bir süre önce Capers Jones ile iyi bir röportaj yaptı, izlemeye değer.

Ward Cunningham ve Capers Jones ile Teknik Borç Tartışması

Okunmaya değer bir diğer makale Martin Fowler

Teknik Borç Üzerine Martin Fowler

Martin'in makalesinde, lütfen Ward Cunningham'ın OOPSLA92'den teknik borcunun asıl söz konusu olduğu bağlantıyı bulun:

WyCash Portföy Yönetim Sistemi

Yukarıdaki makaleden bir alıntı:

Her ne kadar olgun olmayan kod ince iş ve müşteri tamamen kabul edilebilir , fazla miktarları programcı aşırı uzmanlık ve son olarak bir katı ürüne giden, bir program unmasterable yapacaktır. İlk kez kargo yapmak borç almak gibi.

Sonunda, Teknik Borç bazı insanlar için hatalar içermeye başlamış olabilir ve sanırım bu iyi. Bunun asıl niyetinin olduğunu sanmıyorum.


"Yazılım, ilk başta içinde böceklerle birlikte teslim edilmemelidir." Tüm yazılımlar ama en basit program hata içeriyor. Bu çubuğu çok yükseğe ayarladın.
bhspencer 14

2

Açıkça konuşursak, sorunuzun cevabı Hayır.

Teknik borç, hatalara yol açabilir (ve muhtemelen de olabilir), ancak herhangi bir hatanın teknik borcun bir sonucu olduğu sonucuna varmak, iki gerçek arasında bir yorum getirdiği sonucuna varmaktadır : bir hata var ve teknik borç var (bunun varsayım olarak sonuçlanabileceğini varsayarak).

Eğer Scrum Master'ınız, hataların teknik borcun bir sonucu olduğunu 'teori olarak' belirtiyorsa, o köşeyi kesiyor. Bunu tekrarlanmaya devam eden belirli hatalar hakkında söylüyorsa, haklı olabilir - kod kalitesini buradan göremiyoruz ;-)

Ayrıca, teknik borç hakkında kendisini dinlemeyen ve dolayısıyla her böceği teknik borç olarak etiketleyen insanlar hakkında sürekli bir şikayeti olabilir, ancak şimdi spekülasyon yapıyorum.


2

Bana göre, böceklerin teknik borcun bir parçası olup olmadığını söylemeniz gerçekten önemli değil.

Asıl gerçek, mevcut böceklerin gelecekte düzeltilmesi veya çevrelerinde çalışması için yapılması gereken ilave işleri temsil etmesidir .

Teknik borç (etiket genellikle kullanıldığı gibi) ayrıca gelecekte yapılması gerekebilecek ekstra işleri de temsil eder ... bir şekilde.

Bildiğiniz (veya bilinmeyen) böceklerin teknik borç olduğunu ya da söylememesini söylemek ... gerçekten sadece bir tanım meselesidir. Hiçbir olmadığından Ve yetkili tanımı 1 "teknik borç", tüm tartışma tür anlamsız olduğunu.

Lewis Carroll'un yazdığı gibi:

“Bir kelime kullandığımda,” dedi Humpty Dumpty, oldukça kaba bir tonda, “demek istediğim tam olarak ne demek istediğim - ne daha fazla ne de az”. .

Aslında doğal dil böyle çalışıyor. Kelimeler, insanların ne anlama geldiğini düşündüğü anlamına gelir. Sözlük tanımları ve benzerleri, yalnızca kelimelerin kullanılma şeklini belgelemektedir ve bunlar mutlaka doğru belgeler değildir. Eğer Scrum Master'ınız bilinen böcekleri teknik borç olarak belirtmek isterse, "yanlış" olduğunu kim söyleyebilir?


1 - Ward Cummingham ve Caper Jones gibi insanlardan alıntı yapmak da yardımcı olmaz. En iyi ifadesi, bize (kullandıklarında) ifadesini ne zaman kullandıklarını (veya ne anlama geldiklerini) söyler. Bu cümleyi "kendi" değiller. Bu konularda şüphesiz otoriteler olsalar da, bu hala sadece onların görüşü.

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.