İnfografik: Adapter deseni farklı dış dilleri ortak modele çevirir, Strategy deseni hangi adaptörün çalışacağını seçer — Controller'dan Use case'e, oradan MenuAdapter portuna, sonra XFirmMenuAdapter (X API, JSON) ve YFirmMenuAdapter (Y API, XML)
8 Ağu 2026 · 7 dk

Adapter ve Strategy: Dış Servisleri Domain'in Dışında Tutmak

Birden fazla dış servisle entegre olurken hiçbirinin iş mantığınıza sızmasına izin vermemek: tek bir port, birden çok adaptör ve hangi adaptörün çalışacağını seçmenin iki yolu.

İnfografik: solda iç içe geçmiş if-else bloklarından oluşan Arrow Anti-Pattern, sağda aynı kuralların art arda erken return'lerle yazılmış hali ve en sonda mutlu yol
8 Ağu 2026 · 8 dk

Clean Code: Guard Clauses ve Early Return

Arrow Anti-Pattern’den kurtulup iş kurallarını düz bir akışta yazmak: Guard Clauses, Early Return ve bunların unit testlerle nasıl test edileceği.

İnfografik: rezervasyon isteği zincirin halkalarından sırayla geçiyor — uçuş, koltuk, yolcu yasaklı listesi, pasaport ve tutar kontrolleri onaylanıyor, promosyon kodu kontrolünde zincir duruyor
8 Ağu 2026 · 12 dk

Chain of Responsibility: Karmaşık Kuralları Bir Pipeline'a Dönüştürmek

Havayolu rezervasyonundaki koltuk, no-fly, pasaport, tutar ve promosyon kontrollerini bağımsız zincir halkalarına ayırarak Spring Boot’ta Chain of Responsibility uygulaması.

İnfografik: bir havalimanı terminalinde tek bir kapı olarak çizilmiş Facade; istek bu kapıdan giriyor, arkasında ödeme sistemi, bilet oluşturma, bagaj sistemi, bildirim gönderimi ve sadakat puanları duruyor
8 Ağu 2026 · 9 dk

Facade Pattern: Karmaşık Alt Sistemleri Tek Bir Kapının Arkasına Saklamak

Facade Pattern, karmaşık alt sistemleri ortadan kaldırmaz; onları tek bir kapının arkasına saklar. Spring Boot’ta gerçek bir havayolu rezervasyon senaryosu üzerinden görelim.

İnfografik: findAll() sonrası döngüde getBooks() çağrısı 1 ana sorgu artı N ilişki sorgusu üretiyor; altında dört çözüm — JOIN FETCH, @EntityGraph, batch fetching ve DTO projection
8 Ağu 2026 · 9 dk

N+1 Query: ORM Kullanırken Sessiz Performans Tuzağı

Ana kayıtları tek sorguda çekip ilişkiler için ek sorgular çalıştırmak: N+1 problemi nasıl oluşur, nasıl fark edilir ve hangi çözüm ne zaman kullanılmalı?

Çan eğrisi capsi: iki uçta da “everything is a CRUD”, ortada iş kurallarını ve doğrulamaları sayan uzun bir itiraz
30 Mar 2025 · 16 dk

Geliştirici olmak için izlediğim yol

Zaman zaman birileriyle sohbet ederken “Nasıl geliştirici olunur?”, “Zaten geliştiriciyim ama kendimi nasıl daha iyi bir noktaya taşırım?” gibi sorular geliyor. Bu yazıda doğrudan bu sorulara cevap vermektense, kendi yolculuğumu, yaptığım hataları, doğruları ve yanlışları paylaşmak istiyorum. Anlatacaklarım bu konu hakkında fikir edinmenize yardımcı olacaktır diye umuyorum. …