Bir yazılım işinin süresini nasıl tahmin edersiniz? Story point, planning poker ve velocity nedir?

Cevap

Tahmin her zaman belirsizlik içerir; amaç kesin süre vermek değil, planlamaya yetecek kadar iyi ve dürüst bir aralık vermektir. Agile ekipler genelde süreyi saat yerine göreceli büyüklük (story point) ile tahmin eder.

Story point

Bir işin karmaşıklık, iş miktarı ve belirsizlik bileşimini ifade eden göreceli bir birimdir. Genelde Fibonacci benzeri bir ölçek kullanılır (1, 2, 3, 5, 8, 13...). Büyüdükçe aralıkların açılması, büyük işlerdeki belirsizliği yansıtır. 13 ve üstü genelde "bu işi böl" sinyalidir.

Planning poker

  1. Product Owner bir user story'yi anlatır, ekip soru sorar.
  2. Herkes kartını aynı anda açar (anchoring etkisini önlemek için).
  3. En düşük ve en yüksek tahmini veren kişiler gerekçelerini açıklar; çoğu zaman biri bir riski, diğeri bir kısayolu görmüştür.
  4. Uzlaşma sağlanana kadar tekrar oylanır.

Velocity

Bir ekibin bir sprint'te tamamladığı ortalama story point miktarıdır. Son 3-5 sprint'in ortalaması, bir sonraki sprint'e ne kadar iş alınacağına ve kabaca yol haritasına yardımcı olur. Ekipler arası karşılaştırma için kullanılmamalıdır; her ekibin ölçeği farklıdır.

Saat cinsinden tahmin istenirse

  • İşi küçük, somut alt görevlere bölün (her biri en fazla 1-2 gün).
  • Belirsiz kısımlar için zaman kutulu bir spike (araştırma) önerin.
  • Tek bir sayı yerine aralık verin; üç nokta tahmini kullanılabilir: (iyimser + 4 x olası + kötümser) / 6.
  • Test, code review, dokümantasyon ve deploy süresini unutmayın; en sık yapılan hata sadece kodlama süresini tahmin etmektir.

Örnek

"Kullanıcı profil fotoğrafı yükleyebilsin" işi: upload endpoint'i (0.5 gün), resim boyutlandırma ve object storage (1 gün), frontend bileşeni (1 gün), testler ve review (1 gün). Toplam 3.5 gün; storage entegrasyonu ekip için yeni olduğundan aralık 3-5 gün olarak iletilir.

#NoEstimates

Bazı ekipler işleri benzer küçük boyutlara bölüp sadece iş sayısını ve cycle time'ı ölçer; tahmin toplantısına harcanan zamanı azaltır.

  1. Testi olmayan büyük bir legacy kod tabanında değişiklik yapmanız gerekiyor. Nasıl ilerlersiniz?ZorYazılım Geliştirme SüreçleriYazılım Müh.
  2. Semantic Versioning (SemVer) nedir? 2.4.1 sürümündeki her sayı neyi ifade eder?KolayYazılım Geliştirme SüreçleriYazılım Müh.
  3. Teknik borç (technical debt) nedir? Ekipte teknik borcu nasıl yönetir ve iş tarafına nasıl anlatırsınız?ZorYazılım Geliştirme SüreçleriYazılım Müh.
  4. CI/CD nedir? Continuous delivery ile continuous deployment arasındaki fark nedir? Tipik bir pipeline'da hangi adımlar olur?OrtaYazılım Geliştirme SüreçleriYazılım Müh.
  5. TDD (Test-Driven Development) nedir? Red-Green-Refactor döngüsünü bir örnekle anlatın.OrtaYazılım Geliştirme SüreçleriYazılım Müh.
  6. Test piramidi nedir? Unit, integration ve end-to-end testler arasındaki farklar nelerdir?OrtaYazılım Geliştirme SüreçleriYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle