Siz Framework’leri Değil Framework’ler Sizi Takip Etsin

Framework’ü çerçevesi belirli bir takım deneyimlerin bir araya getirildiği soyut bir kavram olarak görüyorum. Bu kavramın bir çok somut örneğini çevremizde görebiliyoruz.

Yazılım dillerinde bir Framework kullanmak sizi bazı standart problemlerden soyutlar ve hızlıca yapmak istediğiniz işe odaklanmanızı sağlar. Ancak Framework’ü her ihtiyacı çözen gizemli bir şey gibi görmeye de gerek yok. Özellikle de işin teorisini öğrenmeden pratiğini öğrenmenin kısa vadede kazancı iyi olsa da uzun vadede zaman ve enerji kaybı olarak ortaya çıkacaktır. Yazılım dillerinde dilin kendisini tam olarak kavrayamadan Framework öğrenen ciddi büyüklükte bir kitle olduğunu görüyorum.

Konu genel olsa da ben özelde PHP’ye değineceğim. Oldukça eski geçmişi olmasından ve kuralları esnek olmasından kaynaklı olarak herkes kendine göre öğrenebiliyor PHP’yi. İletişim için kullanılan bir dil düşünün, ama herkes bu dili kendi yoğurt yemesine göre konuşabiliyor. Bu durumda toplumdaki iletişimin nasıl olacağını varsayıyor olmalısınız. Kısacası, bir şeyin şayet sağlam bir referans’ı, bağlı olduğu sağlam bir noktası yoksa dikey yoğunlaşma daha az, yatay dağılma daha çok olacaktır. Bu da ilgili şeyin tanımını güçleştirecektir.

Hal böyle iken ekosistem içinden çıkan birileri PHP’nin arkasını toplamak amacıyla çalışmalara başlıyorlar. Çeşitli Framework’ler ortaya çıkararak bu dağınıklığı kısmen ortadan kaldırmaya çalışıyorlar. Ancak, konu PHP Öğrenmek’ten daha çok “Framework Öğrenme” konusuna doğru kayınca işin rengi değişti tabi.

2005 yılında farkettiğim PHP ile başlayan yolculuğum, 2009 yılında CodeIgniter’ı farkederek devam etti. Kendimi daha rahatlamış hissediyor olmak keyifliydi. Biraz da zaman onu gerektiriyordu diyebilirim. Zaman ilerledikçe PHP toplarlanmaya başladı. Yıl 2012 olduğunda CodeIgniter’ı geliştiren Ellislab desteğini çekti. Çok geçmeden bir kuyunun içinde esir kaldığımı farkettim. O zamana kadar geliştirdiğim onlarca proje, iş vs. neredeyse hepsi artık PHP’nin gelişmesinden, ekosistemin gelişmesinden faydalanamayacaktı. Bu beni oldukça rahatsız eden bir konu oldu. Bu süreçte çeşitli Framework’lere geçme denemelerim olsa da çeşitli nedenlerden dolayı başarılı olamadım. 2015'in sonuna kadar o şekilde devam ettim. Tabi sonradan CodeIgniter’ın geliştirilmesi tekrar başlamış olsa da bir defa ağzım yanmıştı. Bu nedenle de arayışa devam ettim. Çeşitli araştırmalarım ve denemelerim oldu. Bir çok Framework’ü indirdim, denedim ve kurcaladım. Arkada yazılmış kodlarına inerek neyi nasıl yaptıklarına baktım.

Ve sonunda şunu fark ettim. Aslında olay ihtiyaç duyulan şeylerin uygun bir biçimde birleştirilmesinden ve parçaların birbiri ile düzgün iletişim kurmasından ibaretti.

Hemen ihtiyaçlarımı sıraladım;

  1. Request Response mimarisini dügün handle etmek
  2. Request sonrasında ve Response öncesinde yapılacak işler (middleware)
  3. Servislerin ve bağımlılıkların düzgün ve verimli çözülmesi için IoC Container
  4. Request’i anlayıp doğru Controller’ı tetiklemek, Router
  5. View Katmanı, Smarty
  6. Veritabanı Tablo Modelleri ve Repositories, Eloquent
  7. Tarih İşlemleri, Carbon
  8. HTTP İşlemleri, Guzzle
  9. VarDump, Symfony Var Dumper
  10. Session Management, Zend Sessions
  11. Ip Tespiti, Zend Http
  12. İrili ufaklı diğer kütüphaneler, Composer

şeklinde kabaca sıraladım. Sonra her bir madde için seçenekler arasından en iyi olduğunu düşündüğüm paketleri belirledim ve mevcut projeleri revize etmeye başadım. Aradan 1 yıldan fazla zaman geçti. Bir çok projeyi yeni yapıya geçirdim.

Sonuç olarak, artık kullandığım paketler kendini geliştirdikçe bende onlarla gelişmeye devam ediyorum. Olurda birisi işini düzgün yapamaz hale gelirse hemen muadilleri arasından birisini alarak ve parçayı değiştirerek yola devam ediyorum.

Kısacası, çok fazla Framework’lere takılmayın. Onları anlayın, ancak aranızdaki mesafeyi de korumayı bilin.

Show your support

Clapping shows how much you appreciated İrfan Evrens’s story.