Bir projeyi geliştirirken doğal olarak en çok kod tarafına odaklanıyoruz. Tasarım tamamlanıyor, sayfalar hazırlanıyor, gerekiyorsa backend kuruluyor, son hatalar çözülüyor ve en sonunda proje deploy ediliyor.
Domaini açıyorsun, site geliyor.
İlk bakışta iş bitmiş gibi.
Ama zamanla şunu daha fazla düşünmeye başladım:
Bir web sitesinin çalışıyor olması ile gerçekten yayına hazır olması aynı şey değildir.
Özellikle teslim odaklı veya hızlı geliştirilen projelerde bazı detaylar ikinci planda kalabiliyor. Üstelik bunların çoğu sitenin çalışmasını doğrudan engellemiyor. Site açılıyor, kullanıcı sayfalar arasında gezebiliyor, formlar ekranda duruyor.
Asıl eksikler çoğu zaman proje gerçek kullanıcıyla buluşmaya başladığında ortaya çıkıyor.
Deploy Etmek Neden Bitiş Noktası Değil?
Ben deploy işlemini artık projenin son adımı olarak görmüyorum.
Daha çok geliştirme ortamından gerçek dünyaya geçtiğimiz nokta gibi düşünüyorum.
Çünkü production ortamına çıktığımız anda farklı sorular ortaya çıkıyor.
Sayfanın başlığı doğru mu?
Google siteyi görebiliyor mu?
İnsanlar siteye nereden geliyor?
Mobilde gerçekten düzgün görünüyor mu?
İletişim formu production ortamında da çalışıyor mu?
Birisi WhatsApp veya LinkedIn üzerinden linki paylaştığında nasıl bir önizleme çıkıyor?
404 sayfası var mı?
Eski bir URL değiştiyse doğru yere yönleniyor mu?
Domain ve SSL tarafında sorun var mı?
Bunların hiçbiri projenin ana özelliği olmayabilir. Ama hepsi gerçek kullanımın bir parçası.
Mesela bir kurumsal siteyi düşünelim. Ana sayfa, hakkımızda ve iletişim sayfaları eksiksiz olabilir. Tasarım da gayet iyi görünebilir.
Ama bütün sayfalarda tarayıcı başlığında sadece Website yazıyorsa veya Google sonuçlarında sayfayı anlatan düzgün bir açıklama bulunmuyorsa, bana göre proje hâlâ tam anlamıyla yayına hazır değildir.
Meta title ve description gibi temel bilgiler burada devreye giriyor.
Bunları sadece “SEO yapalım” gözüyle görmüyorum. Sayfanın ne olduğunu hem arama motorlarına hem de kullanıcıya anlatan temel bilgiler bunlar.
Site Yayında Ama Google'da Neden Görünmüyor?
Yayın sonrasında en kolay yanlış anlaşılabilecek konulardan biri bu.
Müşteri domaini tarayıcıya yazıyor ve site açılıyor. Ardından Google'a şirketin veya sitenin adını yazıyor ama sonuçlarda göremiyor.
Doğal olarak şu soru geliyor:
“Site yayında ama Google'da neden çıkmıyor?”
Burada iki farklı konuyu birbirinden ayırmak gerekiyor.
Bir sitenin internette erişilebilir olması, Google tarafından hemen bulunacağı veya arama sonuçlarında üst sıralarda çıkacağı anlamına gelmez.
Tarayıcıdan siteye ulaşabiliyor olmamız, temel olarak domainin ve sunucunun çalıştığını gösteriyor.
Google tarafında ise ayrı bir süreç var.
Google önce sayfayı keşfetmeye çalışıyor, ardından tarıyor ve uygun bulursa dizinine ekliyor. Yani kabaca Google'ın o sayfadan haberdar olması ve içeriğini kendi sistemine alması gerekiyor.
Özellikle yeni bir domain veya yeni yayınlanmış bir site için bunun anında gerçekleşmesini beklemek doğru değil.
Burada önemli bir ayrım daha var:
Google tarafından dizine eklenmek ile Google'da üst sıralarda çıkmak aynı şey değildir.
Bir sayfa Google'ın dizininde bulunabilir ama belirli bir aramada çok gerilerde olabilir.
Bu artık sıralama tarafıdır.
“Site Google'da hiç yok” problemi ile “site neden ilk sayfada değil?” problemi aynı şey değil.
Bence bu ayrımı proje sahibine de doğru anlatmak gerekiyor. Çünkü yayına birkaç saat önce çıkmış bir sitenin hemen belirli kelimelerde üst sıralarda görünmesi beklenebiliyor.

Arama Motorları İçin Unutulan Detaylar
Bir sitenin Google tarafından keşfedilmesini tamamen şansa bırakmak zorunda değiliz.
Ben yayın sürecinde Google Search Console tarafının da düşünülmesi gerektiğini düşünüyorum.
Search Console üzerinden Google'ın belirli bir URL hakkında ne bildiğini görebiliyoruz. URL İnceleme aracıyla sayfanın dizinde olup olmadığını kontrol etmek, canlı URL'yi test etmek ve gerektiğinde dizine ekleme isteğinde bulunmak mümkün.
Bu tabii ki:
“Butona bastım, artık kesin Google'da çıkacak.”
anlamına gelmiyor.
Google da dizine ekleme isteğinin sonuç garantisi vermediğini belirtiyor.
Ama en azından elimizde ne olduğunu anlamamızı sağlayan bir araç oluyor.
Aynı şekilde sitemap.xml dosyasının kontrol edilmesi de önemli.
Sitemap'i kabaca sitenin önemli URL'lerini arama motorlarına bildirdiğimiz bir liste gibi düşünebiliriz. Özellikle yeni veya çok sayıda sayfası bulunan sitelerde keşif sürecine yardımcı olabilir.
Ama sitemap göndermek de her sayfanın kesin olarak dizine alınacağı anlamına gelmiyor.
Bir diğer konu robots.txt.
Bu dosya temel olarak arama motoru botlarının sitenin hangi bölümlerini tarayabileceğini yönetiyor.
Bunun yanında yanlışlıkla bırakılmış bir noindex etiketi veya hatalı canonical kullanımı gibi detaylar da sayfaların Google tarafında beklediğimiz şekilde görünmesini engelleyebiliyor.
Özellikle staging ortamından production'a geçerken noindex unutulması bence kontrol edilmesi gereken şeylerden biri.
Çünkü böyle bir durumda site tamamen çalışıyor olabilir.
Sadece arama motoruna hâlâ:
“Bu sayfayı dizine ekleme.”
diyor olabiliriz.

Kullanıcı Davranışlarını Ölçmek
Bir proje yayına çıktıktan sonra benim için başka bir soru daha başlıyor:
İnsanlar bu siteyi nasıl kullanıyor?
Burada Google Analytics 4 gibi analiz araçları devreye giriyor.
Analytics kurmayı yalnızca ziyaretçi sayısını görmek olarak düşünmüyorum.
Hangi sayfalara daha fazla giriliyor?
Kullanıcı hangi kanaldan geliyor?
Bir sayfadan sonra siteyi terk ediyor mu?
Yaptığımız bir değişiklik gerçekten kullanıcı davranışını etkiledi mi?
Bu tarz sorulara veri olmadan cevap vermek zor.
Özellikle site geliştirilmeye devam edecekse, yayından sonra ne olduğunu görebilmek önemli hale geliyor.
Tabii kullanılan analiz aracına göre çerez, gizlilik ve kullanıcı onayı gibi konuların da ayrıca değerlendirilmesi gerekiyor.
Benim açımdan önemli olan nokta şu:
Bir siteyi yayına çıkarıp sonrasında tamamen kör şekilde bırakmamak.
Analytics kodunu eklemek de tek başına yeterli değil. Production ortamında gerçekten veri gelip gelmediğini kontrol etmek gerekiyor.
Çünkü projede kodun bulunması, sistemin doğru çalıştığı anlamına gelmeyebilir.
Sosyal Medyada Link Paylaşımı ve OG Görselleri
Arama motorlarının dışında başka bir giriş noktası daha var: sosyal medya ve mesajlaşma uygulamaları.
Bir blog yazısı, ürün sayfası veya proje linki WhatsApp, LinkedIn, Discord gibi bir yerde paylaşıldığında çıkan kart bazen kullanıcının siteyle ilk karşılaşması oluyor.
Başlık ne görünüyor?
Açıklama doğru mu?
Görsel var mı?
Yoksa sadece düz bir URL mi çıkıyor?
Open Graph etiketleri bu noktada önem kazanıyor.
og:title, og:description, og:image ve og:url gibi alanlarla sayfanın paylaşım sırasında nasıl temsil edileceğine dair bilgi veriyoruz.
Önceki yazımda da OG görsellerinin neden önemli olduğundan bahsetmiştim.
OG Görsel Nedir? Web Sitelerinde Ne İşe Yarar ve Next.js'te Nasıl Kullanılır?
Ben bunu da artık yayın sürecinin dışında düşünmüyorum.
Çünkü siteyi yalnızca kendi domaininde gördüğümüz haliyle değil, insanların o siteyle karşılaşabileceği farklı yerlerde de kontrol etmek gerekiyor.

Production Ortamında Son Kontroller
Local ortamda çalışan bir şey production'da her zaman aynı şekilde davranmayabiliyor.
Özellikle formlar bunun güzel bir örneği.
İletişim formunun tasarımını görmek yetmiyor.
Form gerçekten gönderiliyor mu?
Mail ulaşıyor mu?
API adresi production ortamında doğru mu?
Environment variable eksik mi?
Bu kontrolleri gerçek domain üzerinden yapmak gerekiyor.
Aynı şekilde mobil görünümü de sadece tarayıcıdaki responsive modda kontrol edip bırakmamaya çalışıyorum.
Mümkünse siteyi gerçek telefondan açmak çok basit ama gözden kaçan hataları yakalayabiliyor.
Domain yönlendirmeleri de önemli.
www kullanılan ve kullanılmayan adresler doğru yere gidiyor mu?
HTTP isteği HTTPS'e yönleniyor mu?
Eski bir sayfanın adresi değiştiyse kullanıcı doğrudan 404'e mi düşüyor?
Gerçekten olmayan bir sayfada düzgün bir 404 ekranı var mı?
Tek tek bakıldığında küçük detaylar.
Ama bir araya geldiklerinde sitenin ne kadar tamamlanmış hissettirdiğini ciddi şekilde değiştiriyorlar.
Performans ve Gerçek Kullanıcı Deneyimi
Bir diğer konu performans.
Proje geliştirirken hızlı internet bağlantısı ve güçlü bir bilgisayar kullandığımız için bazı problemleri fark etmeyebiliyoruz.
Örneğin birkaç megabaytlık bir görsel bizim bilgisayarda gayet hızlı açılabilir.
Telefonda veya daha yavaş bir bağlantıda aynı durum geçerli olmayabilir.
Bu yüzden yayına çıkarken özellikle görsellerin boyutuna, gereksiz dosyalara ve kullanıcıya gerçekten lazım olmayan kaynaklara bakmayı mantıklı buluyorum.
Burada amaç her projeyi performans testlerinde 100 puana ulaştırmak değil.
Bazı projelerde bunu yapmak için harcanacak zaman, projenin ihtiyacına göre gereksiz bile olabilir.
Ama kullanıcı daha ilk ekranda büyük bir görselin yüklenmesini bekliyorsa veya sayfa gereksiz yere çok fazla kaynak indiriyorsa en azından bunun farkında olmak gerekiyor.
Çünkü production ortamında asıl ölçü geliştirme bilgisayarımız değil, gerçek kullanıcının deneyimi.
Çalışan Proje ile Yayına Hazır Proje Arasındaki Fark
Benim kafamdaki ayrım zamanla biraz buraya oturdu.
Çalışan proje; sayfaları açılan, temel özellikleri çalışan ve deploy edilmiş bir projedir.
Yayına hazır proje ise; bunun biraz daha ötesini düşünür.
İnsanların projeyi nasıl bulacağını, nasıl paylaşacağını, nasıl kullanacağını ve yayınlandıktan sonra neler olduğunu da hesaba katar.
Bu yüzden artık deploy ekranında Success yazısını gördüğüm anda projeyi tamamen bitmiş kabul etmek bana eksik geliyor.
Deployment önemli bir eşik.
Ama son çizgi değil.
Bazen birkaç meta etiketi kontrol etmek, Search Console'a bakmak, telefondan siteyi açmak veya iletişim formunu gerçekten göndermek; saatlerce yazılan kodun yanında küçük işler gibi görünebilir.
Ama kullanıcı açısından projenin gerçekten çalışıp çalışmadığını belirleyen detaylar tam olarak bunlar olabiliyor.
Ben de bir projeyi yayına alırken giderek daha fazla bu tarafından bakmaya çalışıyorum.
Kodun çalışması elbette temel şart.
Ama gerçek dünyada çalışması biraz daha fazlasını gerektiriyor.
