Bir Java Geliştirici Gözünden PHP

Gökhan Ayrancıoğlu
3 min readNov 28, 2020

Bir java geliştiricinin büyük bir projede PHP ile olan serüvenini, karşılaştığı zorlukları ve güzellikleri anlattığı mini bir yazıdır.

Öncelikle bu yazının bir dil karşılaştırması olmadığını belirtmem gerekiyor. Dört yıllık profesyonel java geliştiriciliği deneyimimin ardından karşıma PHP geliştirme yolu çıktı. Her şeyin, her farklı tecrübenin insana birçok şey kattığını düşünenlerdenim. Ben de denedim, deneyimledim.

Yaklaşık 10–11 aylık bir süreçte onlarca özellik geliştirmesi, yüzlerce bug-fix yapma fırsatım oldu. Çok da iyi yazılımcılarla çalışma fırsatı buldum. PHP sürekli yenilenmesi ve hızıyla önceden beridir oluşan ön yargıları kırmak üzere oldukça güzel iyileştirmeler ve ek özellikler barındırmaya başladı. Ayrıca OOP için birçok yeni geliştirme ve ek özellik eklendi. Laravel gibi çok güçlü bir framework ve değerli bir topluluğa sahip güzel bir dil haline geldi. Açıkçası bunu ben ilk Php geliştirmeye başladığımda farkedebildim ve bu durum beni çok şaşırttı. Zaman geçtikçe de oluşan önyargılarım kırıldı. Bu yazıyı PHP’yi övmek için yazmıyorum. “Bence” olumsuz olarak gördüğüm yönlerine de değineceğim.

Java mı Php mi ?

Php’nin onlarca yıllık geçmişinin ve önceden OOP ile ilgili desteğinin güçlü olmaması, çoğu PHP geliştirici için OOP kavramının tam oluşmamasına neden olmuş durumda ve bazı eski alışkanlıklar devam etmekte. Bu durumda bir sorun haline gelmiş gözüküyor.

Php’de hızlı bir şeyler çıkartmak isterseniz çoğu dilden daha da hızlı geliştirme yapabilmenize olanak sağlıyor. Ama hızlı kod her dilde olduğu gibi burada da başlara iş açabiliyor. Örneğin Class kullanımı çok yaygın değil (Database için oluşturulan modellerden bahsetmiyorum.) DTO diye adlandırdığımız ve zaman zaman gelen response’un body’sini oluşturduğumuz, zaman zaman içerdeki iletişimi sağladığımız şeklini söylüyorum. Özellikle bu konuda oldukça zorlandım. Kullanılan sürüm type tanımını zorunlu kılmıyordu optional/tercihen kullanabiliyordunuz.

Class kullanım oranının düşük olması nedeniyle bir nesnenin neyin nesi olduğunu isminin dışında tahmin etmeniz çok zor, dolayısıyla gidip oluşturulduğu yere bakmanız gerekiyordu. Bu hem zaman kaybı oluşturup okunurluğu düşürüyor hem de bilinmezliği artırıp hata olma ihtimalide artırıyordu. Multi-threading için güçlü bir desteği yok maalesef böyle bir yapı kurmakta zorlanabiliyorsunuz. Hızlı işlem gücü ile bunu biraz da olsa kotarmakta olduğunu da es geçmeyelim. Data manipülasyonlarında zorluklar yaşayabiliyorsunuz collection ve array fonksiyonları hayat kurtarsada bana biraz daha zor geldi, daha doğrusu gereğinden fazla işlem yapmayı getirdi, bu benim PHP tecrübesizliğimden de kaynaklanmış olabilir tabii :)

Runtime bir geliştirmede çalışmanın verdiği haz ise paha biçilemez. Değişikliğinizin anında yansıması ve oluşabilecek durumlara karşı hızlıca çözüm üretebilmek harika bir duyguydu. Migration kültürü ise çok güzel, tek zorlandığım şey rollback işlemini istediğiniz migration için direkt olarak gerçekleştirememeniz, tabii ki bununda mantıklı bir nedeni vardır. Ama oldukça güzel bir migration yönetimi olduğunu söylemeliyim.

Php’den bağımsız olarak Canlı Chat özelliğinin Firebase Real time database ile projeye kazandırılmasında rol oynadım. Whatsapp gibi bir devin ilginç business modelini deneyimleyerek entegrasyonunu sağladım. Mesele hangi dil ile geliştirme yaptığınızdan çok hangi yeniliklerle içli dışlı olduğunuzdan ve hangi yazılım tekniklerini kullanabildiğinizden geçiyor.

Şimdi durum nedir derseniz, Php yazmıyorum artık ama işime yaradığı yerlerde kullanmaktan kaçınmayacağım da kesin. Java ve Kotlin yazmayı sevdiğim ve bahsettiğim zorluklardan ötürü PHP’den vazgeçtim ama yeni şeyler öğrenmekten değil. Kotlin ve Java ile backend geliştirmeye devam ediyorum ki Kotlin’i yeni yeni kullanıyorum ve şu ana kadar oldukça keyifli geldi bana.

Sonuç olarak PHP nedense yerden yere vuruluyor ve toplumda PHP ile işi olmamış insanlar bile çok fazlaca kötülüyor. Ben bu görüşlere katılmıyorum(Delphi için katılıyorum :) ). Doğru yerlerde doğru geliştirmeler ile çok güzel işler çıkartabileceğiniz bir dil olarak görüyorum.

— Bana ulaşmak için: Twitter, Linkedin

— Kodlar konuşsun: Github

— 1:1 görüşmeler için: Superpeer

https://gokhana.dev

--

--

Gökhan Ayrancıoğlu

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices • https://gokhana.dev