Bu son yazıda Nasıl Kıdemli / Senior Geliştirici Nasıl Olunur konusu etrafında çeşitli okuma önerileri sunmaya ve birkaç küçük hayat tavsiyesinde bulunmaya çalışacağım. Önceki yazımı da okumadan geçmeyin.
Senior geliştirici olmanın basamakları
Elbette bu konuda bir standart olduğunu söylenemez lakin şuradaki sınırlandırmayı esas alırsak geliştirici olmanın basamakları Trainee/Stajyer, Junior/Çırak, Mid-level/Orta Seviye, Senior / Kıdemli, Leader/Lider şeklinde sınıflandırılabilir. Stajyer seviyesi ile Junior seviyesi bazen aynı veya yakın anlamda da kullanılabilir. Junior seviyesinde çok bir sorumluluk yüklenmediğiniz ve görece küçük görevleri hallettiniz ve tamamladığınız her görevin dikkatli gözlerce izlendiği dönemdir. Belli bir konuda uzman olmanız doğal olarak beklenmez.
Mid-level ilgili makalede 2-3 yıl deneyimli geliştirici olarak tanımlanmış. Bunun pratik karşılığı kısıtlı yönlendirme altında bir projeyi bitirebilecek seviyede olan geliştiricidir. Senior ise “hataları analiz edebilen ve onlardan ders alabilen kişidir”. Bu seviyeye erişmek için 5 yıl (10.000 saat) emek vererek çalışmanın yanında, kullandığı tüm teknolojilere hakimiyet de gerekir. Liderlik ise artık kod yazmak yerine sonu gelmez mitinglere girip kararlar aldığınız ve koda değil ürüne odaklandığınız dönemdir. Bu dönemde çoğu geliştiricinin danışmanlık yapmaya yöneldiği de görülmektedir.
Mid-level ile Senior arasında bir ayrım yapmak gerekirse; Senior geliştirici sadece kendisinin değil takım arkadaşlarının da okuyacağını gözeterek kod yazan, kodunun unit testlerini yazan, kodunu belgelendiren ve agile yazılım döngüsüne hâkim olan kişi olduğunu vurgulamak gerek.
Lütfen yazıda referans gösterilen bağlantıları da okuyun! Yazıyı uzatmamak için referans bağlantılar eklemeyi tercih ettim. Bol bol belge okumak, Senior geliştirici olmanın “olmazsa olmaz”ıdır.
Nasıl senior (kıdemli) geliştirici olunur?
Çalışmadan, yeni teknolojiler ve teknikler öğrenmeden, sadece zamana bırakarak kıdemli geliştirici olmak tamamen hayaldir. İhtiyaç gerektiği için, ihtiyaç kadar öğrenerek yazılım konusunda uzmanlaşmak mümkün değildir.
Senior geliştirici olmak için neler öğrenmek lazım?
Bu yazıyı hazırlarken PHP ile ilgili çok sayıda kaynağı tarama fırsatım oldu. Çok fazla yeni teknoloji var ve nereden başlarsanız başlayın, hata yapmış sayılmazsınız.
Öncelikle patika.dev sitesindeki Orta Seviye PHP patikasına bir şans verin. SQL dersinin PostgreSQL üstünden verilmiş olması dikkat çekici, genelde MySQL tercih edilir. Deployment eğitimi Docker, Kubernetes ve Heroku konularını içeriyor. Yazılım Dünyasındaki Kariyer Basamakları temel olarak iş hayatınıza yol verecek tavsiyeler barındırıyor. Patika içinde yer almayan Freelance ve Remote Çalışma İş Süreçleri eğitimi ise Freelance veya Remote çalışmayı planlıyorsanız mutlaka bakılması gereken bir eğitim.
İleri Seviye PHP patikası aynı şekilde REST API, NoSQL, Design Pattern/Tasarım Desenleri, Mikro Servisler konularını işliyor. Mikro servisler giderek yaygınlık kazanıyor. Çoğu büyük projede verim açısından mikro servis mimarisinin kullanıldığı görülüyor.
Not: Patika.dev sitesinde Java, Python, Swift, JavaScript, React, Node.js, GO, .Net Core gibi daha pek çok ücretsiz eğitim bulunuyor. Kendinizi PHP ile sınırlamadan bu konularda da kendinizi geliştirebilirsiniz.
İleri Seviye Yazılım Geliştirme yazısına mutlaka bakmanızı öneririm, İleri Seviye Yazılım Geliştirme süreçlerine aşina olmadan senior (kıdemli) geliştirici olmak elbette imkansız.
Frameworklerin kişileri tembelleştirdiği iddia edilmektedir. Laravel sadece bir Framework olmaktan kendi başına aranan bir özellik haline gelmiştir. Laravel öğrenmek ileriye dönük olarak iş bulmanızı kolaylaştıracaktır. Laravel sürekli geliştirilen bir framework ve 9. sürümü bu yazı hazırlanırken (8 Şubat 2022) yayınlandı. Laravel 9 için özel ve ücretsiz bir eğitim şimdilik bulunmuyor. Udemy sitesi üstünden Laravel ile Sıfırdan Eticaret Projesi Eğitimi, Sıfırdan İleri Seviye Laravel Eğitimi ve Sıfırdan Laravel 8 Öğreniyorum 2021 eğitimlerine denk geldim. Türkçe olmaları sebebiyle bu eğitimleri göz önünde bulundurmak isteyebilirsiniz.
PHP geliştirirken uygulanabilecek kimi pratik yaklaşımlar var. Bunlarla ilgili 30+ PHP Best Practices for Beginners veya 20+ PHP Best Practices That You Must Follow yazılarına bakabilirsiniz. İlaveten Arka Uç Örnek Yöntemler yazısı da genel olarak faydalıdır.
PHP ve OOP (Nesne Yönelimli Programlama) ile ilgili pek çok Türkçe kaynak bulunuyor. Yusuf Sezer’in PHP Dersleri güzeldir ve konuya pratik açıdan yaklaşır. Awesome PHP; PHP ile yazılmış temel çatıları, içerik yönetim sistemlerini, mikro çatıları, yönlendiricileri, e-posta gönderim kütüphanelerini, resim işleme kütüphanelerini ve daha pek çok aracı içeren bir listedir.
PHP ve Tasarım Desenleri için şu siteden faydalanabilirsiniz. PHP ile Temiz Kod yazmak üstüne hazırlanmış Clean Code PHP sayfası da erkenden özümsenmesi gereken bir kaynaktır.
PHP için güncel eğitim kitapları
PHP 5.X serisinin desteği resmi olarak 2018 yılı Aralık ayında son buldu. PHP 7.X serisinin desteğinin Kasım 2022 itibariye sona ermesi planlanıyor. PHP 8 öğrenmek bu aşamada kaçınılmaz gibi görünüyor. PHP 7 ve PHP 8 ile ilgili şu kaynakları bulabildim. Çok muhtemel çeşitli çevrimiçi kütüphanelerde bu kitapları bulabilirsiniz:
Programming PHP, 4th Edition
Kevin Tatroe ve Peter MacIntyre tarafından 2020 Mart ayında O’Reilly etiketiyle 4. baskısı yayınlanmış olan bu kitap en son PHP 7.4 için güncellenmiş. Kitabın özellikle Security kısmını okumanızı tavsiye ederim.
The Art of Modern PHP 8
Joseph Edmonds tarafından hazırlanmış olan kitap OOP, MVC, Composer, Tasarım Desenleri, Temiz Kod ve Dependency Injection gibi konuları işlerken PHP 8.0 ve PHP 8.1 ile gelen Union konularını da ele alıyor. Tamamen güncel bir kitap ve OOP temellerini de ele alıyor.
PHP 8 Objects, Patterns, and Practice
Matt Zandstra tarafından hazırlanmış bu kitap Nesneler, Tasarım Desenleri ve En İyi Pratikler konularına odaklanıyor. Kitabın III. Bölümü PHP Standartları, Composer, Sürüm Takibi ve Git, PHPUnit ile unit test yazma ve Vagrant konularını içeriyor.
Pro PHP 8 MVC
Christopher Pitt tarafından hazırlanmış kitap tamamen MVC konusuna odaklanıyor. Framework konusunun temellerine iniyor ve Router, Template Engine, Validator, Veritabanı Kütüphanesi, ORM, Dependency Injection konularını işliyor.
Günceli takip edin
PHP dünyasında gerçekleşen güncel gelişmeleri takip etmek için PHP Weekly sitesini takip etmenizde yarar var. Haftalık bültenler şeklinde son gelişmelerden haberdar olmak daima faydalıdır. Muhammed Hilmi Koca tarafından hazırlanan ve 74 sayıya ulaşmış olan Yazılımcılar İçin Hafta Sonu Okumaları ise sadece PHP değil, yazılımla ve DevOps ile ilgili güncel trendleri takip etmenizde yardımcı oluyor.
Geliştiriciler için hayat tavsiyeleri
Projenizi koruyun!
Fikrinizin çalınması bilgisayarınızın çalınması kadar kötü bir tecrübe. Proje sunduğunuz kurumların önerdiğiniz projeye hayır deyip, fikrinizin üsten konmaya çalışması veya konması çok acı bir tecrübe. Fikrinizi korumayı ihmal etmeyin ve yabancı kişilere projenizi anlatırken iki kere düşünün!
Çok fazla projeye girişmeyin!
Üstünden kalkamayacağınız kadar çok projeye girişmek yazılım konusunda derinleşmeyi zorlaştırır ve çok kısa zamanda sizi tükenmişlik sendromuna sürükler. Yazılım harici projeleriniz sizi yazılım dünyasından koparacak kadar vaktinizi almasın.
Projenizi hayata geçirin ve yükü paylaşın!
Projeyi kodlamak kadar onu ayakta tutmak da önemli. Teknoloji üstüne bir haber sitesi hazırladığınızı varsayalım. Yazarlardan gelen haberleri tek tek okuduğunuzu, düzenlediğinizi, siteye girdiğinizi, yorumları tek tek onayladığınızı, gerekli olduğu kadar cevap yazdığınızı varsayalım. Tüm işlemleri sizin tek başına yapmanız yazılım ile aranıza mesafe koymanıza neden olacaktır. Bunun yerine yükü paylaşacak arkadaşlar edinmeniz çok daha doğrudur.
Yeni ufuklara açılın!
Çoğu şirket işe alırken gösterdiği eli açık tutumu zam vakti gelince korumakta zorlanıyor. Üstüne bir de enflasyon oranın bile altında zam aldıysanız moralinizin bozulmaması içten bile değil. İki yıldan sonra artık işler monotonlaşmaya başlamışsa ve size katacağı çok bir şey yoksa yeni ufuklara açılmaktan çekinmeyin. Daima daha fazlasını öğrenebileceğiniz daha büyük şirketleri hedefleyin. Çoğu zaman bunun maaşınıza da olumlu etkisi olacaktır.
Yeni diller, yeni teknolojiler öğrenin!
Yazılım dünyası PHP’den ibaret değil! Yeni diller ve teknolojileri öğrenmekten çekinmeyin.