İlan 1 — Turkcell Frontend
İlan 1 derinlik · İlan 1

Turkcell.com.tr & Superonline.net — rolün gerçekte ne demek

İlandaki "Rol ve Sorumluluklar" maddelerini somut mülakat senaryolarına çevirdim. Bunlar hipotetik "sen olsan ne yapardın" soruları — telekom deneyimin olmasa da mühendislik mantığınla cevap verebilirsin.

Paket/kampanya/servis satışı & fatura ödeme akışları

Senaryo: Fatura ödeme akışında conversion (tamamlanma oranı) geçen aya göre %15 düştü. Frontend tarafında ilk 3 adımın ne olurdu?
1) Ölç: Funnel'ı adım adım analytics'te incele — hangi adımda drop-off arttı (fatura no girme, tutar onayı, ödeme yöntemi seçimi, 3D Secure)? 2) Hipotez kur: O adımın son deploy'unda bir regresyon mu var (form validation gecikmesi, yeni bir zorunlu alan, ödeme API timeout'u)? Sentry'de o adıma ait hata artışı var mı? 3) Doğrula: Şüpheliyi izole edip A/B test veya canary deploy ile düzeltmenin gerçekten işe yaradığını ölçerek kapat — tahminle değil veriyle.
Senaryo: Ürün ekibi 'oyunlaştırma' (gamification) özelliği istiyor — kullanıcı fatura ödedikçe rozet kazansın. Bunu nasıl mimarize edersin?
Rozet/puan mantığını backend'de tutarım (frontend'te tutulursa manipüle edilebilir, kullanıcı iki cihazda tutarsız görür). Frontend sadece backend'in döndürdüğü state'i (rozet listesi, ilerleme yüzdesi) gösterir ve kazanım anında optimistic UI + animasyon ile anlık ödül hissi verir — gerçek veri her zaman backend'den senkronize kalır.

SEO yönetimi

Next.js'te SEO iki katmanda çözülür: render stratejisi (SSR/SSG — client-only render arama motoruna boş bir div gösterir) ve metadata (title, description, Open Graph, sitemap). Bu sitenin kendi layout.tsx'i de metadata export ediyor — bak.

// app/fatura-odeme/page.tsx
export const metadata: Metadata = {
  title: "Fatura Öde | Turkcell",
  description: "Turkcell faturanızı kredi kartı veya banka kartıyla saniyeler içinde ödeyin.",
  alternates: { canonical: "https://www.turkcell.com.tr/fatura-odeme" },
  openGraph: { title: "Fatura Öde", images: ["/og/fatura-odeme.png"] },
};

// app/sitemap.ts — Next.js bu dosyayı otomatik /sitemap.xml yapar
export default function sitemap(): MetadataRoute.Sitemap {
  return [
    { url: "https://www.turkcell.com.tr/fatura-odeme", changeFrequency: "weekly", priority: 0.9 },
  ];
}

Site performansı ve KPI takibi

"KPI takibi yapmak" ilan maddesi somut olarak şu anlama gelir: kullanıcı davranışını (adım süresi, terk oranı, hata oranı) event olarak gönderip dashboard'da izlemek — bir önceki sayfadaki Sentry/Datadog ile birlikte çalışır.

// Bir kullanıcı davranışını ölçülebilir hale getirmek
function odemeTamamlandi(tutar: number, sure: number) {
  analytics.track("fatura_odeme_tamamlandi", {
    tutar,
    sure_ms: sure,      // adımın ne kadar sürdüğü — performans KPI'ı
    kanal: "web",
  });
}

function odemeAdimindaVazgecildi(adim: string) {
  analytics.track("fatura_odeme_terk_edildi", { adim }); // funnel drop-off KPI'ı
}

Mentorluk & code review — "senior davranışı"

İlan açıkça "junior/mid geliştiricilere mentorluk" ve "best practice'leri ekibe yayma" istiyor. Mülakatta bunu somutlaştır:

💡
Code review'da nasıl konuşursun — örnek cümle"Bunu değiştir" yerine: "Bu yaklaşımda X riski var (ör. bu state iki yerde tutuluyor, senkron kalması zor olabilir) — Y'yi denedin mi, şu sebeple daha sürdürülebilir olabilir." Gerekçeyi açıklamak, junior'ın kendi kararını geliştirmesini sağlar — sadece "doğru cevabı" dikte etmek değil.

Egzersizler

1) Teknik kararları iş hedefleriyle uyumlu hale getirmek ne demek, somut bir örnek ver.
Örnek: Ürün ekibi "3 gün içinde kampanya sayfası istiyoruz" dedi. Senior yaklaşım: micro-frontend/yeni kütüphane gibi "doğru ama yavaş" çözümü değil, mevcut component kütüphanesini kullanan "yeterince iyi ve hızlı" çözümü seçip, teknik borcu (tech debt) ürün ekibine açıkça bildirip sprint'e not düşmek — iş hedefi (hız) ile mühendislik kalitesi arasında bilinçli bir trade-off yapmak.
2) 'Servislerin veri modeli ve mimarisine hakim olmak' maddesi frontend geliştirici için ne anlama gelir?
Sadece UI'ı API'ye bağlamak değil — hangi veri backend'den mi geliyor yoksa frontend state'inde mi türetiliyor bilmek, API kontratındaki (TypeScript tipleri/OpenAPI şeması) değişikliklerin hangi ekranları etkileyeceğini önceden görebilmek, ve gereksiz API çağrısı/over-fetching yapmayacak şekilde veri ihtiyacını backend ekibiyle birlikte tasarlayabilmek.