Zamana Dayanan Yapılar Geliştirmek

Resilience May 28, 2020

Çocukluğumda dedemleri ziyaret ettiğimizde büyükannem soba başında sıkılmamam için bir sepet bulundururdu. Bu sepet içerisinde cep telefonu büyüklüğünde birbirine benzeyen bir sürü tahta blok ve C büyüklüğünde bodur eski piller vardı. Bu sepet benim için inanılmaz zevkli bir oyuncak türü barındırırdı. Tahta blokları birbirlerini üstüne dengeleyerek ve pillerden yardım olarak kule yapmaya çalışırdım (Jenga gibi) Bitirdiğim kuleleri de dedemler bir süre devam edeceğimi düşündüğü için yıkmak istemezdi. Sıkıldığım zaman yıkıp baştan yeni kuleler yapabilirdim.

Photo by Kieran Wood on Unsplash

Mevcut yazıyı dayanıklılık üzerine serimizin devamı olarak kabul edebilirsiniz. Christoper Alexander beni yeni mezun olduğumda çok etkileyen bir mimardı. (Diğeri de şehir, insan ve ekonomi ilişkisini irdeleyen David Harveydi ) Timeless Way of Building ve Pattern Language kitaplarını taramıştım. Şimdi yeniden anlamaya çalışıyordum. Beni etkilemesinin temel üç sebebi var:

1-Emergence: Farklı birimlerin bir araya gelerek yeni fonksiyonlar ortaya çıkarması. Örnek: Tahta kalıplarının bir araya gelerek kule işlevi görmesi gibi.

2-Tasarım Kalıpları: Bir yapının farklı tasarım kalıplarını bir araya getirerek yeni bir dil oluşturması. Tasarım kalıplarının birbirlerinden ilham alması. Örnek: Hastanede bekleme durağı ile otobüs durağı arasında benzerlikler.

3-Doğa/insan ile binaların etkileşimi : Bina ancak insan ve çevre döngüleri ile uyum olduğu sürece ayakta kalabilmesi. Örnek: Köy yollarında önemli noktalarda çeşmelerin sürekli bakım görmesi.

4-Dayanıklılık : Yapıların çevre etkileşimi ile varlığını sürdürmesi ve zamansızlık kazanması. Örnek: Yazlıkta bulunan bir havuz ile doğal gölet arasındaki fark gibi. Birini ayakta tutmak için enerji harcamanız gerekiyor.

Christoper Alexandar`ın zamansız yapılar üretme felsefesine gelirsek... Aşağıdaki kısa tanımları “Timeless Way of Building” kitabından özetlemeye çalıştım.

Photo by Noah Buscher on Unsplash

Kalite

Bir bina ya da kasaba eğer dışardan ek çaba gerektirmeden ve kendiliğinden işlevinin sürdürürse , çevresinden ve mimarından bir parça taşırsa zaman karşı sürekliliğini sağlar. Her bina ya da kasaba kendini tekrar eden olaylarla işlevselliğini sürdürerek kendini ayakta tutar. Bu olaylar insan aktiviteleridir. Binalar insan aktiviteleri ve doğa aktiviteleri ile işlevselliğini sürdürür. Eğer bina bizim işlevsel ihtiyaçlarımızı karşılıyor, deneyimlerimizin bir parçası haline geliyor ve ilham veriyorsa “canlıdır”. Bize hitap etmediği zaman ölüdür ve boştur. Binalar etkileşim içinde oldukları döngüsel doğa unsurları kadar canlıdır. Bu unsur zamansız kaliteyi destekler.

Geçit

Binaları yapan insanların yüzyıllardır yaptıkları ve öğrendikleri tasarım kalıplarına dayanır. Tasarım kalıpları bir tür dil gibidir. Kalıpları beraber kullanarak sınırsızca yeni binalar üretebilir. Oluşturulan dil kasabanın deneyimi ile örtüştüğü kadar canlıdır. Üretilen tasarım dili kasabadaki diğer binalarla örtüşen diller sonucu yeni bir sözlük oluşturur. Bu sözlük kasabanın ortak dil ve deneyimin bir yansımasıdır.

Tasarım kalıplarından ortak dil oluşturulduğunda, basit temel taşlarından yeni fonksiyonlar ortaya çıktığında, etkileşim ve ihtiyacı kapsayan yapılar merkezi çaba ve enerji gerektirmeden kendini geliştirebilir ve sürekliliğini sağlayabilir. Wikipedia`nın ilk kurucularından birisinin bu kitaptan ilham almasına şaşırmak lazım. Minecraft, GitHub, Simcity gibi bir çok yazılım türünün kitabın bir çok prensibinden yararlandığını veya farkında olmadan ilham aldığını söyleyebiliriz.

Photo by pelechia on Unsplash

Yazılım alanında bir kod serisinden ürün geliştirme aşamasına geçerken bazı prensiplerden yararlanabiliriz:

1-Geliştireceğimiz yapı süreklilik arz eden bir ihtiyaç grubuna hitap ediyor mu? Onları geliştirme sürecine ne kadar dahil ediyoruz?

2-Seçtiğimiz ve dayandığımız teknolojiler, kütüphaneler yaygın mı ve diğer yapılar ile iletişim kurabiliyor mu? Geliştirme ortamımız güncel ve diğer yapılar ile uyumlu mu?

3-Seçtiğimiz çözüm alanında hangi tasarım kalıplarından faydalanabiliriz? Ortak bir dil oluşturabilir miyiz? Tasarım kalıplarımız hedeflediğimiz ürün için doğru yapı taşını oluşturur mu? Kullandığımı dil yeni ve değerli bir fonksiyonunun ortaya çıkmasına yardımcı olabilir mi?

4-Geliştirme süreci boyunca kullanıcı ve çevre faktörlerini de varsayımlarımıza dahil ediyor muyuz? Kullanıcı sürece şekil verebiliyor mu? Kendi ihtiyaçlarına göre uyarlayabiliyor mu? Ne kadar esneklik kazandırıyoruz?

Sepetle yıllarca oynamaya devam ettim. Pili bitmedi, eskimedi, kablosu kopmadı, güncelleme gereksinimi ortaya çıkmadı. Kullanma kılavuzu olmadan yeni bir arkadaş dahil edip beraber kule yapabildim. Bugün yine gidersem o sepeti açtığımda o tahtalar ve piller (paslansa da) yerinde duruyor. Yine kule yapabilirim. Sepet zamana hiç beklemediğim kadar dayandı.

Yazıyı beğendiniz mi? Yapı taşlarını kodlama eğitimi ile öğrenen girişimciler için yaz döneminde yeni bir program başlatıyoruz. Kodluyoruz ile el ele, erken aşama Software as a Service (SaaS) girişimleri için 8 haftalık, online ve ücretsiz #SaastaLaVista başlıyor💪 Program sonunda ürün geliştirmeyi başaran girişimcilere Founders Institute bursu vermeyi planlıyoruz. Her şehirden başvurularınızı bekliyoruz. Program Haziran 15`ten sonra başlayacak. Başvuru için https://www.kodluyoruz.org/saastalavista/