Kötü Kodun Maliyeti

Projeler ekipleri, başlangıçtan itibaren 1-2 yıl içinde değişime uğrarlar. Her proje ekibinde değişim kaçınılmazdır, olmamasını beklemek hayal olur. Diğer yandan sistem gereksinimlerine yapılan her ekleme, değişim işleri giderek daha karmaşık hale getirir. Başlangıçta kurgulanan yapıya sürekli müdahalelerin olması kurgularda karışıklığa neden olur. Zamanla karmaşıklık büyür ve içinden çıkılmaz bir hal alır ve artık yapıyı temizleyip hep istediğiniz o hale sokamazsınız.

Karmaşık yapılarda proje ekibinin üretkenliği sürekli azalır ve sıfıra yaklaşır. Proje üretkenliği azaldıkça , yönetim yapabileceği tek şeyi yapar ve üretkenliğin artması umuduyla ekibe yeni çalışanlar dahil eder. Ama yeni dahil olan çalışan da sistemin tasarımına hakim değildir. Bu nedenle yapılan bir değişikliğin tasarıma uygun mu olduğunu yoksa ters mi düştüğünü anlayamaz. Yeni kişilerin katılımıyla üretkenliğin artması beklenirken  tam tersi durum olmaya devam eder ve süreç giderek bir yumak haline gelir ve üretkenlik sıfıra yaklaşır.

En sonunda ekip başkaldırır. Tıpkı bizim yaptığımız gibi 🙂 Yönetime bu iğrenç kodlarda daha fazla geliştirme yapamayacaklarını bildirirler. Yeniden tasarlama talebinde bulunurlar. Yönetim, kaynaklarının tamamını yeniden tasarım için harcamak istemez, ama üretkenliğin de korkunç durumda olduğunu inkar edemezler. Bu an yönetimin gerçekle yüzleşip kabullenmeye başladığı andır. En sonunda taleplere daha fazla karşı koyamaz ve yeniden tasarım süreci  için yetkilendirme yapar.

productivity-clean code graph

Rüya takım…

İkinci bir ekip kurulur. Eski ekip mevcut sistemde bakım ve geliştirme yapmaya devam ederken diğer ekip hevesle yeni yapıyı kurgular, tasarlar. Yeni ekip hem sahada koşan projenin yaptığı tüm işleri yapmalı, hem yeni ve temiz bir yapıda olmalı hem de eski ekibin mevcut projeye yaptığı geliştirmeleri yeni yapıya uygulamalıdır. Yöneticiler haklı olarak yeni yapı eskisinin yaptığı tüm işlevleri gerçekleştirmeden yeni yapıyı devreye almazlar, bu da her iki koldan ayrı ayrı giden projenin tekilleşme sürecini uzatır.Bu sırada zaman geçer ve yeni ekipte de değişimler yaşanır. Ve eski tasarımın başına gelenler yeni tasarımın daha sahaya çıkmadan başına gelebilir ve ekipten tasarım giderek karmaşıklaştı yeniden tasarlamamız lazım sesleri yükselebilir 🙂

Yeni yapının kodlanması ve tekilleştirme süresi uzadıkça yöneticilerin kafasında soru işaretleri oluşur. “Ne yapıyor bu ekip, yatıyor mu, keyf-i aleminde mi?” yöneticilerin her gün zihnini kurcalarken, yeni ekibe karşı güvensizlik ve sorgulama süreci de başlayabilir. Bu durumda bir gün tepe yönetimin isteğiyle bir de bakmışsınız ki rüya takımın masaları bir bir boşalmış, ya da yeni yapı geliştirme süreci sonlandırılıp, rüya takım eski ekibe dahil edilip aynı karmaşanın içinde debelenmeye devam edilmiş. Yazılımcıların midesine kramplar girerken, bir yandan üretkenlik yerlerde sürünse de müşteri baskısı bir çığ gibi büyüyerek yönetici kanalıyla ekibin üstüne üstüne gelmiş. Ekipte çözülmeler başlamış, bu durumda yeni kişiler dahil edilmiş, onlar da sonunda baş kaldırmış vs. derken bir de bakmışsınız ki bir kısır döngü içinde belli dönemlerde bu süreçler yaşanmış. Ve belki de sonunda proje batmış, yanmış bitmiş kül olmuş.

Peki ya çözüm?

Çözüm pes etmek mi? “Aman nasıl yazılırsa yazılsın, bana ne ben maaşıma bakarım” demek mi? Ya da yöneticiye karşı başkaldırmanın bizim için sıkıntı doğuracağını düşünüp vazgeçmek mi? Ya da istifayı basıp başka bir işe gitmek mi?

Hayır tabi ki de!!!

Bu işi severek yapan, kod yazmayı bir sanat olarak gören bir kişinin bu sıkıntılara kayıtsız kalması zaten mümkün değildir. Bilinçli bir şekilde kötü kod yazmak zorunda kalsanız bile o kod size batar, içiniz kan ağlar. Bu noktada “yoo çok da umrumda olmaz” diyorsanız, bu yazıyı okuyup boşa zaman kaybediyorsunuz, maliyeti de boşverin, siz bildiğiniz gibi devam edin. Benimle aynı düşüncede olanlara ise tavsiyem pes etmeyin, yılmayın, proje yöneticinize başkaldırın. Gerçekle yüzleşmesini sağlayın. Yöneticiler doğru onların huzurunu kaçıran cinsten olsa da bilip, bu durumla başa çıkmak isteyen çalışanlarının olduğunu görmek ister aslında. Belki bir anda sihirli bir değnekle her türlü imkan önünüze sunulmayacak, belki “Şu acil işler bitsin, ondan sonra bakalım” denip geçiştirileceksiniz, ama sonunda küçük de olsa adımların atıldığını siz de göreceksiniz. Bu adımlar her yenisi eklendiğinde sizi biraz daha motive edecektir, bazı durumlarda yine boşa kürek çektiğinizi düşünceniz de, atılan yeni adımlara odaklanın ve kendizi yeniden motive edin. Unutmayın zorlu ve yorucu bir süreç sizi bekliyor ama sonunda ortaya çıkaracağınız şey size kod yazmanın keyfini yaşatacak.

Küçük bir de not; iyi kodun nasıl yapılacağını anlatan, bu işin tekniklerini ortaya koyan insanlar en az 30 yıldır bu işe gönül vermiş kişiler, adını yazılım dünyasında duyurmuş, örnek kaynak olarak gösterilmiş kişiler… Bu kadar insan boş konuşuyor olamayacağına göre Türkiye’de işler böyle yürümez demeyin ve doğru bildiğiniz, olması gerektiğine inandığınız yoldan sapmayın.

“Her kod güzel yazılmayı hakeder”

Kaynak : Clean Code – Robert C. Martin

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s