Hız, çeviklik ve hareket kabiliyeti.

“Intentional architecture” ve “emergent design” ile teknik mükemmellik

Çevik ve sürdürülebilir teknik mükemmellik için “intentional architecture” ve “emergent design” konseptlerini nasıl birlikte kullandığımızı yazdım.

Ismail KIRTILLI
lTunes Tribe
Published in
2 min readMay 28, 2019

--

Gerçek anlamıyla çevik olmak, uçtan uca çevik ve sürdürülebilir bir teslimat akışınızın olmasını gerektiriyor. İş hedeflerine istediğiniz şekilde ulaşabilmek için geliştirmekte olduğunuz ürünlerin mimâri durumu, sık ve bağımsız versiyonlar çıkabilmeyi hızlandırdığı için önemlidir. Değer akışının tamamına destek olabilmek adına iş ile mimarinin paralel ve sürtünmesiz gidiyor olması gerekir. Böylece sürdürülebilir şekilde mümkün olan en kısa zamanda ve sürekli değer teslimi yapmak mümkün olabilir.

Burada ikilem şu:

Bir yandan takımlar şeklinde organize olup, karar almada ve değişime hızlı cevap verme konusunda onları güçlendirirken, aynı anda genel bir çerçeve ile sürdürülebilir ve diğer takımlarla kolay entegre edilebilir bir sistem nasıl devam ettirilebilir?

“Continuous attention to technical excellence and good design enhances agility. “ — Principles behind the Agile Manifesto.

Agile yazılım geliştirme yöntemleri, Big Design Up-front (BDUF)’tan özellikle kaçınır, bunun yerine takımları değer üretim merkezi olarak görerek mimari kararları almaları konusunda cesaretlendirir. Emergent design ile, sadece fonksiyonelitenin bir sonraki iterasyonu için yeterli olacak kadar mimariye odaklanmanız kâfidir.

Diğer yandan, takımların ortamları dışında meydana gelecek şeyleri tahmin etmeleri kolay değil. Münferit takımların tüm sistemi tam anlamıyla anlamaları ve gereksiz/çakışan tasarım karar ve uygulamalarından kaçınmaları mümkün değil. Kısacası, takımlar tek başına büyük resmi göremeyebilir ve çoğu kendi kontrolü dışında çıkacak değişiklikleri yeteri kadar tahmin edemeyebilir. Bu yüzden, takımların tasarım, performans, kullanılabilirlik için çerçeve ve takımlar arası tasarım ve implementasyon için bir yöne ihtiyaçları olur.

Organizasyonların sürdürülebilir teknik mükemmmellik için özellikle aşağıdaki konularda genel bir mimari çerçeveye de ihtiyaçları var;

  • Gereksiz yeniden tasarımı engelleyerek gecikmelerin azaltılması,
  • Sistemlerin entegrasyonu, doğrulanması ve devam ettirilmesinin kolaylaştırılması,
  • Nonfunctional Requirements (NFRs)’ın azaltılarak kalitenin artırılması,
  • Mümkün olan durumlarda denenmiş pratikleri kullanarak, gereksiz efor harcanmaması, waste’in azaltılması.

İşte intentional architecture bu sorunları engelleyebilmek için faydalı olur. Emergent design takımların gereksiz analiz ve tasarım üretmeden değişen gereksinimlere uygun şekilde yanıt vermelerini sağlarken, intentional architecture tüm sistemin konsept olarak bütünlük içinde olmasını ve amacına uygun şekilde işlemesi için gerekli rehberliği sağlar. Böyle bakınca emergent design ile intentional architecture arasında kurduğunuz doğru denge sürdürülebilir bir geliştirme akışı için kritiktir.

Biz lTunes’da geliştirdiğimiz “xense” adındaki çerçeve ile teknik mükemmellik için takımları desteklemeye ve mimari kararlarında güçlendirmeye çalışıyoruz. Düzenli teknik borç ödeme alışkanlığı ile çevikliğimizi devam ettirirken oluşabilecek darboğazları engellemek adına eski kodların sürekli modernizasyonu için çalışıyoruz.

Teknik mükemmellik konularında daha detaylı yazıları Teknik Mükemmellik Chapter Lead’imiz sevgili ’a bırakıyorum. :)

--

--