Backend ve frontend dengesi diye bir şey var ve bunu anlayana dek epey vakit harcadım. Bir dönem sadece sunucu taraflı kod yazıyordum. API'ler, veritabanı sorguları, iş mantığı katmanları. Arayüzle hiç ilgilenmiyordum çünkü ilgimi çekmiyordu. "Arka taraf sağlamsa ön taraf zaten çalışır" diye düşünürdüm. Yanlış düşüncenin güzel bir örneği bu. Gün geldi, kendi başıma bir uygulama yazmak istedim. Tamamen. Baştan sona. Kafamda backend hazırdi zaten. Ama kullanıcı ne görecekti? Bir terminal çıktısı mı? O zaman arayüze geçtim. Ve bütün düşüncelerim sarsıldı. Backend ve frontend dengesini anlamak için arayüze dokunmak zorunda kaldım. Kullanıcının uygulamada ne hissedeceğini, hangi sırayla adım atacağını, bir hata mesajını nasıl okuyacağını düşünmek, bunlar backend yazarken hiç aklıma gelmeyen sorulardı. Şimdi yanıtlamak zorundaydım. İlk arayüz denemem çirkin çıktı. Kabul ediyorum. Düğmeler yanlış yerdeydi, metinler okunaksızdı, renk seçimlerim berbattı. Ama daha önemlisi: Kullanıcının ne yapacağını anlayamayacağı bir akış tasarlamıştım. Çünkü o akışı kullanıcı gözünden değil, veritabanı şeması gözünden kurgulamıştım. O hataları görünce geriye, backend koduma döndüm. Ve orada da hatalar fark ettim. API yanıt yapılarım arayüzde kullanılamayacak biçimdeydi. Bir veriyi göstermek için beş farklı API çağrısı yapmak gerekiyordu. Neden? Çünkü backend ve frontend dengesini düşünmeden yazmıştım. Arayüz yazmak beni daha iyi bir backend geliştirici yaptı. Bunu söylemek birkaç yıl önce tuhaf gelirdi. Ama kullanıcı deneyimi üzerinde düşünmek, API tasarımını doğrudan etkiliyor. Bir uç noktanın hangi veriye ihtiyaç duyacağını anlamak, o uç noktayı kullananın ne isteyeceğini bilmekle başlıyor. Şimdi yeni bir proje başlarken her iki tarafı birlikte düşünüyorum. Arayüzde hangi ekran var, orada hangi veriye ihtiyaç var, o veri nasıl taşınacak. Bu sıralama tersine çevrildi ve her şey çok daha tutarlı hale geldi.