- 11 Mart 2021
- Yayınlayan: Erkan Sarıkaya
- Kategori: AGILE
Şu köye ne kadar zamanda varabilirim?
Nasreddin Hoca bir gün tarlasında çalışırken oradan geçen bir genç kendisine şöyle seslenmiş :
– Kolay gelsin baba! Falan köye ne kadar zamanda gidebilirim?
Hoca, hiç oralı olmamış, sanki soruyu duymamış gibi işine devam etmiş. Genç adam aynı soruyu daha yüksek sesle bir daha sormuş. Hoca yine oralı olmayınca adam içinden “sağır mıdır nedir bu adam?” diye düşünerek bir daha var gücüyle seslenmiş:
– Heeey hemşerim! Sana söylüyorum duymuyor musun! Şu köye ne kadar zamanda varabilirim diye soruyorum, bir cevap versene!…
Hoca yine cevap vermeyince adam “bu adam ya sağır, ya bunak, ya da başka bir derdi var” diye düşünerek Hoca’dan ümîdini kesmiş ve yürümüye başlamış.
Biraz yürüdükten sonra arkasından Hoca’nın şöyle seslendiğini işitmiş :
– Oraya tam iki saatte varırsın.
Üç kere sorduğu halde sorusuna cevap alamadığı için canı zâten sıkkın olan adam iyice sinirlenmiş ve demiş ki :
– Yâhu sen ne biçim adamsın, mâdem biliyordun, şunu baştan söyleseydin ya!
Hoca’nın cevâbı pek mürşidâne olmuş :
– Evlâdım! Ben köyün hangi mesâfede olduğunu gâyet iyi biliyorum ama senin yürüyüşünü görmeden, ne kadar zamanda oraya varabileceğini nasıl söyleyebilirdim ki?…
Bu zamanda ise havamız tam, “bi konum at, yeter” diyoruz. 😉
Yol = Hız x Zaman (X = V x T)
Kurtköy-Ankara arası YOL belli 400 km. Çok değişmez ama HIZ ve ZAMAN kişiye göre, kullanılan araca göre, yolda yaşayacaklarımıza göre çok değişir. Deneyim arttıkça tahminleme olgunluğu artar. Ort. 90 km hızla hiç durmadan gitsek, otobandan 4,5 saate gideriz muhtemelen.
Formüldeki değişkenlerden en sabit olanı YOL.
Fakat insanın merak ettiği ise hiç düşünmeden hala ZAMAN.
- – Şu köye ne kadar zamanda giderim?
- – Buraya ne zaman gelirsin?
- – Bu iş ne zaman biter?
- – Bu tarihte bitmeli!
- – Deadline tonight!
Belki de Çevik Ekiplerin en zor alıştığı (belki de hiç alışamadığı :)) kısım bu: Sprint/Iterasyon planlamalarında kullanıcı hikayelerine Story Point (SP) vermek. Tüm metaforlar deneniyor: köpek cinsleri ile karşılaştırmadan, basketbol takımına kadar her yol mübah 😉
Yine de SP vermemek için sokaklara dökülen “NO ESTIMATION” pankartları açan komiteler bile var 😉
Hatta SP kavramını ortaya atan Ron Jeffries bile pişman olmuş 😉
- – Ama şimdi iş var iş var
- – Yazılım işleri karmaşık referans veremiyorum
- – İşleri karşılaştırmak elma, armut olmuyor mu?
… lar hemen gelir. Aklımızda hala ZAMAN var. Kolay yol belli;
- – Bu işin maliyeti nedir? kaç adam/gün sürer?
- – 3 gün, 5… 5… 5 gün olsun. 2 gün de buffer ekledim. Hep bir iş çıkar.
- – 5 gün ise, 5 SP diyelim, geçelim. 😉
Net cevap : 1 GÜN != 1 SP.
Yazılım geliştirme büyüklüklerini anlamak istediğimiz doğrudur. Bununla birlikte navigasyon hesabından daha karmaşık, belirsiz, maliyet için bir çok parametre olan bir dünyadayız. (VUCA)
Az, öz iş yap, en değerlisini yap (MVP), basit, anlaşılır, kullanıcı dostu olsun ve mümkünse daha kısa zamanda yap. Çok mu şey istiyoruz 🙂
FIBONACCI SERIES
O yüzden bilim adamları, araştırmacılar da maliyeti anlamak için çıkılan yolda doğa ile buluşmuşlar, bir ağacın gelişimi, gövdesinin kalınlaşması, en ince dallara kadar incelendiğinde, bir salyangozun kabuğunun gelişimine bakıldığında ortaya “Fibonacci Series” çıkmış. 1-2-3-5-8-13-21-…
Evet farkettiniz. Sayı dizisi kendinden önceki 2 rakamın toplamı şeklinde ilerliyor.
Daha da köklerine inince “Information Theory” ye kadar gittim. Çok derine daldığımı hissettim. Durdum. 😉
Özetle mesaj : Bir sisteme yeni bir bilgi girdiğinde onun maliyeti lineer değil. Maliyet fibonacci series’e uygun şekilde artıyor.
Yani bir talebe yeni bir istek geldiğinde, işin içerisine yeni bir özellik, CR (Change-Request) eklenmek istendiğinde maliyet lineer artmaz, 2 kere düşünün. 😉
1 SP Tanımı
Peki güzel, her takıma özel SP referans tanımına geldik.
Takım ile birlikte buna karar verip, netleştiriyoruz. Burada da basitlik şart. İş tiplerine göre tanımı bir formül gibi yapabilirsiniz ama tavsiye etmiyorum.
“IF <iş tipi> ise, SP tanımı budur, ELSIF <iş tipi> ise SP tanımı budur” gibi detaylandırdıkça bu sizi çok yorabilir, dikkat.
Olabildiğince basit, anlaşılır ve takım olarak duyunca herkesin anlayabileceği bir tanım olması yeterli.
Bunun için önerimiz şu : En çok yaptığınız, en çok devreye aldığınız, en küçük birim işi tarif ederek “1 SP” diyebilirsiniz.
ÖRNEK YOK MU ÖRNEK!
Ör : 1 SP = “Adding logging to a java application” ~ 10-20h
Diyelim ki tanımımız bu ve planlamada bir iş geldi. Takımca 3 SP olduğuna karar verdiniz.
Yazılım yaşam döngümüzdeki değer akışımızsa şöyle :
Olgunlaştırma > Analiz > Geliştirme > Test > Prod
3 SP için 30 saat efor harcandı diyelim. Aradan zaman geçti yine benzer bir iş geldi ve güzel haber, test istasyonu iyileşti, otomasyon ile el değmeden, sıfır eforla ilerletebildiniz. Böylece 21 saatte iş bitti, 9 saat iyileşme oldu. Cycle Time %30 kısaldı. Harikasınız.
Soru: Peki SP ne oldu? Önceden 3 SP idi. Şimdi 2 SP mi dememiz lazım.
Cevap: Hayır. Efor azaldı diye SP azalmaz. Ankara’ya araba yerine uçakla 1 saatte gidince yol kısalmaz. İşin büyüklüğü yine 3 SP. Takım olarak KaiZen iyileştirmesi yaptınız, maliyeti azalttınız. Böylece artık daha fazla iş bitirerek SP artar, dolayısıyla Velocity yani hızınız yükselecektir. Bir noktaya kadar.
Yol yine aynı yol, siz daha hızlı olacak bir araç buldunuz.
Keskin Tahminleme (AFFINITY ESTIMATING)
Fibonacci Series kullanılarak verdiğiniz SP’leri “kurumsal hafıza” ya aşağıdaki örnekteki gibi kaydetmeye başladığınızda artık yeni bir tahmin yapmak daha kolay ve daha keskin olacaktır. (sharpen your saw – “Affinity Estimating”)
Yoksa her planlamada sıfırdan yapılan SP ler maalesef pek bir işe yaramaz. İleriye dönük tahminlemede sıkıntı yaşayabilirsiniz. Sprint/Iterasyon döngülerin örüntü oluşturmada ve ekip kapasitenizi anlamadaki faydasını kaçırırsınız.
Sprint Planning > User story > SP tahminleme > 3 SP > Daha önce yapılan 3 SP lik işlerin ort. süresi > Sprint’e sığar mı? > Sprint Backlog
Bu sıralama önemli. Dikkat ederseniz efor, harcanan süre bir sonuç, bir çıktı. Henüz girdi değil.
O yüzden ilk soru “ne kadar sürer?” yerine “bu iş kaç SP/CFP?” olmalı. Referans noktası üzerinden tutarlılık biriktirilmelidir.
SP ile tahminlemeyi gördük. Farklı teknikler de kullanılabilir tabi.
T-SHIRT SIZING
T-Shirt Size’ları kullanılarak iş büyüklüklerini kolaylaştırmak mümkün. Çünkü herkesin anlayabileceği bir referans.
T-Shirt size bile olsa SP aralıklarına dikkat çekmek isterim.
- Small –> 1-3 SP
- Medium –> 5-8 SP
- Large –> 13-20 SP
- XL –> 40+ SP
CFP (COSMIC FUNCTION POINTS)
Yazılımda büyüklük ölçümleme ile ilgili önemli bir yaklaşım CFP (COSMIC Function Points)
Hatta aşağıda gördüğünüz gibi yapılan bir araştırmada CFP ile tahminleme yapmanın SP ‘e göre sapma oranı daha düşük. Yani CFP kullanmak daha tutarlı ve anlamlı olabilir. Bazı şirketlerde, özellikle “vendor contracting” sözleşme tipinde CFP üzerinden anlaşma modellerine rastlıyoruz.
VELOCITY (Hız)
Amaç takım olarak kendin bilmektir. Sprint/Iterasyon hızını SP cinsinden kaydederek hızımızı anlayabiliriz. (Velocity)
Tek derdimiz, “backlog” da bekleyen işleri tartabilmek, gelecek ile ilgili daha keskin planlama, öngörüye sahip olabilmek. Bir projenin ne zaman bitebileceği ile ilgili tutarlı bir tahminleme yapabilmek.
– Yâhu sen ne biçim adamsın, mâdem biliyordun, şunu baştan söyleseydin ya!
Hoca’nın cevâbı pek mürşidâne olmuş :
– Evlâdım! Ben köyün hangi mesâfede olduğunu gâyet iyi biliyorum ama senin yürüyüşünü görmeden, ne kadar zamanda oraya varabileceğini nasıl söyleyebilirdim ki?…
Erkan Sarıkaya
Enterprise Agile Coach
Erkan Bey merhaba,
Yazınızı okudum çok faydalı buldum ancak kafama takılan bir nokta var.
Takım kartlara puan verirken daha önce benzer işi yapmış olmanın verdiği complextyi aşmış ama story point bazında aynı puanı vermeliyiz denmiş.
Ancak yazının başında hoca ne kadar sürede giderim sorusuna “Ben köyün hangi mesâfede olduğunu gâyet iyi biliyorum ama senin yürüyüşünü görmeden, ne kadar zamanda oraya varabileceğini nasıl söyleyebilirdim ki?” şeklinde cevap veriyor.
Bu iki ifade kendi içerisinde çelişmiyor mu? İki ifade de yol yani işin büyüklüğü sabitse hoca neden kişinin hızını görmek istiyor? Efor azaldı diye SP azalmaz ama hoca adamın hızını/eforunu görmek istiyor, ona göre puan verme yolunu izliyor.
Kafam karışmış olabilir, aydınlatabilirseniz çok sevinirim.. 🙂
iyi çalışmalar.
Selam Emre,
Merak edip sorduğun için teşekkürler, dediğim gibi oturması biraz zaman alan bir konu.
Kafanın karışması çok doğal;
“İki ifade de yol yani işin büyüklüğü sabitse hoca neden kişinin hızını görmek istiyor?”
Cevap : Yolu sormuyor ki. Zamanı soruyor. Onun için de X=VxT deki gibi. zaman için X/V yapmak lazım diyor aslında.
Bizim beklentimiz ne? Hoca ortalama bir insanın yürüyüş hızına göre hesaplayıp söyleyebilirdi. Pratik bunu diyor ama hoca her zaman ki gibi düşündürmek istiyor.
SP olarak da zamanı soruyorsan, daha önce SP ortalamasına bakıp, sprinte sığar sığmaz tahminlersin, planlarsın sonra biriktirip sonuçları trende bakarsın.
“Efor azaldı diye SP azalmaz ama hoca adamın hızını/eforunu görmek istiyor, ona göre puan verme yolunu izliyor.”
Cevap : Tam öyle değil, puan vermiyor. Yolu biliyorum diyor. SP sabit. Zamanı soruyorsan, o değişir. Hız (t) sonuç, araba mı kullanacaksın, uçakla mı? yoksa drona binip kuş uçuşu mu?
Metafor ile SP arasında böyle bir ilişki var. Yani en az olan değişkene bakarak (bu durumda X=Yol) referansı tutarlı yaparak, tahminlemeyi güçlendirebiliriz.
Dediğin gibi kısa yol her zaman bulunabilir ama SP referansını değiştirirsen hafızanı kaybedersin.
Deneyim daha değerli, bir takımda bu tür deneme fırsatı bulabilirsen daha anlamlı olur.
Umarım aydınlatıcı olmuştur.
Teşekkürler,
Erkan.
Keyifli ve faydalı bir paylaşım. Teşekkürler!
Beğendiğinize sevindim. Kolay gelsin.