Ana Sayfa

Çalışmadığınız Yazılımı Tasarlayamazsınız: Somut Bilginin Önemi

1 dk okuma

Büyük yazılım sistemlerinin tasarım sürecine ancak o sistem üzerinde aktif olarak çalışan mühendisler anlamlı bir şekilde katılabilir. Bunun temel nedeni, sistemin somut detayları hakkında derinlemesine bir anlayışa sahip olmadan iyi bir yazılım tasarımı yapmanın mümkün olmamasıdır. Genel yazılım tasarım tavsiyeleri, çoğu pratik yazılım tasarım problemi için genellikle işe yaramaz. Kitaplarda ve blog yazılarında sıkça rastladığımız "probleme göre tasarım" yaklaşımı, alan hakkında makul bir anlayışa sahipken mevcut kod tabanı hakkında çok az bilgiye sahip olunduğunda verilen türden tavsiyelerdir. Ancak, gerçek dünyadaki günlük iş problemlerine bu tür genel tavsiyeleri uygulamak büyük dikkat gerektirir.

Gerçek iş yapılırken, somut faktörler genel faktörlere baskın çıkar. Mevcut kodun tam olarak neye benzediğini net bir şekilde anlamak, genel tasarım desenleri veya prensipleri hakkında iyi bir kavrayışa sahip olmaktan çok daha önemlidir. Örneğin, büyük kod tabanlarında tutarlılık, "iyi tasarım"dan daha önceliklidir. Ayrıca, gerçek kod tabanları genellikle karmaşık ve öngörülmesi zor sonuçlarla doludur; güvenli bir değişiklik yapmak, uygulama seçeneklerini çok az olasılığa indirger. Büyük, paylaşılan kod tabanları asla tek bir tasarımı yansıtmaz, her zaman farklı yazılım tasarımları arasında bir ara durumdadır. Bu nedenle, bireysel bir değişiklikten sonra kod tabanının nasıl bir arada duracağı, ideal bir "kuzey yıldızına" doğru ilerlemekten çok daha kritiktir.

En faydalı yazılım tasarımı, sistemi her gün üzerinde çalıştıkları için derinlemesine anlayan küçük bir mühendis grubu arasındaki sohbetlerde gerçekleşir. Bu tasarım tartışmaları, dışarıdan gelenler için genellikle sıkıcıdır çünkü herhangi bir teknik kişinin anlayabileceği genel prensipler yerine, sistemin karmaşık somut detayları etrafında döner. Örneğin, "DRY mı WET mi daha iyi?" gibi soyut sorular yerine, "Bu yeni davranışı A alt sistemine koyabilir miyiz? Hayır, çünkü B bilgisine ihtiyacı var ve bu bilgi C bağlamında o alt sistemde mevcut değil" gibi spesifik konular ele alınır. Bu yaklaşım, yazılımın güvenli ve sürdürülebilir bir şekilde gelişmesini sağlar.

İçgörü

Yazılım tasarımının başarısı, soyut prensiplerden ziyade, sistemi derinlemesine anlayan ve üzerinde aktif olarak çalışan mühendislerin somut bilgi ve iş birliğine dayanır.

Kaynak