Agile Saha NotlarıSertaç Yıldırım

Ana sayfa → Bölüm 04

Sprint Planning: Tahmin Değil Taahhüt

Sprint planning açık kitap sınavıdır ve cevaplar hazırlık aşamasında yazılmıştır. Burada yeni gereksinim keşfediyorsan çoktan kalmışsındır.

Özet
  • Rol değişir. Grooming’de PO konuştu, ekip dinledi. Planning’de ekip konuşur, PO dinler ve onaylar.
  • Kapasite bir çarpma işlemi değildir. İzin, tatil, toplantı yükü ve plansız iş tamponu düşülmeden çıkan sayı hayalidir.
  • Baştan atama yapma. Çekme sistemi silo kırar; ama pair programming olmadan kolay işlerin seçilmesine yol açar.
  • İyi bir planning sıkıcıdır. Heyecan varsa hazırlık aşaması işini yapmamıştır.

Rol değişimi: klavye artık ekipte

Grooming’de yön PO’dan ekibe doğruydu. Planning’de bu yön tersine döner ve bu tersine dönüş, toplantının tamamını belirler.

  • Ekip planı anlatır: “Bu hikâye için şu endpoint’i açacağız, şu tabloya alan ekleyeceğiz, migration şu sırayla gidecek.” Buna geri okuma denir.
  • PO doğrular: “Evet, bu anlattığın şey benim ihtiyacımı karşılıyor.”

Geri okumanın değeri şurada: PO’nun kafasındaki çözümle ekibin kafasındaki çözüm farklıysa bu fark burada ortaya çıkar. Ortaya çıkmazsa sprint’in sonunda, demo sırasında çıkar.

Planning bir emir toplantısı değil, bir doğrulama toplantısıdır. Konuşan taraf işi yapacak olan taraftır.

Tahmin: hızlı olmalı, çünkü zor kısım bitti

Teknik hazırlık yapıldıysa planning poker dakikalar sürer. Herkes karmaşıklığı zaten biliyordur, “nasıl” tartışması bitmiştir ve bilinmeyenler önceki aşamada ya çözülmüş ya da madde reddedilmiştir.

Tahmin uzun sürüyorsa bu bir tahmin problemi değildir. Şu üçünden biridir: madde yeterince anlaşılmamıştır, madde çok büyüktür, ya da ekipte o alana hâkim tek kişi vardır. Üçünün de çözümü planning’in içinde değil, dışındadır.

Kapasite: çoğu ekibin atladığı yer

“Altı kişiyiz, on gün var, altmış adam-gün.” Bu hesap yanlış ve her sprint aynı şekilde yanlış. Gerçek hesap şöyle:

Kapasite hesabı — örnek
Ham kapasite      6 kişi × 10 gün          = 60 adam-gün
İzin / tatil      -1 kişi 3 gün, -1 kişi 2 gün =  -5
Toplantı yükü     ~%10 (daily, review, retro)  =  -6
Üretim desteği    nöbetçi 1 kişi × 10 gün      = -10
------------------------------------------------------
Planlanabilir                                  =  39 adam-gün
Plansız iş tamponu %15                         =  -6
======================================================
Taahhüt edilebilir                             =  33 adam-gün

Altmıştan otuz üçe düştük. Sprint’i altmışa göre planlayan ekip her seferinde taşar ve bunu “kötü tahmin ettik” diye yorumlar. Tahmin sorunu değil, aritmetik sorunu.

Tampon oranını ölçüye dayandır: son üç sprint’te plansız gelen işlerin gerçek yüzdesini hesapla ve tamponu ona eşitle. Tahminle konulan tampon ya çok küçük olur ya da ekip onu boş zaman sanır.

Çekme sistemi: baştan atama yapma

Sprint başında her maddeye bir sahip atamak yaygın bir alışkanlıktır ve iki tarafı da keskin bir bıçaktır.

  • Herkes yalnızca ilk işini üstlenir.
  • Geri kalan maddeler sprint backlog’unda sahipsiz durur, ama önceliğe göre sıralıdır.
  • Biri işini bitirdiğinde durumu günceller ve sıradaki en yüksek öncelikli maddeyi çeker.
Baştan atamanın tuzağı

Herkes konfor alanına yapışır: “ödeme tarafını Ahmet yapsın, o biliyor.” Altı ay sonra ödeme tarafını hâlâ tek kişi biliyordur. Buna silo denir ve izne çıkınca fark edilir.

Çekme sisteminin riski

Junior ağırlıklı veya motivasyonu düşük ekiplerde herkes kolay işi çeker, zor iş sprint sonuna kalır. Buna kiraz toplama denir ve burndown grafiğinde son iki gün düzleşerek görünür.

Bu ikisinin ortasındaki çözüm pair programming’i planning’in bir parçası yapmak: hangi maddelerin eşli yapılacağını burada işaretle. Junior zor bir madde çektiğinde kiminle eşleşeceğini bilir; senior sıkıcı bir madde çektiğinde öğretmek için eşleşir. Toplam sprint eforunun %20–40’ını eşleşmeye ayırmak, kısa vadede yavaşlatır ama üçüncü aydan itibaren hızı artırır.

QA’i birinci güne çek

Sprint’lerin son iki gününde QA’in boğulması bir kapasite sorunu değil, bir akış sorunudur. Planning’de hedef belirlenmeli: ilk test edilebilir madde 1. günün sonunda QA’e düşmeli.

QA için 1. gün boş gün değildir: test veri setleri, ortam hazırlığı ve test senaryoları o gün yazılır. Bunu planning’de konuşmayan ekiplerde QA sprint’in ilk yarısında bekler, ikinci yarısında yetişemez.

Taahhüt

Taahhüt bir pazarlık değildir. Ekip kapasitesine bakar ve teslim edebileceğini bildiği işi çeker. Teknik riskler önceden çözüldüğü için bu bir tahminden daha güçlüdür.

PO’nun “bir tane daha sığar mı?” sorusuna verilecek cevap şudur: “Sığar, ama karşılığında şunu çıkarıyoruz.” Kapsam eklemenin karşılığı olmayan her planning, sprint ortasında yapılacak bir kavganın provasıdır.

Yapılacaklar
  • Kapasiteyi izin/tatil/tampon düşerek hesapla ve ekrana yansıt
  • Ekibe planı geri okut, PO’ya doğrulat
  • Eşli yapılacak maddeleri planning’de işaretle
  • Sprint hedefini tek cümlede yaz — herkes ezberden söyleyebilmeli
Yapılmayacaklar
  • Planning’de yeni gereksinim keşfetmek
  • Bütün maddeleri baştan kişilere atamak
  • Karşılığını konuşmadan kapsam eklemek
  • Kapasiteyi “kişi × gün” olarak almak

Kontrol listesi

Toplantıdan çıkmadan önce
  • Sprint hedefi tek cümle olarak yazıldı mı?
  • Kapasite hesabı yapıldı ve tampon ayrıldı mı?
  • Ekip her madde için planı geri okudu mu?
  • PO her maddeyi sözlü olarak doğruladı mı?
  • Eşli yapılacak maddeler işaretlendi mi?
  • İlk test edilebilir maddenin hangisi olduğu belli mi?
  • Sprint backlog’u önceliğe göre sıralı mı?

Sonuç

Sprint planning sıkıcı olmalıdır. Burada büyük tartışmalar ve sürprizler çıkıyorsa sorun planning’de değil, ondan öncesindedir. İyi bir oturum kısa bir onay törenidir: “Hazırız, başlıyoruz.”

Kaynak ve teşekkür

Rol değişimi, çekme sistemi ve pair programming yatırımı fikirleri İbrahim Demir’in Sprint Planning yazısından uyarlandı. Kapasite hesabı tablosu, tamponun ölçüye dayandırılması ve QA’in 1. güne çekilmesi benim eklemem. Mike Cohn’un Agile Estimating and Planning kitabı tahmin konusunda temel referans.