Teknik Borçlar Nasıl Değerlendirilir, Yönetilir ve Önlenir

Yayınlanan: 2020-05-26

Teknik borç, kulağa finansla ilgili bir el kitabından kaldırılmış bir şey gibi geliyorsa, bunun nedeni terimin finansla ilgili olmasıdır. Ancak, gerçek anlamda teknik borç programlama ile ilgilidir. Bir yazılım projesinin geliştirilmesi sırasında, belirli gerekli adımların atlanması veya son teslim tarihini karşılamak için tamamen atılması fikridir.

Mükemmel uygulamayı veya yazılımı geliştirmek için geliştiriciler genellikle zamana bağlı kalırlar - tıpkı herhangi bir rastgele görevi yerine getiren herhangi bir rastgele kişi gibi. Bu nedenle, genellikle mükemmel bir ürünü mükemmel kodla teslim etmek ve zamanı en üst düzeye çıkarmak arasında bir tür ödün vermek mantıklıdır.

O zaman soru şu: Bu takasların bir sınırı var mı? Bu takastan kaynaklanabilecek doğal zararlar var mı? Son olarak, geliştirici uzun vadede gerçekten daha iyi durumda mı? Teknik borçlarla ilgili bu yazıda tüm bu soruları cevaplamaya çalışacağım.

Teknik Borç Nedir?

What Is Technical Debt

Teknik borcu tanımlarken, ilk etapta terimi oluşturmuş olan adama atıfta bulunmamız gerekecek: Ward Cunningham. Cunningham'a göre, teknik borç, kısa bir süre içinde programlanmasından kaynaklanan açığı kapatmak için bir kod programlamaya gitmesi gereken ekstra gelişimsel çalışmayı ifade eder.

Daha görsel hale getirmek için, dağınık bir odayı temizlemekle görevlendirildiğinizi ve bir derse geç kaldığınızı hayal edin. Talimatı uyguladığınızdan ve sınıfınıza zamanında gittiğinizden emin olmak için hızlı bir temizlik yaparsınız, enkazın çoğunu kanepenin altına süpürürsünüz. Bunun sonucu, sonunda karmaşayı çözmek için zaman ayırmanız gerekecek. Yazılım geliştirme için, gerekli adımları atladığınızda ve 'çok temiz olmayan' kodlarla daha kolay bir yol izlediğinizde, ileride kodu temizlemek zorlaşacaktır. Yazılım projesi dominolarında karşılaşılan birden fazla aşama vardır ve mevcut bir sorunu ne kadar uzun süre görmezden gelirseniz, çözülmesi o kadar uzun sürer.

Teknik Borç Türleri

Teknik borçlar, aşağıdakiler de dahil olmak üzere farklı türlerdedir:

Planlanan Teknik Borçlar

Bu, kuruluşların kasıtlı olarak teknik borçlara girmeye karar verdiği durumlarda ortaya çıkar. Bu, daha önce tartışıldığı gibi, genellikle belirtilen süreleri aşmak ve belirli bir hedefe ulaşmaktır. Planlı teknik borçlarla uğraşırken, kuruluşun nelerden vazgeçmeye istekli olup neleri yapamayacakları konusunda net olması gerekir. Doğru kayıtlar tutmalısınız, eninde sonunda atladığınız hataları geri döndürmeniz ve düzeltmeniz gerekeceğini unutmayın.

Kasıtsız Teknik Borçlar

Bu tür teknik borç, birincisinin tam tersidir. Bir kuruluş teknik borcu öngörmediğinde veya planlamadığında ortaya çıkar. Bunun nedeni, genellikle organizasyondaki çeşitli birimler arasındaki iletişimdeki bir kopukluk veya birimler arasındaki berbat iş uygulamalarıdır.

Kaçınılmaz Teknik Borçlar

Bu, organizasyonun hiçbir eyleminin engelleyemeyeceği türden bir teknik borçtur. Örneğin teknolojide yaşanan hızlı değişimlerle birlikte geçmişte yazılan bazı kodların günümüzde öngörülen standartların gerisinde kalması mantıklıdır.

Ayrıca, bu tür bir teknik borç, kod zaten yazılırken değişiklik istendiğinde ortaya çıkabilir. Yazılımı tasarlamanın ortasında bazı değişiklikler yapılırsa, dinamikleri bozabilir ve eski kodu geçersiz veya gereksiz hale getirebilir.

Teknik Borç Nedenleri

Causes of Technical Debt

Teknik borcun nedenlerinden bazıları yukarıda tartışıldı, ancak daha açık hale getirmek için onları birbiri ardına seçeceğim.

Acele

Teknik borcun en sık nedeni aceledir. Geliştiricilerin genellikle, bazıları belirli yazılımları başlatmak için son tarihleri ​​içeren katı son tarihleri ​​vardır. Bu tür durumlarda geliştiricinin yol boyunca teknik borçlara maruz kalması genellikle anlaşılabilir (ve beklenir). Bu tür bir teknik borç genellikle kasıtlıdır ve kodda hatalara veya spagetti kodlarının ortaya çıkmasına kadar değişen sorunlara yol açabilir.

Gözetim/Hata

Bazen programcılar sadece kötü kodlar yazarlar ve bu da sonunda teknik borçlara yol açar. Hatalı kodun kodlayıcının hatası sonucu ortaya çıkıp çıkmadığına bakılmaksızın, gerçek şu ki hatalar teknik borçlara yol açar ve ölçeklenebilir olmadıkları için eninde sonunda düzeltilmesi gerekecektir.

Etkilerin Farkındalık Eksikliği

Bazen teknik borçlar, kodlayıcının uzun vadede teknik borçların ne kadar zararlı olduğunu fark etmemesi veya kabul etmemesi nedeniyle ortaya çıkar. Bu, programlama sırasında kısayol kullanmanın zararlı etkilerine ilişkin meşru bir cehaletten kaynaklanabilir veya sonuçların kasıtlı olarak göz ardı edilmesi olabilir.

Niyet

Teknik borçlar, kodlayıcının veya kuruluşun kasıtlı eylemleriyle kasıtlı olarak ortaya çıkabilir.

Modülerlik Eksikliği

Bu, çoğunlukla, bir kodun aynı anda farklı iş mantığına hizmet edebilmesinden kaynaklanır. Bu tür bir durum, yazılımı işlemeyi çok daha zor hale getirir. Bir geliştiricinin yazdığı her kodla, modülerlikle ilgili zorluklarla karşılaşma ihtimalleri o kadar artar.

Teknik Borcun Değerlendirilmesi

Evaluation of Technical Debt

Teknik borçlar asla elle hesaplanmamalıdır çünkü bu oldukça zahmetli olacaktır. Mevcut sorunları ve gelecekteki olası sorunları belirlemek için kodu manuel olarak girmek zorunda kalmak anlamına gelir. Manuel işlemin ne kadar zaman kaybı olduğunun yanı sıra, manuel işlemin sonunda kodların şekil değiştirme olasılığı da vardır.

Değerlendirmeyi gerçekleştirmenin bir yolu, onu destekleyen bazı araçları kullanarak statik bir analiz yapmaktır. Kullanılabilecek araçlardan bazıları Coverity, SonarQube, Check Style ve Closure Compiler'dır.

Genel olarak teknik borçları hesaplamanın iki yolu vardır. İlk yaklaşımda teknik borcun kod oranını takip eden oranı hesaplanarak elde edilebilir. Burada, uygulamayı geliştirmek için gereken ilk tahmin veya toplam süre, teknik borcun düzeltilmesi için gereken süreyi belirlemek için kullanılacaktır.

İkinci yaklaşımda, SonarQube gibi çeşitli araçlar tarafından verilen tahminlerden doğrudan yararlanabilirsiniz. Bu, teknik borçların listeleri ve referans kodları ile birleştirilecektir. Araçlardan, düzeltmek için gereken sürenin doğru bir tahminini alabilirsiniz.

Teknik borcu değerlendirmek, teknik borcu düzeltmenin kaç gün süreceğine dair bir fikir verecektir. Ne kadar çok borç varsa, onu düzeltmeniz o kadar uzun sürer.

Teknik Borçların Çözümlenmesi

Peki ya teknik borçlar oluştuysa ve ne yapacağınız konusunda kararsız kaldıysanız? Teknik borçları yönetmek için atabileceğiniz bazı adımlar vardır.

Öncelikle teknik borçların var olduğunu kabul etmeli ve ekibinize iletmelisiniz. İletişimde, ne olduğu ve düzeltmek için ne yapılması gerektiği konusunda net olmalısınız. Teknik borcun icabına bakılması gerektiğini ilk fırsatta net bir şekilde ilettiğinizden emin olmalısınız.

Ekibinize teknik borçları bildirdikten sonra uygulayabileceğiniz üç yaklaşım vardır. İlk yaklaşımda, sisteme olduğu gibi devam etmeye karar verebilirsiniz. Bu senaryoda, uygulama olduğu gibi kullanılacaktır.

Alternatif olarak, uygulamayı yeniden düzenlemeye karar verebilirsiniz. Yeniden düzenleme, uygulamadaki karmaşıklığı azaltmak ve uygulamanın yapısını temizlemek amacıyla yapılır. Yeniden düzenleme ile yazılımın davranışı değişmez; tek etkilenen kısım iç yapı olacaktır.

Son olarak, yukarıda tartışılan iki seçenek işe yaramazsa, kodu tamamen değiştirmeniz gerekecektir. Bununla ilgili bir sorun, yeni teknik borçlara yol açabilmesidir, ancak bu uzun vadede daha iyi bir takas olabilir.

Gelecekte Teknik Borçlardan Kaçınmak

Avoiding Technical Debts

Elbette, teknik borçlardan kaçınmanın, ortaya çıktıklarında onları düzeltmeye çalışmaktan kesinlikle daha akıllıca olduğu düşünülemez. Hem zamandan hem de stresten tasarruf etmenizin yanı sıra, baştan teknik borçlara sahip olmanın getirdiği artık sonuçların ortadan kalkmasını sağlar.

Teknik borçların kendi içlerinde kötü olmadığı söylenebilir. Genellikle sorunludurlar çünkü geri ödenmesi gereken borçlardır ve insanlar dünyadaki en sorumlu tür değildir. Sürekli olarak daha zayıf bir seçenek seçmek genellikle yazılımınızın gücünü zayıflatır ve daha sonra işlevleri geliştirmeyi zorlaştırır. Genel olarak, teknik borçlardan kaçınmak herkes için en iyi bahistir.

Peki teknik borçların doğmasını nasıl engellersiniz:

Proje İş Listesi oluşturun

Buradaki fikir, herkesi süreçten haberdar etmek ve gerçekleştirilen görev ne olursa olsun onları hızlandırmaktır. Bir biriktirme listesi oluşturmak, herkesin yapılmayan görevleri ve bunları başarmak için izlenecek yolları görmesini sağlar.

Hızdan Çok Kaliteye Öncelik Verin

Kendiniz bir programcıysanız, kaliteli iş çıkarmayı çok fazla iş yerine öncelik vermeyi öğrenmelisiniz. Kodlarınızın temiz olduğundan ve uygulamalarınızın veya diğer yazılımlarınızın mükemmel şekilde geliştirildiğinden emin olun. Kısayolları kullanma cazibesinin buna değmeyeceğini anlayın, çünkü sonunda, attığınız görevleri yerine getirmek zorunda kalacaksınız.

Bir ekibin başındaysanız, aynı değerleri ekip üyelerine de iletmeniz gerekir. Üyelere sonuç odaklı çözümler üretmeleri ve kısayollardan kaçınmaları öğretilmelidir.

Farkındalık Yarat

Genel olarak, teknik borcun ne olduğu ve bundan nasıl kaçınılacağı konusunda derinlemesine bilgi, ilk etapta borçların ortaya çıkmasını önlemede faydalı olabilir. Geliştiricilerinizi gerekli bilgilerle donattığınızda, teknik borçların oluşturduğu tuzaklardan daha iyi kaçınırlar.

İyi Kodlama Uygulamalarını Tanıtın

Bazı kodlama uygulamaları, teknik borca ​​​​girmenizi daha olası hale getirir. Bu nedenle, sıkı bağlantıdan kaçınmak, soyutlama ve yeniden düzenleme kullanmak harika olurdu.

Güncellenmiş Teknolojiyi Tanıtın

Düzenli teknoloji güncellemeleri, teknik borçları önlemenin mükemmel bir yolu olabilir. Güncellemede, kullanılanın en son çerçeve, veritabanları ve uygulama yazılımı olduğundan emin olmalısınız.

Çözüm

Program geliştirmeye ve kod yazmaya devam ettiğiniz sürece, çoğu durumda teknik borçlar kaçınılmazdır. Bununla birlikte, yukarıda listelenen adımlar izlendiğinde ortaya çıkma şansları büyük ölçüde azaltılabilir. Ayrıca teknik borçların çıkması durumunda tüm umutlar kaybolmaz. Sakin ol, kendine güven, ona göre hareket et.