Aslında Bu sorunun cevabı kişinin kendi tecrübeleri ışığında yanıtlayacağı bir cevaptır. Ondan herkesin vereceği cevap tecrübe, bilgi birikimlerine göre farklılık arz eder. Uzun süreden beri tartışılan bir konu. Benim burada tartışmaya başka bir boyut kazandırma niyetim de yok. Sadece tecrübelerimi ve tavsiyelerimi paylaşacağım.
Yine geliştirici, kendi ufkunda çözümünü, metodunu, yol ve yordamını kendi belirleyecektir.
PHP ile uygulama geliştirmede hayatım 2 döneme ayrılıyor. Birincisi her şeyi kendimin yaptığı bir dünya. İkincisi ise piyasada kabul görmüş Frameworkler ile yoluma devam ettiğim bir hayat.
Şimdi hayatımda her şeyi kendimin yaptığı dönemden başlayarak anlatıma devam ediyorum.
Bu dönemde geliştirdiğim her bir web uygulaması için tüm problem ve çözümleri kendi hayal dünyamda tasarlar ve kodlamaya koyulurdum. Klasik modüler, produsel ve nesne tabanlı olmak üzere kendi içinde bir düzeni bulunan kütüphanelerim vardı. Böylece tüm uygulamalarımda kendi kütüphanelerimi kullanarak yazardım.
CSRF gibi hadiselerden bir haberdim. Kendimce bazı önemli kayıt formlarının ilk sayfasına captcha koyarak sorunu çözmeye çalışırdım.
Bazı spesifik ihtiyaçlar için bir component gerektiğinde composer kullanarak onu da autoload şeklinde uygulama başında sisteme dahil ederek kullanırdım.
Her şey çok güzeldi. Yazdığım sistemler son derece hızlı çalışırdı ve ben biraz fazla kod yazmış olsam da ortaya çıkan ürünün hazzını yaşardım. Patron da memnundu!
Patronum, geliştirilip bitmiş uygulama için ileride başka spesifik özellikler istediğinde ve bu istediği özellikler de uygulama içinde mimarisel bir yapının değişikliği söz konusu olduğunda ne olurdu? Evvela uzun süre o uygulamanın kodlarını görmezsem vay halimeydi! Çünkü tekrar geliştirme için açtığımda daha önceden neyi nasıl yapmışım anlamak için biraz vakit harcardım ve odaklanma yapardım. Sonra istenen özelliği bitmiş bir projeye, diğer yapıları bozmadan eklerdim.
Bu istekler eğer sistemin çalışma akışına (workflow) ters düşebilecek bir şey olduğunda işte bu durum beni kendi yazdığım kodumu değiştirmemden bile soğuturdu. Patron bana para vermesine rağmen ona içimden verip veriştirerek işi yapardım. Sebebi; kendi ufkumla oluşturduğum bir framework’üm vardı. Onu hatalara karşı sadece ben test ederdim ve sadece kendimin karşılaştığı problemlere çözümler içerirdi. İleride başka bir problemle yüz yüze gelirsem, oturur o probleme ilk başta bir çözüm bulur ve o çözümü de kendi yol yordamımla eklerdim.
Şimdi bu birinci dönemim olarak tabir ettiğim her şeyi kendimin yaptığı zamanlar, her şeyi en iyi ben bilirim yıllarıydı.
İşte bu dönemde beni zorlayan ve yoran şeyler şunlar olmuştu:
- Ne zaman geliştirdiğim projeye başka birilerini de katmak istesem ve ona göre iş ilanı versek, bulduğum kişinin kendi ufkumla yazdığım kodlara vakıf olması zaman alırdı ve o kişi daha işe tam vakıf olamadan işten çıkardı. Sonuç: İş yükümü dağıtacak birini bulmada başarısız olurdum.
- Kıdemli bir yazılımcı ile çalışmak istesem ve ona şu şu kütüphanelerimi kullanacağız desem, adam: “Aaa! Her şeyi scratch mı yaptın?” diye istihzalı bir şekilde bıyık altından gülerdi. İş veren olsam bile adam sana akıl veren olurdu. Daha anlaşma olmadan akıl verme işinden dolayı sonuç başarısız olurdu.
- Yazılım dünyasının çok hızlı gelişen yapısına ve her geçen gün çıkan yeni metod, teknik ya da çözümleri kendi yazdığım kütüphaneye adapte etmezdim. Sunduğum çözüm başka bir açıdan çalışmazdı ve belki ben bunun hiç farkında bile olmazdım.
- Önceden geliştirdiğim web uygulamasını ölçeklendirebilmeyi ve genişletebilmeyi çok zorlanarak, söylenerek yapardım. Çok vaktimi alırdı ve yazılımdan beni soğuturdu.
- Zaman geçtikçe kendi kodlarıma baktığımda bir sanat görmezdim. Tatmin olmazdım. Artık kendi kendimi beğenmez olurdum.
Ve sonra..
Piyasada kabul görmüş frameworkler ile tanıştım. Sonra Laravel’i tanıdım. İşte ondan sonra hayat değişmeye başladı.
Hayattan haz almaya başladım.
(Bundan sonra yazacaklarım Laravel Framework’ü baz alınarak olacaktır. )
- Laravel topluluğuna giriş yaptım. İçerisinde son derece yetenekli beyinlerle tanıştım. (Taylor Otwell, Jeffrey Way, Mohammad Said, Matt Stauffer…)
- Taylor Otwell’in tasarım kalıplarını (S.O.L.I.D) son derece iyi kullanarak Laravel’i nasıl oluşturduğunu anlatan şu röportajı bana ilham olmuştu.
- Bir platform hayal edin, zevkle projenizi genişletebileceğiniz bir ortam. İşte bunu Laravel’de buldum. Mesela Redis’i sütlü kahve içme rahatlığında projemde hemen aktif edebiliyordum. Böylece tüm session’lar, eloquent veritabanı model cachleri Redis’i kullanmaya başlıyordu. Herhangi bir mail platformunu sisteme entegre etmek çocuk oyuncağıydı.
- Composer PSR-4 standardı ve Laravel uyumu sayesinde hızlıca projeye bir component ekleyebiliyordum. Ekledikten sonra hemen kullanıma hazır hale geliyordu. Böylece tüm proje içerisinde sınıf adını “use” ile deklare edip kullanmaya başlayabiliyordum.
- Artık yazdığım kodları bir platformun kuralları içerisinde disiplinize olmuş bir şekilde yazıyordum. İster istemez tasarım kalıplarına ve yazılım prensiblerine uyarak kod yazmaya zorlanıyordum. Bu gerçekten eğlenceliydi. Çünkü benim yeteneklerimi de geliştiriyordu. Örnek olarak Closure’ı Laravel’i kullanan herkes bilir, bilmek zorundadır. Çünkü muhakkak Laravel içinde kullanacaktır.
- Projeye birini dahil etmek için o framework’ün adını vererek iş ilanına çıktığımda onlarca yetenekli şahısla karşılaşıp sisteme dahil edebiliyordum. Böylece kısa zamanda projeye vakıf olması son derece hızlı oluyordu. Hem onun için hem de benim için işler rahat oluyordu. Çünkü adamın framework’te derinleşmesi ilerisi için kendine ve başka çalışacağa firmalar için de yatırım oluyordu.
- Model-View-Controller(MVC) hadisesi var ki başlı başına bir yazı konusu. Model ve controller, view dediğimiz tasarımdan ayrı kodlandığı için ortaya spagetti bir yapı çıkmıyordu. Kodlar daha bir düzen içindeydi.
- Güvenlik meselesine gelecek olursak CSRF’den tutun sql injection’a kadar her şey framework’ün ana yapısına entegre edilmişti zaten. Benim ek bir şey yapmama gerek yoktu.
- Az kod yazarak daha rahat kodlarımın ileride bakımını yapabiliyordum. Ayrıca Composer update ile hem Laravel’i hem de onun kullandığı tüm birleşenleri bir dakikada en son sürümlerine güncelleyebiliyordum.
- Belli bir topluluk devamlı surette framework’ü kullandığı için gelişimi de onların katkılarıyla oluyor. Laravel’i Taylor Otwell geliştirse de topluluğun yardımı ve geri bildirimleri ile bu hallere geldi. Ben böylece teknolojiyi takip etmeden, framework’ün topluluğunu ve kendisini takip ederek güncel trende hemen ayak uyduruyordum. Spesifik örnek verirsem Vue’nun front-end için Laravel içinde resmi desteği gibi. İster istemez bu Vue neymiş diye öğreniyorsun. Ve buna benzer birçok örnek…
Kısaca Laravel framework’ün topluluğuna dahil olup yoluma devam ettiğimde statü atladım. Kendimi elit bir ortama taşıdım. Artık teknolojinin tam merkezinde, gelişmelerden haberdar olarak ve anında uygulama imkanı bularak kendimi geliştiriyordum. Bu her açından bana güç verdi. Hem hayattan zevk alma adına, hem ufuksal olarak hem de özgüven açısından.
Sözün özü
Hayattan zevk alarak kod yazmak istiyorsanız,
Projeye birden fazla kişiyi dahil etmek istiyorsanız,
Yazılım dünyasındaki gelişmelere hızla ayak uydurmak istiyorsanız,
Birçok kişinin bakış açısı süzgeçinden geçmiş çözümleri projenizde uygulamak istiyorsanız,
Yazılım detaylarında kaybolmadan asıl projenizin çalışma akışına ve ürün özelliklerine odaklanarak kod yazmak istiyorsanız,
Akıllı insanların bulunduğu bir toplulukta insanlarla aynı dili konuşarak problemlere çözümler arıyorsanız ya da onlarla takılmak istiyorsanız,
piyasada kabul görmüş Laravel gibi, Symfony gibi bir framework kullanarak yolunuza devam etmeniz sizin için çok daha iyi olacaktır. Tecrübeyle sabittir.
Saygılar…
Etiketler: