Projelerde yapılacak işlerin ne kadar süre içerisinde yapılacağını tahmin etme süreci oldukça sıkıntılı geçer. Her ne kadar yapılacak işlerin analizini iyi yapmış olmak bu sürece olumlu katkı sağlasa da, öngörülemeyen sorunların ya da ihtiyaçların etkilerini bu süreç kapsamında kestirmek zor olduğundan yapılan tahminler çok geçerli olmaz. Sürecin adı “Estimation”(tahmin) olarak geçtiği için, zaten kesin bir zaman birimi söylemek çok da mantıklı değil.Tahmin etmek bütün olay. Ama tabi ki bu tahminlerin bir değer taşıyor olması ve bu değerin farkında olmak gerekli.
Yazılım projelerinde de “estimation” yapılması gereken bir olay. Yani müşteriye verilecek sözden ya da kontrattaki maddelerden ayrı olarak, yazılım geliştirme sürecinde, sürece katkı sağlayacak bir kavram. Yazılım geliştirirken hangi adımlarda ne kadar süre harcandığını görmekte, geliştirme sürecince görev dağılımın iyi yapılmasına katkı sağlayacaktır.
“Planing Poker”, olarak geçen poker planlaması tahmin süreçlerinin en basiti ve etkili yöntemi olduğunu düşünüyorum kendi tecrübelerimden. Agile(çevik) yazılım geliştirme metodlarında tercih edilen bu yöntem aynı zamanda oldukça da zevkli…
Basit olarak poker planlaması, projedeki “item”ların ne kadar süre içerisinde yapılacağını interaktif bir şekilde tahmin ederek gerçekleşir. Bu süre kavramı belli bir puanlama sistemi ile yapılır. Normal sayısal değerlerin kullanılabileceği gibi Fibonacci sayılarının(0,1,2,3,5,8,13,21,34….) kullanılması tavsiye edilir. Bunun nedeni, Fibonacci sayıları ile yapılan tahminlerin daha anlamlı olabilecek olması. Şöyle ki; “item” için tahmini olarak verilecek zaman yükseldikçe, o tahminin anlamı da aynı şekilde bulanıklaşacaktır.Yani bir “item”a 20 birim ya da 22,23 birim şeklinde bir zaman tahmini veriliyor olması birim değerinin yüksek olmasından dolayı çok da bir şey ifade etmez. 20,22,23 şeklinde değil de zaman biriminin “yüksek” olması şeklinde daha anlamlıdır. Aynı şey zaman biriminin düşük olarak tahminlendiği “item”lar için geçerli değildir. Düşük zaman tahmini şeklinde belirlenen “item”lar, farklı şekilde yorumlanarak önceliklendirme konusunda etkili olabileceklerinden dolayı yukarıdaki gibi yorumlanmamalıdır.Bu arada hep zaman birimi olarak bahsettim. Ama peki birim olarak ne kullanmak gerekli? Tahminleme yapılırken kullanılan zaman birimi,”saat” ve “gün” şeklinde projenin büyüklüğüne göre değişkenlik gösterebilir.Ya da uyguladığınız geliştirme metodolijisi içerisinde belli bir puan sistemindeki puana da denk gelebilir.
Poker planlamasının nasıl yapıldığına geçelim şimdide. Öncelikle tahminlemenin yapılacağı olan “item”lar açıklanır. Bu işi geliştirme sürecine hakim bir kişinin yapması en doğru olacaktır. Ürün yöneticisi ya da projeye hakim olan proje yöneticisi gibi birinin bu süreçte bulunuyor olması, “item”ların açıklanmasında faydalı olacaktır.Bunun amaçı tahminlemeden önce “item”ların tüm geliştiriciler açısından aynı şeyi ifade ediyor olmasıdır. “item”lar herkes için aynı şeyi ifade etmiyor ise ortaya çıkan tahminlerdeki tutarsızlıklar çok büyük olacaktır.”item”ların içeriğini netleştirmek için bu aşamada “item”ları alt maddeler(task) ile açıklıyor olmak faydalı olacaktır. Açıkcası “item”ların net olmasının, tahminlerin faydalı bir çıktı ortaya koymasında çok önemli olduğunu düşünüyorum.
“item”lar netleştikten sonra, herkes tahminin gizli olarak yapar. Bir kağıda yazmak, ya da bu iş için kullanılan kartları seçmek(-ki iskambil kartları ya da önceden hazırlanmış Fibonacci kartları faydalı olabilir) koşulu ile tahminler yapılır. Tahminler yapılırken, kafa karışıklığına yol açmamak için bu işlemin gizli yapılması şarttır. Daha sonra aynı anda herkes tahminin gösterir.Tahminlerdeki zaman birimlerinden en büyüğünü ve en küçüğünü belirten kişiler, neden bu tahminlemeyi yaptıklarına dair kısa açıklamalarda bulunur. Bu sayede başkaları tarafından öngörülemeyen şeyler ortaya çıkar ve tahminleme tekrar aynı şekilde herkes arasında yapılır ve ortak bir karar ortaya çıkar.Bu süreç 2-3 adım olabilir. Ama zaten en fazla 3.adımdan sonra ortak bir şeyler ortaya çıkacaktır.
Bu şekilde tüm “item”lar tek tek tahminlenir. Ortaya çıkan sonuç sadece tahmin açısından değil, geliştirme sırasında yapılacak işlerin netleşmesi açısından da çok önemlidir. Poker planlaması, geliştiricilerin takım içerisinde kendilerini daha düzgün ifade etmesini ve en önemlisi takım içerisindeki iletişimin gelişmesini sağlar. Her takım elemanı, bireysel olarak kendi potansiyelinin farkına daha kolay varır.Neyse şimdilik bu kadar…Kendi tecrübelerim dahilinde bu konu hakkında doğru ya da yanlış bir şekilde bir şeyler paylaşmak istedim. Fikir ve düşüncelerinizi iletmekten çekinmeyin, ciddi anlamda önemli benim için…