• 24-01-2013, 14:36:37
    #1
    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
  • 24-01-2013, 15:47:40
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Çok güzel bir yazı olmuş, paylaşım için teşekkür ederim.
  • 24-01-2013, 16:58:34
    #3
    Üyeliği durduruldu
    Framework da ne ola ki?
  • 25-01-2013, 00:37:45
    #4
    saintx adlı üyeden alıntı: mesajı görüntüle
    Çok güzel bir yazı olmuş, paylaşım için teşekkür ederim.
    Teşekkürler.

    WapZap adlı üyeden alıntı: mesajı görüntüle
    Framework da ne ola ki?
    Framework Nedir?
  • 25-01-2013, 00:49:36
    #5
    okurken hiç sıkılmadım.Oldukça güzel bir yazı olmuş teşekkürler.
  • 25-01-2013, 15:11:42
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bence ilk iş OOP nedir ve geliştirme süreçleri hakkında detaylı bilgi vermek gerekir. Yazılımın büyüğü küçüğü olmaz, hepsi aynı özenle yazılmalıdır ki geliştirici her şekilde rahat etsin.
    Birçok kişi waterfall'dan, scrum'dan, code review'dan, agile development'tan bir haber durumda. Anlamlarını öğrendiklerinde de "aaa bunun anlamı bumuymuş ben zaten biliyorum ki bunları" derler ama hiçbirşeyden haberleri yoktur aslında...
  • 28-01-2013, 10:09:40
    #8
    rob33n adlı üyeden alıntı: mesajı görüntüle
    Bence ilk iş OOP nedir ve geliştirme süreçleri hakkında detaylı bilgi vermek gerekir. Yazılımın büyüğü küçüğü olmaz, hepsi aynı özenle yazılmalıdır ki geliştirici her şekilde rahat etsin.
    Birçok kişi waterfall'dan, scrum'dan, code review'dan, agile development'tan bir haber durumda. Anlamlarını öğrendiklerinde de "aaa bunun anlamı bumuymuş ben zaten biliyorum ki bunları" derler ama hiçbirşeyden haberleri yoktur aslında...
    Aynen katııyorum. OOP ile çalışmaya alışıldığında zaten basit bir işte olsa Class, Extend, Interface, Namespace vb. özellikleri kullanıp, design pattern yöntemlerinden faydalanıyorsunuz. Ama OOP yazılan her kod düzenli olacak diye bir şey de yok tabi.

    PHP'nin en büyük dezavantajı OOP olarak piyasaya çıkmamış olması. O yüzden prosedürel kod yazmaya alışmış bir çok yazılımcı bulunuyor. Yazılımcıların alışkanlıklarını değiştirmekte çok zor. OOP sürümünü destekleyen PHP 5 2004'te çıkmıştı sanırım. Neredeyse 9 yıl oldu yani ama hala OOP kullanmayı geçtim "Ne gerek var abi ona ben fonksiyonu yazıp geçiyoırum. Benim işimi görüyor" yaklaşımında olan binlerce kişi var. "Benim işimi görüyor" yerine "Ben işimi nasıl daha iyi yapabilirim?" diye düşünmeye başlayabilirsek birşeyler değişebilir sanırım.
  • 09-02-2013, 14:14:10
    #9
    Ben OOP yapısına geçip, MVC yi kavrayamadım bir framework öğrenmem gerek diye üzülüp dert yanarken meğer başkasının kodunu niye kullanayım diyenlerde varmış İyi kılıf uydurmuşlar ama bu kılıflar bir işe yaramıyor. PHP yapısı itibariyle zayıf bir dildi, php 5 ten sonra OOP geldi ve daha iyi bir dil olmaya başladı eğer php ile iyi işler çıkartmak istiyorsak framework şart.

    Benim OOP yapısındaki tek sıkıntım ne yapmam gerektiğini bilmemem, bir proje olsa neyi nasıl yapmayalım, ne için sınıflar oluşturmalıyım şeklinde çok fazla ayrıntıya takılıyorum.
    Zaten MVC'ye geçersek daha çok kafam karışıyor views okey diyorum Controller ve modeller kısmında neyi nereye koysam gibi çok sorunlar karşıma çıkıyor ama yavaş yavaş alışıyorum bakalım