Tag: kalite

  • Teknik pratikler

    Teknik pratikler

    Teknik borç, teknik kirlilik adına ne derseniz deyin biliyoruz ki biriktikçe işimizi zorlaştıracaklar. Bunu hepimiz yaşadık; yeni bir projede başlarda her şey çok kolay ve çok hızlı ilerledi ama öyle bir an geldi ki değişikliğin adını bile duymak istemez olduk ve sistemlerimizin yeniden yazılması gerektiğini telaffuz etmeye başladık.

    Bir geliştirme yapmak zamanla daha zor olacaksa; değişikliği bağrımıza bastığımız, çevik yöntemler ne kadar makul? Her detayı etraflıca düşünmek, bin düşünüp bir söylemek daha mantıklı değil mi? Çevik öncesi dönemde tam da bunu yapmaya çalışıyorduk; isterleri detaylıca inceliyor, sayfalarca dökümanlar üretiyor, detaylı sistem tasarımları yapıyor, geliştirmeye ancak o zaman başlıyorduk. O dönemlerin sorunlarını burada listelemeye gerek yok sanırım.

    Çevik yöntemler ancak değişikliklerin maliyeti artmayıp sabit kaldığında ya da zamanla azaldığında sürdürülebilir olacaklar. Bu da sistemlerimizin iç kalitesini yüksek tutmakla; teknik pratikleri yerinde ve zamanında uygulamakla mümkün.

    Bu teknik pratiklerin bazılarını farklı kaynaklardan derlemeye çalıştım:

    • Yalın ve kademeli tasarım (Simple and evolutionary design)
    • Düşük bağımlılığa sahip bir mimari (Loosely coupled architecture)
    • Kod iyileştirme çalışmaları (Refactoring)
    • Kod standartları
    • Yalın ve temiz kod (Clean code)
    • Eşli programlama (Pair programming)
    • Test yönlendirmeli geliştirme (TDD)
    • Sürekli entegrasyon (CI)
    • Güvenlik gibi kaygıları öne almak (Shift left)
    • Sürüm kontrol sistemleri (Version control)
    • DevOps pratikleri
    • Doğru ve yeterli test otomasyonu

    Teknik pratiklerin yeterli olgunlukta olmadığı bir ortamda çeviklik ancak sözde kalacaktır. Çevik yöntemlerin başarılı olabilmesi için süreçler kadar teknik pratiklere de önem vermeli; bunları öğrenmek, uygulamak ve içselleştirmek için gerekli koşulları oluşturmaya özen göstermeliyiz.

    Kaynaklar

  • Borç mu alıyorsunuz etrafı mı kirletiyorsunuz?

    Borç mu alıyorsunuz etrafı mı kirletiyorsunuz?

    Teknik borç (technical debt) , Ward Cunningham tarafından ortaya koyulmuş bir analoji. Cunningham sistemlerimizdeki idealden uzak durumları, tasarım hatalarını ödenmesi gereken finansal borçlara benzetiyor. Ev almak araba almak için aldığımız krediler, borçlar zamanı gelince ödenmesi gereken zorunluluklar bizim için. Eğer ayağımızı yorganımıza göre uzattıysak ne ala, sıkı bir disiplin ile borçlarımızı zamanı geldikçe öder ve normal rutinimize geri döneriz. Hesapsız yola çıktıysak vay halimize borcu daha fazla borç ile kapatmaya çalışır içinden çıkılmaz bir duruma düşeriz.

    Analoji, yalnızca ödeme sürecini değil, borcun alınma sürecini de kapsıyor. Bu borçları ne zaman nasıl aldık? Ne yaptığımızın farkında mıydık? Gördüğüm kadarı ile çoğu takımın durumunu borç olarak nitelemek imkansız; oluşan şeyin adı teknik kirlilik(cruft). Bu kirlilik bazen bilgi eksikliğinden bazen tembellikten ve disiplinsizlikten bazen de kendi kendine oluyor (kullandığınız o kütüphaneler güncellenmeyecek mi sanıyordunuz).

    Borç analojisi her zaman tam olarak çalışmasa da Martin Fowler’ın pragmatik yaklaşımı [1] bana mantıklı geliyor; teknik borç kavramı da teknik kirlilik kavramı da nihayetinde birer analoji. Analojileri de daha iyi iletişim kurmak için kullanıyoruz. Borç, herkesin aşina olduğu bir kavram ve teknik kirliliğin bizi nasıl yavaşlattığını ve temizlemenin ancak disiplin ile uzun zamanda mümkün olacağını herkesin anlayabileceği şekilde ifade etmenin güzel bir yolu.

    Peki siz geliştirme yaparken gerçekten borç mu alıyorsunuz yoksa bilinçsizce etrafı mı kirletiyorsunuz?

  • Tamamen duygusal

    Tamamen duygusal

    Değişmeyen tek şeyin değişimin kendisi olduğu bir sektörde çalışıyoruz. İsterler ve kısıtlar değişiyor, kullandığımız kütüphaneler, diller, platformlar değişiyor. Bu ortamda ürettiğimiz yazılımların eskimemesi mümkün değil. Zamanla tıkır tıkır işleyen makinelerimiz paslanıyor, pırıl pırıl ortamımız tozlanıyor, etrafta bıraktığımız çöpler birikiyor.

    Müdahale etmediğimiz her an işimiz daha da zorlaşıyor. Öngöremediğimiz hatalar çıkıyor. Hareket alanımız kısıtlanıyor. Yeni geliştirmeler yaparken, çıkan hataları düzeltirken zorlanıyor, vakit kaybediyoruz.

    Vakit nakittir demiş atalarımız – kaliteye de tamamen duygusal sebeplerle ihtiyacımız var. Bugün yaptığımız irili ufaklı yatırımlar gelecekteki işlerimizi kolaylaştıracak, maliyetlerimizi düşürecek.

    Teknik borçlanmayı ve kirlenmeyi tamamen önlemek mümkün değil gibi; yapabileceğimiz şey onu kontrol altında tutmak. Bunun yolu takımlarımızın yetkinliklerini geliştirmek, onlara yeterli alan açmaktan geçiyor. Ancak bu şekilde daha az borç kullanan ve düzenli temizlik disiplinine sahip bir ekip oluşturabiliriz. Bu da nihayetinde işleri kolaylaştırıp hızlandıracak.


    Bu yazı Martin Fowler’ın benzer bir yazısından ilham ile yazılmıştır