Yıllardır forumlarda ve sosyal medyada bol bol "Neden Framework Kullanayım?" sorularını tartışıp duruyoruz. Bu tartışmalarda Framework kullanmayı tercih etmeyen kitle "Benim kendi framework'üm var! Yıllardır kullanıyorum ve işimi görüyorum. Niye başkalarının yazdığı kodları kullanayım ki?" çıkışı yapıyor. Config, Functions isminde 2 dosyayı include edip çalıştıranda, Tasarım desenlerini baz alarak yüzlerce class yazmış, dokümantasyonunu hazırlamış ve framework adının hakkını vermiş adamda, hayatında hiç framework incelemediğinden/bilmediğinden altta kalmak istemeyen junior yazılımcı da "Benim Kendi Framework'üm Var!" diyebiliyor. O yüzden bu yazının başlığı çoğu yazılımcıya çok tanıdık gelecektir.

Tam zamanlı iş hayatıma yeni atıldığım dönemde, çalıştığım şirketin orta çaplı, temelleri 7-8 yıl önce atılmış bir projesi bulunuyordu. Bu projenin sürekli geliştirilmesi, yeni modüllerin eklenmesi, bazı özelliklerinin güncellenmesi gibi bir çok ihtiyacının karşılanması gerekiyordu. Köklü/Eski bir geçmişi olduğu için yıllar içinde bir çok yazılımcı bu şirkette işe girip çıkmış, doğal olarak kodlara bir çok yazılımcının eli değmiş. Projenin altyapısında bir framework kullanılmadığını ve hiç bir teknik dokümantasyonunun hazırlanmadığını, bulunmadığını da belirteyim.

Benden önce işe başlayan yazılımcı projenin içler acısı halini görüp, kodların bakımının ve geliştirilmesinin zor olduğundan ve zaman kaybettirdiğinden yakınarak "Bu kodlarla uğraşacağıma oturup baştan kodlarım daha iyi!" düşüncesine kapılmış olsa gerek, günlerce fazla mesai yapmış, bütün yapıyı baştan kodlamış. Zaten biz yazılımcılar da "Baştan kodlayalım" mottosu oldukça yaygındır. Her yazılımcı nerede ne yapıldığını bildiği, hakim olduğu bir koda hükmetmek ister. O yüzden çok kötü yazılmış kodları görünce refactoring (yeniden düzenleme) yerine baştan yazmayı tercih eden çok fazla yazılımcı bulunuyor. Sonuçta bu arkadaşımız çok eski standartlara sahip olan kodları çöpe atmış ve modern standartlara (OOP) sahip bir hale getirmiş. Bunu tamamen iyi niyetle yaptığından şüphem yok.

Yazılımcının bu projeyi komple baştan kodlamasının en önemli nedeni, projenin dokümante edilmemiş olması ve buna bağlı olarakta oldukça zor anlaşılmasıydı. Ancak yeniden kodlanan projenin de hiç bir dokümantasyonu bulunmuyordu ve herhangi bir framework'te kullanılmamıştı. Yani ondan sonra işe başlayan yazılımcılar da onun kodlarını anlamaya çalışacak ve kendisinin yaşadığı benzer sıkıntıları yaşayacaktı. Aslında yapılan şey projenin geleceğini kurtarmak değil, kendisinin işini kolaylaştırmak, güncellemeleri hızlandırmak olmuştu.



Ben bu şirketle anlaşarak işe başladığımda önceki yazılımcının 1,2 gün bana projeyi anlatacağı, devredeceği söylendi. İşe başladığımda önceki yazılımcı ile oturduk ve o bana uygulamayı göstererek yüzeysel olarak nerede ne yaptığından, neyi nasıl yapmak gerektiğinden falan bahsetti. Projede ödeme sistemi, üyelik, blog, gelişmiş içerik yönetim sistemi vb. bir çok modül bulunuyordu. Bunlar ne lafla devredilecek ne de 2 günde anlaşılacak şeylerdi. (Bknz: Söz uçar, yazı kalır.) Sonuç olarak 2 gün sonra ben projeyle başbaşa kaldım. Kodların içinde nerede ne kullanıldığını, neyin nasıl çalıştığını anlamak için bol bol kodları incelemek, orasını burasını pırkalamaktan başka çarem yoktu. "Şuraya şunu ekleyelim" , "Buradan bunu çıkartalım" gibi basit istekler geldiğinde bile 5 dakikalık iş 1 saatte zor bitiyordu. Tabi burada "Önceki yazılımcı çok kötü kodlamış yaa!" diyerek onun kodlarına çamur atmıyorum. Sadece dokümantasyonu olmayan bir projenin geliştirilmesinde ki zorluğu vurgulamaya çalışıyorum.

Eğer benden önceki yazılımcı bir framework kullansaydı;
  • Genel itibariyle klasör yapısında nerede nelerin olduğu
  • Hangi kütüphanenin hangi parametreleri aldığı
  • Hangi fonksiyonu çalıştırdığımda geriye ne döneceği
gibi bir çok şeyi kodların, dosyaların içerisinde aramak yerine, dokümantasyondan hızlıca bakarak ilerleyebilirdim. Yani çekirdek düzeyde en azından framework'ün sunduğu şablona/ölçülere göre uygulama geliştirilmiş olurdu. Ben de bu şablona göre çok daha rahat ve hızlı bir şekilde ilerleyebilirdim. Şirket iş ilanı çıkarken de "X Framework bilen" birini arar ve projeye adaptasyon sürecini minumuma indirerek verimliliği arttırabilirdi.

Şunu da belirteyim; "Düzenli ve geliştirilmesi kolay bir sistem için mutlaka bir framework kullanmak gerekir" gibi bir genelleme asla yapmadım/yapmıyorum. Eğer standartlara uygun kod yazılıyorsa ve bunu başka bir yazılımcının kolayca anlayabileceği, projeye dahil olabileceği şekilde dokümante ediyorsanız zaten Framework'lerin sağlamak istediği şeyi başarmışsınız.

Şimdi "Benim kendi Framework'üm var!" diyen meslektaşım;

Senin Framework'ün bir dokümantasyonu var mı? Kaynak kodlarını bana göndersen ben hızlıca proje geliştirebilir miyim? Yaptığın bir projeyi üçüncü bir şahıs kolayca düzenleyip geliştirebilir mi?

Ne dersin Class, Function yığınlarından oluşan herşeye Framework demeye devam edecek miyiz?

KAYNAK : http://www.webteders.com/blog/detay/...work-um-Var/59