2018'in muhasebesi: bir PHP geliştiricisi nereye geldi
2018 boyunca öğrendiklerimi, değişen alışkanlıklarımı ve önümüzdeki dönem için belirlediğim hedefleri dürüstçe değerlendiriyorum.
Yılın son ayı geldiğinde geriye dönüp bakmak iyi hissettiriyor. 2018 benim için hem teknik hem de zihinsel anlamda belirli bir dönüşümün yaşandığı bir yıl oldu. Mid-level geliştirici olarak başladığım bu yılı kapatırken, “ne öğrendim, ne işe yaradı, nereye gitmek istiyorum” sorularına dürüst cevaplar vermek istiyorum.
Yılın teknikleri
2018’de en çok zaman harcadığım konu API tarafıydı. Laravel’de API Resource sınıflarını kullanmayı, bildirimleri kanal odaklı tasarlamayı, çok dilli destek eklemeyi ve görev zamanlayıcıyı kod içinde yönetmeyi öğrendim. Bu konuları tek tek yazarak öğrenmek farklı bir deneyim; anlatmaya çalışmak, gerçekten anladığınızı sınamak gibi.
PHP 7.2’nin getirdiklerine baktığımda dilin gerçekten olgunlaşmaya devam ettiğini görüyorum. strict_types, dönüş tipi bildirimleri, nullable tipler — bunların hepsini artık alışkanlık olarak yazıyorum. Birkaç yıl önce bu kadar tip bilinçli PHP yazmayı hayal bile etmezdim.
Vue.js benim için bu yıl gerçekten yerleşti. Bileşen tabanlı düşünmek başlangıçta zihinsel bir yük gibi hissettirdi; artık tersine, sayfayı parçalamadan düşünmek garip geliyor. async/await de aynı şekilde — Promise zincirlerine dönmek istemiyorum.
Test yazmanın başlangıcı
Bu yılın en önemli değişikliği test yazmaya başlamak oldu. Mütevazı bir başlangıç: servis sınıflarına birim testleri, birkaç özellik testi. Test felsefesine girmeden, yalnızca “bunu nasıl yaparım” sorusuna cevap arayarak.
Sonuç olarak şunu fark ettim: test yazılabilir kod, test yazılmayan koddan farklı. Bir şeyi test etmeye çalıştığınızda metodun çok fazla iş yaptığını, sınıfların birbirine gereğinden fazla bağlandığını daha net görüyorsunuz. Test sadece doğrulama aracı değil; aynı zamanda tasarım geri bildirimi. Bu perspektif 2018’in en değerli kazanımlarından biri.
İşe yaramayan şeyler
Takvim özelliği üzerinde çalışırken zaman dilimi yönetimini küçümsedim ve geri döndüm. Baştan “veritabanında her zaman UTC” kuralını koymadan ilerlemek zaman kaybettirdi. Tekrar eden etkinliklerin tasarımını yeterince düşünmeden başlamak da aynı şekilde.
Genel olarak gördüğüm örüntü şu: “küçük bir özellik, hızlı yazarım” diye başladığım şeyler çoğunlukla planladığımdan uzun sürüyor. Bu bir problem değil aslında; ama zamanı planlarken bu gerçeği dikkate almam gerekiyor.
npm ekosisteminde kaybolmak da 2018’de yaşadığım bir şey. Hangi paketin ne için kullanıldığını, hangisini kullanmam gerektiğini anlamak bazen projeyi yazmaktan fazla vakit alıyor. Bir göreve başlarken “bu iş için en minimal çözüm ne?” diye sormayı öğrendim.
Alışkanlıklardaki değişim
Bu yılı özetleyen birkaç somut alışkanlık değişikliği var:
strict_types=1’i her PHP dosyasına ekliyorum. Tip bildirimleri artık seçenek değil, standart. Bunları yazmak yük değil; yazmamak eksiklik hissettiriyor.
package-lock.json ve composer.lock dosyalarını Git’e dahil ediyorum. Eskiden bu dosyaları .gitignore’a eklediğim zamanlar olmuştu; neden olduğunu açıklamak zor şimdi.
API yanıtlarını model sınıfından değil, ayrı bir Resource sınıfından şekillendiriyorum. Model büyüdükçe bu ayrımın değerini daha iyi anlıyorum.
Test yazmak hâlâ bir alışkanlık değil, seçim. 2019’da bunu alışkanlığa dönüştürmek istiyorum.
Önümüzdeki dönem için düşünceler
PHP ve Laravel tarafında derinleşmeye devam edeceğim. Ama bir süredir aklımın bir köşesinde “başka dil” düşüncesi var. Go hakkında şeyler okuyorum, örnekler bakıyorum. Şu an için somut bir adım atmayı planlamıyorum ama bu merak büyümeye devam ediyor.
Frontend tarafında TypeScript’e geçmek istiyorum. Vue projelerinde JavaScript yazarken tip güvencesinin eksikliğini hissediyorum; PHP’de kazandığım alışkanlıkları JavaScript tarafına taşımak mantıklı görünüyor.
Ödeme entegrasyonu geçen yıl büyük bir deneyimdi; bu yıl bildirim sistemi, takvim ve çok dilli destek de aynı şekilde öğretici oldu. 2019’da daha az “öğrenme modu”, daha çok “uygulama modu” olmasını istiyorum. Öğrenilenleri gerçek projeler üzerinde pekiştirmek.
Kısa değerlendirme
Dürüst olmak gerekirse 2018, net bir ilerlemenin olduğu bir yıl. “Şöyle yaptım, şu işe yaradı” diyebileceğim somut şeyler birikti. Ama hâlâ öğrenme yolunun ortasındayım; tam olduğunu düşündüğüm çok az şey var.
Bu günlük, o öğrenme sürecini kayıt altına almak için başlatılmıştı. Geriye dönüp 2014’teki yazılara baktığımda ne kadar mesafe kat edildiğini görmek mümkün. 2018 yazılarına birkaç yıl sonra baktığımda aynı duyguyu yaşamayı umuyorum.