İyi Bir Backend Geliştirici Olmak İçin Yol Haritası

Gökhan Ayrancıoğlu
Delivery Hero Tech Hub
4 min readAug 24, 2021

Bir çoğumuz iyi bir yazılım geliştirici olmak istiyoruz ve bunun için ciddi çaba sarfediyoruz. Bu yolda bazen önemli detayları kaçırıyor ve sadece iyi kod yazarak bu yolda çok büyük adımlar atabileceğimizi düşünüyoruz. İyi bir backend geliştirici olmak için sadece iyi kod yazmak yeterli olmaz.

İyi bir yazılım mühendisi olmaya dair

Kodlama ve konseptleri hakkında neleri bilmemiz gerekiyor kısmını kısatlaca özetleyelim, sonra backend kodlama dışındaki kısımları dikkate alalım. İyi bir backend geliştirici olarak bilmemiz gereken konseptler ve teknolojileri genel olarak listeleyelim. (Bu liste yeni başlayan bir geliştirici için bilinmesi gerekenler listesi değildir.)

  • İyi bir yazılımcı olmak için S.O.L.I.D, Dependency Injection gibi kavramları kesinlikle bilmeli ve uygulayabiliyor olmalısınız.
  • Design Patterns’ler hakkında bilgi sahibi olmalı ve hangi noktalarda kullanabileceğinizde haberdar olmalısınız.
  • Database konseptlerine hakim olmalısınız, SQL ve NOSQL kullanım alanlarını ve kullanımlarını biliyor olmalı ve sql sorguları yazmayı becerebiliyor olmalısınız. SQL için posgresql popülerken nosql için MongoDB oldukça popülerdir, bunlarla başlayabilirsiniz.
  • En az bir backend programlama dilinde uzmanlaşmalısınız; Java, Go, Kotlin, Python, C# ve dahası bunlardan biri olabilir.
  • O dile ait en az bir frameworkü mümküse popüler olanı bilmeli ve onun üzerinde hızlıca proje üretebilir konumda olmalısınız. Java’da Spring buna örnek olarak verilebilir.
  • Rest mimarisini bilmelisiniz.
  • En az bir cache altyapısı öğrenmelisiniz, redis belkide bunlardan en önemlisi olabilir.
  • Web servis kavramına hakim olmalı ve Mikroservice mimarisi hakkında bilgi sahibi olmalısınız. Event-Drivent Development ve Domain Driven Development gibi mimarileri gözden geçirebilir, ihtiyaç doğrultusunda mutlaka uygulamaya çalışmalısınız.
  • Test yazmayı güçlendirmek ve bellirli çatılar altında yazabilmek için TDD(Test-Driven Development), BDD (Behavior-Driven Development) gibi yaklaşılmaları bilmek sizi oldukça ileriye taşıyacaktır.

liste uzayıp gider ama temel olarak bunları bilmeli ve bir çoğunu hali hazırda uygulabiliyor olmalısınız.

Her geçen gün yeni bir trend ve yeni bir altyapı ortaya çıkıyor. İyi bir developer olarak yeni trend ve teknolojiler hakkında bilgi sahibi olmalıyız. En azından ne için üretilmiş ve hangi sorunu çözüyor kısmını bilmeliyiz. Her konu hakkında derin bilgi ve uygulamımıza gerek yok, ama hangi sorunu çözdüğünü bilmemiz gerekiyor. Yeni bir şeyi denemesenizde, ne gibi avantajları olduğunu bilmek çoğunlukla yeterlidir. Böylece benzer bir problemle karşılaştığımızda bu yeni teknoloji belki de bizim çözümümüz için biçilmiş kaftan olacaktır. Bunu kaçırmak istemeyiz :)

Bunun yanında iyi bir yazılımcı yaptığı işle ilişkili alanları iyi gözlemlemeli hatta o alanlar hakkında bilgi sahibi olmalıdır.

İyi bir web backend geliştirici frontend için kod yazmasa bile JS/React/Vue gibi frontend teknolojilerini öğrenmese bile sistemin nasıl işlediğini, objelerin nasıl modelliğini ve error handling yapılarına dair bilgi sahibi olmalıdır. Böylece bir api geliştirilirken nasıl bir request modeli oluşturmak gerektiğinin, hata veya response dönerken hangi yapının frontend için daha iyi olacağının farkında olursunuz. Bu hem backend geliştirirken işleri kolaylaştırır, hem de için zaman kazandırılmış olur, ekip uyumunda da inanılmaz bir iyileşme gözlemlenebilir.

Backend geliştirici olarak unit teste herhalükarda özen göstermeliyiz ve bunu zaten biliyoruz. Aynı şekilde test ekibiyle de uyumlu olacak şekilde özellikle backend gibi sistemlerde kendi api testlerinizin yapabiliriz ve Postman gibi araçlar aracılığıyla requestlerini hazırlayabilir, response örneklerini kaydedebilirsiniz. Böylece test mühendislerine kolayca uygulayabilecekleri bir altyapı ve modelleme sağlanmış olursunuz. Bu tarz yapılar Review toplantılarında da backend demo’sunu yapmanıza oldukça yardımcı olacaktır.

Devopsa hazır hale gelebilmek için Docker alt yapısı hakkında bilgi sahibi olmalısınız. En azından Docker file oluşturma işini üstlenebilir ve böylece projenin alacağı parametreler önceden hazırlanmış olur, devops ekibinin hızlıca CI/CD süreçlerine projeyi entegre etmesine yardımcı olacak bir altyapı sunmuş olursunuz.

İletişim herhangi bir iş ya da meslek grubunda en önemli maddedir. Ekibin haberdar olması gereken teknik endişeleri, sorunları ya da engelleri direkt olarak dile getirebilir ve projenin ivmeli bir şekilde gelişimine katkı sağlayabilirsiniz. Engel ve sorunlarda bayrak kaldırabilir, Jira gibi araçlar kullanılıyorsa buralarda durum hakkında güncellemeleri belirtebilirsiniz. İlgili kişi ya da kişileri bilgilendirerek destek isteyebilirsiniz.

Bir işte iyi olmanın en önemli yolu sizin de bildiğiniz gibi bir hedef koymak ve her zaman daha iyisini istemektir. Hedefiniz zaten olacak, daha iyisini istemenin kodsal karşılığını düşünürsek, aklımıza gelen bir çözümün daha iyisi olup olmadığını kontrol etmek, eğer varsa mutlaka uygulamaya çalışmak olmazsa olmazımız olmalıdır. Egonun kodda yeri olmamalıdır.

Bir konuya hakim olsak da daha iyisi var mı kontrolü herzaman daha iyiye gidiş için harika bir yoldur.

Kitap Önerileri:

  • Clean Code — A Handbook of Agile Software Craftsmanship
  • Refactoring — Improving The Design Of Existing Code
  • Design Patterns — Elements of Reusable Object-Oriented Software
  • Code Complete — A practical handbook of software construction

--

--

Gökhan Ayrancıoğlu
Delivery Hero Tech Hub

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