Kafayı yiyecektim arkadaşlar. Şaka gibi ama, bir otomasyon betiğini PyQt5 ile sarmalayıp kullanıcı dostu(!) bir arayüze kavuşturmaya karar verdim. "Birkaç buton, birkaç input alanı, hallederim" dedim. Meğerse kendi kuyumu kazıyormuşum.
Arayüz Cehennemine İlk Adım
Backend'de her şey net: request gelir, logic işler, response döner. Frontend'de ise bir butona tıklayınca hangi widget'ın nereye kaydığını, hangi layout'un neden patladığını anlamaya çalışıyorsun. Bir grid'i hizalamak için harcadığım saatler, backend'de yazdığım kompleks bir algoritmadan daha fazla beyin hücresi yaktı.
Event Handler Kabusu
Backend'deki temiz, soyutlanmış fonksiyonlarımın hepsi, frontend'de birbirine dolanmış event handlerlara dönüştü. Bir butonun `clicked` sinyali, onlarca değişkenin state'ini değiştiriyor ve birden her şey birbirine giriyor. Debug etmeye çalışırken, backend'deki güzel stack trace'ler yerine, sadece "pencere yanıt vermiyor" hatasıyla baş başa kalıyorsun. StackOverflow'da bile doğru düzgün cevap bulamadığım oldu.
"Çalışıyor" ile "Kullanılabilir" Arasındaki Uçurum
En büyük ders bu oldu. Backend'ci mantığımla, bir şeyin çalışmasını "tamam" sayıyordum. Ama frontend'de "çalışıyor" demek, kullanıcı deneyimi açısından hiçbir şey ifade etmiyor. Butonların sırası, renk kontrastı, hata mesajlarının netliği, loading indicator'ü... Bunların hepsi, backend'deki en sıkıcı business logic'ten daha kritik hale geliverdi. Meğerse sorun, kodun değil, UI/UX düşüncesinin şuramdaymış: sıfır.
Neyse ki sonunda, biraz Qt Designer'a, bolca da sabra başvurup işi kotardım. Ama şunu anladım: İyi bir backend developer olmak, seni kötü bir frontend developer yapmaya yetiyor, hatta teşvik ediyor.
Siz de böyle "ben hallederim" diyip frontend bataklığına saplandığınız anlar oldu mu? Bu geçişi daha az acılı hale getirmenin bir yolu var mı? Framework önerileriniz? (Qt dışında
)
Backend'de her şey net: request gelir, logic işler, response döner. Frontend'de ise bir butona tıklayınca hangi widget'ın nereye kaydığını, hangi layout'un neden patladığını anlamaya çalışıyorsun. Bir grid'i hizalamak için harcadığım saatler, backend'de yazdığım kompleks bir algoritmadan daha fazla beyin hücresi yaktı.
Python:
# Hayalimdeki basit pencere:
self.setGeometry(300, 300, 350, 250)
# Gerçekte olan:
# "Neden bu label ortalanmıyor?!"
Backend'deki temiz, soyutlanmış fonksiyonlarımın hepsi, frontend'de birbirine dolanmış event handlerlara dönüştü. Bir butonun `clicked` sinyali, onlarca değişkenin state'ini değiştiriyor ve birden her şey birbirine giriyor. Debug etmeye çalışırken, backend'deki güzel stack trace'ler yerine, sadece "pencere yanıt vermiyor" hatasıyla baş başa kalıyorsun. StackOverflow'da bile doğru düzgün cevap bulamadığım oldu.
En büyük ders bu oldu. Backend'ci mantığımla, bir şeyin çalışmasını "tamam" sayıyordum. Ama frontend'de "çalışıyor" demek, kullanıcı deneyimi açısından hiçbir şey ifade etmiyor. Butonların sırası, renk kontrastı, hata mesajlarının netliği, loading indicator'ü... Bunların hepsi, backend'deki en sıkıcı business logic'ten daha kritik hale geliverdi. Meğerse sorun, kodun değil, UI/UX düşüncesinin şuramdaymış: sıfır.
Neyse ki sonunda, biraz Qt Designer'a, bolca da sabra başvurup işi kotardım. Ama şunu anladım: İyi bir backend developer olmak, seni kötü bir frontend developer yapmaya yetiyor, hatta teşvik ediyor.
Siz de böyle "ben hallederim" diyip frontend bataklığına saplandığınız anlar oldu mu? Bu geçişi daha az acılı hale getirmenin bir yolu var mı? Framework önerileriniz? (Qt dışında