Bu on örnek, önceki görevlerimde karşılaştığım somut sorunları nasıl ele aldığımı anlatıyor. Her birinde kısıtı, aldığım teknik kararı ve ortaya çıkan sonucu bulabilirsiniz. İşveren adlarını paylaşmıyorum.
Veri performansı
Yaklaşık 2 saniyeden 800 milisaniyeye
İki saniyelik bekleme, bir görevin akışını kesmeye yeter. Bu üretim sisteminde gecikme önemli kullanıcı yolculuklarında hissediliyordu.
Sorunu PostgreSQL içindeki veri yolunda izledim; bölümleme, indeksler, tetikleyiciler ve kalıcılığı birlikte ele aldım. Değişiklikten sonra algıya değil, ilk ölçümle yaptığım karşılaştırmaya dayandım.
Ortalama servis yanıtı yaklaşık iki saniyeden 800 milisaniyeye düştü.
İş sürekliliği
İki haftada çalışan bir alternatif
Bir erişim kısıtlaması ekibin kullandığı kritik iletişim aracını devre dışı bıraktı. Erişimin kendiliğinden dönmesini beklemek günlük işte boşluk yaratacaktı.
Rust, Go, Tauri ve Vue ile platformlar arası tünelleme uygulaması ve tarayıcı eklentisi araştırdım, geliştirdim, test edip dağıttım. Alternatif yol, insanların kullandığı cihazlarda çalışmalıydı.
Çözüm erişimi geri sağladı ve ilgili düzenli altyapı maliyetini yaklaşık %98 azalttı.
Çevrimdışı veri
Bağlantı olmadan çalışan ürün akışları
Bağlantının kopması, yapılan işin kaybolması anlamına gelmemeli. Asıl zorluk, canlı değişiklikleri çevrimdışıyken koruyup ağ döndüğünde birleştirmekti.
Gerçek zamanlı olayları IndexedDB içinde tuttum ve karmaşık nesne durumları için uzlaştırma katmanı kurdum. Eşitleme mümkün olana kadar iş akışı devam edebildi.
Temel iş akışları çevrimdışı sürdü ve bağlantı döndüğünde eşitlendi.
Ön yüz mimarisi
Paralel teslim için açık sınırlar
Ekip büyüdükçe ortak veri akışları sürtüşme yarattı. Özellikler, her değişikliğin aynı sınırlara çarpmadığı bir alana ihtiyaç duyuyordu.
Vue uygulamasına belirgin özellik sınırları, merkezi olaylar ve öngörülebilir veri sahipliği kazandırdım. Mimari, onu kuran kişiden öte, paralel çalışan ekip için işe yaradı.
Geliştiriciler paralel çalışabildi; yapı ilk ekibin ötesinde kullanılmaya devam etti.
Geliştirici deneyimi
Tek komutla ortam kurulumu
Çok sayıda elle yapılan adım, yeni bir ekip üyesinin ilk gününü hata ayıklamaya dönüştürür. Ortamı kurmak başlı başına bir iş olmuştu.
Tekrarlanabilir adımları Git hooks, Bash ve CI içine taşıdım; kalan kararları belgeledim. Devir, ezberlenecek bir liste yerine çalıştırılacak bir komuta dönüştü.
Yeni çalışanlar ilk gün ortamı tek komutla hazırlayabildi.
CMS ve SEO
Düzenlenebilir içerikle uygulama hissi
Sitenin CMS kolaylığına, arama motorlarının erişebileceği sayfalara ve uygulama akıcılığına aynı anda ihtiyacı vardı. Bunlardan birini kaybetmek deneyimi zayıflatacaktı.
Vue ile PHP ve WordPress yapılarını özel hydration, yönlendirme ve içerik yönetimiyle birleştirdim. Editörlerin akışı korundu; ziyaretçiler tam sayfa yenilemesi olmadan gezebildi.
Site CMS akışlarını ve arama dostu adresleri korurken uygulama benzeri davranış kazandı.
Kampanya teslimi
Üç haftada mobil kampanya
Mobil kampanyanın kısa sürede mekân bilgisi, katılım takibi, analitik ve mesajlaşmaya ihtiyacı vardı. Gereken Angular altyapısı benim için yeniydi.
Üç gün içinde Angular ile üretken hâle gelip uygulamayı ve servis entegrasyonlarını kurdum. Takvim, birbirinden kopuk ekranlar değil çalışan bir bütün gerektiriyordu.
Angular ile üç günde üretken hâle geldim; uygulamayı üç haftada teslim ettim.
Su kaynakları farkındalığı
Tarayıcı sınırlarını aşan 3D anlatım
Yaratıcı yön, suyu animasyonlu 3D ile anlatmak istiyordu. O dönemde WebGL desteği tutarsızdı; bir tarayıcıda çalışan sahne diğerinde hikâyeyi aktaramayabilirdi.
Blender ile modelleme ve render işini üstlenerek anlatımı taşıyan sprite görselleri hazırladım. Canlı 3D güvenilir olduğunda bunları WebGL ile birleştirdim.
Görsel hikâye, her sahnede canlı 3D gerektirmeden farklı tarayıcılarda çalışabildi.
Kadınların güvenliği
Risk anında dikkat çekmeyen çıkış
Riskli bir ortamda kadınların güvenliği kampanyasını okuyan biri için sayfadan ayrılmak, sayfayı bulmak kadar önemli olabilir. Sıradan bir çıkış mevcut gezinme akışında belirgin iz bırakabilirdi.
Hızlı çıkışta kampanya sayfasının kendi geçmiş kaydını yönetmek için History API ve popstate kullandım. Amaç tarayıcının tüm geçmişini silmek değil, sayfadan daha dikkat çekmeyen bir çıkış sağlamaktı.
Çıkış akışı, kampanya sayfasının mevcut tarayıcı geçmişinde belirgin bir kayıt olarak kalma olasılığını azalttı.
Mobil AR
Ürünleri gerçek ortamda önizleme
Ürün görseli biçimi gösterir ama ürünün müşterinin mekânında nasıl duracağını göstermez. Eksik bağlam ürünün çevresindeki gerçek alandı.
3D tasarım varlıklarını Vectary ile mobil WebXR ve AR önizlemelerine dönüştürdüm. Telefon kamerası, ölçeği ve yerleşimi bağlam içinde inceleme aracı oldu.
Müşteriler ürün modellerini akıllı telefon kamerasıyla kendi ortamlarında yerleştirip inceleyebildi.