Profesyonel hayatında ve özel hayatında karmaşık problemler sevdalısı olan bir birey olarak bayılırım sorunları enine boyuna ele almaya, excel’ler yaratmaya, dökümanlar yazmaya, yazdıkça üzerinde düşünmeye, düşündükçe kaybolmaya, olmadı baştan almaya ve “İşte! Bak ne de güzel çözdüm!” diyerek gece rahatça uyumaya…
Ama dünya kaosu seviyor değerli okur.
Evren kaostan ve entropiden besleniyor.
Hiçbir karmaşık problemin çözümü, sizin ona sevgiyle yaklaştığınız, pamuklara sararak tüm “edge case”lerini hesaba katarak sonuca ulaştırdığınız güzellikte çözümlerle çalışmıyor. Çünkü gerçek hayat sizin bilgisayarınızda ya da defterinizde oluşturduğunuz kompleks sistemin sabit sistem elemanlarından oluşmuyor. Sistem yaşıyor ve savaşıyor.
Sistem mutlaka geri tepiyor…
“Le Chatelier” İlkesi yani “Sistem Mutlaka Geri Teper İlkesi”
Bu muhteşem ilke, 1884 yılında Fransız kimyager Henri Louis Le Chatelier‘in laboratuvarında gözlemlediği bir kimya prensibine dayanır.
Le Chatelier, kimyasal reaksiyonların üzerlerine uygulanan değişikliklere direnme eğilimi gösterdiğini fark eder. Örneğin, ısı üreten (ekzotermik) bir reaksiyonu soğutursanız, sistem sıcaklık düşüşüne “direnmek” için daha fazla ısı üreten ürün oluşturarak dengeyi yeniden sağlamaya çalışır.
Bu ilke, aslında bir çocuk doktoru olan John Gall tarafından 1975 tarihli Systemantics (daha sonraki baskılarda The Systems Bible) kitabında insan sistemlerine uygulanmıştır.
Gall, sistemlerin yaratıcılarının niyetlerini sadakatle yerine getiren iyi huylu varlıklar olarak görülmemesi gerektiğini, aksine, zamanla kendi düzgün işleyişlerine karşı çıkmaya başladıklarını savundu.
Bu ilkenin savunucusu olacak kadar benzer örneklere şahitlik ettiğimizi düşünüyorum.
Bize “Coral” diyeceksiniz
Bundan yıllar önce profesyonel hayata ilk başladığım senelerde çalıştığım “arama ve rezervasyon oluşturma” makinesi yarattığımız turizm teknolojileri şirketinde bu ilkeyi birebir yaşadım. Eski platform PHP ile yazılmıştı ve turizmin Trivago ve diğer “karşılaştırma” sitelerinin zorlamasıyla milisaniyeler içinde yanıt vermesi gereken sorgularına istenilen hızda yanıt verememeye başlamıştı.
Biz de her akademik beyinlere sahip olduğunu iddia eden ve turizmi birkaç ayda çözmüş olduğuna emin bireylerin yapacağı gibi tüm eski sistemi yeniden, sıfırdan PHP yerine Python ile yazan bir araştırma ekibi kurmuştuk. Ne umut ama… Ve muazzam kendimize güvenimizle ismimizin “Core Algoritm”den geldiğini söylerek Coral olduğunu iletmiştik tüm şirkete.
Coral aylar süren tüm sistemi “daha hızlı, daha iyi ve geleceğe yönelik bir altyapı” hazırlığını bitirip, canlıya çıktı. Bu muhteşem sistemin muhteşemliğine tanık etmesi için binlerce aday arasından seçtiğimiz referans müşterimiz büyük bir heyecanla sistemi kullanmaya başladı. Bu tanrısal teknoloji karşısında nutkunun tutulacağından emin olduğumuz müşterimizin ilk hafta sonunda patrona yolladığı uzun email’le eski sisteme geri dönmeyi hemen şu anda istediklerini yoksa bizi bırakacaklarını öğrendiğimizde yaşadığımız şoku tahmin edebilirsiniz…
Ama haklıydı. O müşteri çok haklıydı.
10 yıllık bir bilgi birikimiyle yazılmış “legacy system”, neredeyse tüm problemlere, tüm müşterilerin tek tek kendilerine has “kullanım şekline” göre evrilerek ortaya nasıl çalıştığını anlamadığımız ama bir şekilde çalışan bir organizmaya evrilmişti ve biz bu yaşlı, biraz aksi ama oldukça bilge eski sistemi 6 aylık bir körpecik olan yeni bir sistemle değiştirmek istemiştik. Tüm turizm teknolojilerini çözdüğümüze emin olduğumuz, turizmin nirvanası sınıfta kalmıştı.
Çünkü hızlı olması yetmiyordu, çoğu zaman yanlış çalışıyor ve eksik kalıyordu.
Çünkü, birçok müşteri sorununa denk gelmiş ve her birini tek tek çözmüş olan eski sistemin bilgeliği yeni sisteme yoktu. İnsanlar yeni sisteme karşı çıktı, değişim istemedi, sadece kendi sorunlarını eskiden çözdüğümüz gibi çözelim istedi.
Sıfırdan “yeniden yazma” günahı teknolojik günahların en büyüğü…
Lütfen şunu söylememe izin verin, Coral’dan edindiğimiz bu muhteşem örnek bize ders oldu ve bir daha “biz bunu sıfırdan bir daha yazalım” asla demedik mi dersiniz?
Elbette ki hayır.
Coral ben oradan ayrıldığımda 3. kez baştan, ama bu kez Python ile değil Go ile yazılmaya başlanmıştı. Çünkü tek günah keçisi tabii ki Python ve onun “single threaded” yapısıydı. (Bu teknik terminoloji ile muhteşem akademik teknik bilgimin ne kadar derin olduğuna emin oldunuz sanıyorum. 😏)
Kompleks sistemleri sıfırdan ele alan ve büyük bir hezimetle sonlanan başka birçok örnek verebilirim size. Ama bunu size bırakıyorum ve bu durum hakkında ne yapabileceğimizden bahsetmeye başlıyorum.
Ne yapmalı?
Karmaşık sistemleri sıfırdan tasarlamak yerine uygulanması gereken çözümü, “çalışan basit bir sistemle başlayıp, bunu yineleyerek evrimleştirmek” ve özellikle mevcut ve sorunlu bir sistem varsa “onun etrafından dolanarak paralel bir yapı kurmak” olarak özetleyebiliriz.
Bu yaklaşım, John Gall’ın yukarıda bahsettiğimiz “Sistem her zaman geri teper” yasasına ve karmaşık sistemlerin değişikliklere direnme eğilimine dayanıyor.
Sorunu nasıl çözeceğimizi adım adım açıklayalım:
1. Çalışan Basit Bir Sistemle Başlayın (Gall’ın Yasası)
Başarılı ve karmaşık sistemlerin tek bir ortak kökeni vardır: Basit ve işleyen bir sistem olarak başlamaları...
Gall’ın yasası, bu gerekliliği kesin bir dille ortaya koyar:
“Çalışan karmaşık bir sistemin, daima çalışan basit bir sistemden evrimleştiği görülür. Sıfırdan tasarlanmış karmaşık bir sistem asla çalışmaz ve yamalanarak çalışır hale getirilemez. Çalışan basit bir sistemle yeniden başlamanız gerekir.”
Başarının temelinde, nihai, bitmiş ürünü tek bir dehanın haritalandırması değil, sistemin yıllarca süren uğraşma ve yineleme (tinkering and iteration) yoluyla binlerce zeki insan tarafından ölçeklendirilmesi yatar.
• Örneğin, ilk elektrik şebekesi, 1881’de İngiltere’deki Godalming’de bir su çarkına bağlı birkaç elektrik lambası olarak başlayan basit bir sistemdir. Benzer şekilde, modern transistörler 1947’de elle lehimlenmiş tellerden oluşan bir parçadan evrilmiştir.
2. Mevcut Sistemi Baypas Edin ve Paralel Başlayın
Hükûmet sistemleri gibi insanın dahil olduğu mevcut karmaşık sistemler halihazırda milyonlarca kişi tarafından kullanıldığı için, bunları kapatıp yeni bir şey inşa etmeyi beklemek mümkün değildir. Bu nedenle, çözüm eski sistemi ortadan kaldırmaya çalışmak değil, onun etrafından dolanmaktır.
• Paralel Yapı Kurma: Terminoloji sizi korkutmasın -siyasi şaka barındırmaz ☺️-, eski, hantal bir sistemin varlığı, paralel olarak yeni ve basit bir şeye başlamamızı engellemez.
• Karmaşıklıktan Kaçınma: Bu yaklaşım, karmaşık sistemleri çözmeye yönelik “büyülü sistem düşüncesi” olarak adlandırılan ve genellikle başarısız olan yaklaşımdan kaçınmayı sağlar. Sistemler, ne kadar karmaşık hale gelirse, o kadar iyi değil, daha kaotik hale gelir. Bu nedenle en iyi çözüm alçakgönüllülükle çalışan ama çalışan basit bir sistemdir.
3. Uzun Vadeli Vaat: Yerine Geçme
Basit çalışan bir sistem kurmanın uzun vadeli amacı, zamanla eski, bozuk sistemi yerinden ederek (supplant) daha büyük ölçekte sonuçlar üretmesidir.
• Örneğin Estonya, başlangıçta sadece çevrimiçi vergi beyannameleri ve belge imzalamak için kullanılan basit bir elektronik kimlik uygulamasıyla başlayarak bunu kademeli olarak oylama, polis hizmetleri ve reçeteler gibi yeni alanlara genişletti ve böylece eski devlet sistemlerinin yerini tamamen dijital bir sistem aldı.
Tabii ki muhteşem sistem tasarımının çalışmadığından ya da çalışmayacağından bahsetmiyorum, aksine “yavaş ve karmaşık” bulunan sistem tasarımı yönteminin daha çok sorun çözmede kullanılması gerektiğini düşünüyorum. Ama doğru bir şekilde…
Çünkü sistem tasarımının işe yaradığı kompleks sistemler, kompleks olduklarından değişime direnecektir. Yapmamız gerekenin bu muhteşem karmaşıklığı muhteşem basitlikle çözerek ele almak ve yavaş yavaş büyütmek olmalıdır.
Not: Sistem tasarımına başlamak istiyorsanız ve nereden başlayabileceğinizi merak ediyorsanız bu işin piri Donella H. Meadows’un Thinking in Systems kitabına bakmanızı öneririm.
Hande.




çok güzel bir yazı olmuş. özellikle paralel çalışma işi büyük yazılımlar için çok önemli bir süreç!
Güzel yazı,kalemine sağlık. İnsanda da aynı sistem tasarımı mevcut.O yuzden bir değişim istediğimizde en küçüğü de olsa direk aksiyon da olmamız gerekir.Büyük düşünülmüş ve tasarlanmış değişimler bize göre değil:)