Nasıl daha gerçekçi tahminlerde bulunabiliriz ?

Nasıl daha gerçekçi tahminlerde bulunabiliriz ?

Mevcut sıkıntılı  durumla daha iyi baş edebilmemiz için elimizde o an anlar için iyi formüllerin (algoritmalar) olması gerektiğine inanıyorum. Bir başka tabirle yumurta kapıya geldiğinde hissi davranışlar göstermek daha kötü sonuçlara sebebiyet verebilir.  Yazılım projelerinde daha iyi tahminler nasıl yapılabilir konusunda geçmeden önce sistematik davranmanın nasıl hayat kurtardığını sağlık alanından bir hikaye ile sizlere aktarmak istiyorum.

Apgar formülü ve bebek ölümlerinin azaltması arasındaki ilişki

1953 yılına kadar yeni doğan bebeklerin ilk doğduklarında sağlıklı olup olmadığını ve ilk yardıma ihtiyaç duyup duymadığını ölçmek için bir standart yoktu.  Standart olmadığı için bebek yeni doğduğunda, bazı doktorlar sadece kalp atışına, bazıları sadece ağlayıp ağlamadığına gibi noktalara odaklanarak bebeğin önündeki kritik kaç dakika içerisinde tıbbı müdahaleye gerek olup olmadığını tahmin etmeye çalışıyorlardı.  Elbette her doktor çoğu zaman o anın karmaşası ile önemli noktaları kaçırabiliyor ve sonuç olarak bebek kayıpları yaşanabiliyordu.

Tahmin için belli standartlar

Doktor Apgard’ın geliştirdiği basit bir algoritma ile yenidoğan  bebeğin mevcut durumunu tespit edip , oluşabilecek problemleri erkenden tahmin edilmesine olanak verdi. Bu algoritmaya göre yeni doğan bebeğin 5 farklı noktasına (kalp atışı, nefes alımı, refleks, kas gerginliği ve deri rengi) bakıp  0, 1 veya 2 şeklinde skor vererek çıkan sonuca göre tahminde bulunup müdahale edilmeye başlandı.

Eğer bebeğin skoru beş noktaya göre 8 ise yani bebeğin kalp atışları iyi, ağlıyorsa, refleksleri iyi ise, hareketiyse ve rengi pembe ise o zaman bu bebek  Apgard algoritmasına göre sağlıklı olarak kabul edilir ve müdahale öngörülmezdi edilmez. Fakat bebeğin skoru 4 veya altında ise bebeğe müdahale edilmelidir sonucu çıkartılabilir.

Basit algoritma ile kurtulan hayatlar

Apgard skorlaması bugün bile kullanılmaktadır. Bu basit ve etkili kurallar bütünü (algoritması) bebekleri hayatını halen kurtarmaya devam ediyor.  Acil ve zor durumlarda doğru kararlar verebilmek ve  isabetli tahminlerde bulunmak için elimizde formüllerin (algoritmaların) olması son derece önemlidir.

Yazılım dünyasında iş tahminleri için belli standartlar var mı ?

Şimdi sağlık sektöründen yazılım sektörüne geçebiliriz.  Yazılım sektörü için benim karşılaştığım en sık soru : Bu iş ne zaman biter ? Yada proje ne zaman biter ? Bu tür sorulara cevap vermek için standart bir algoritma kullanıyor musunuz ? Yoksa rastgele bir sayı mı söylüyorsunuz ?

Kanban sisteminin kullanıldığı bir proje de, bu sorulara cevap vermek için, teslim süresi (lead time) dağılımları (distribution) kullanıyoruz.  Örneğin  %50 ihtimalle 5 günde, %85 ihtimalle 11 günde gibi…

 kanban-board

İşin Teslim süresi (Lead time) nedir ?

İşin teslim süresini belirlemek biraz muğlak bir tabir farkındayım.  Yani :

İşin tamamlanması aşağıdakilerde hangisi ?

  1. Müşterinin yapılan işi  canlı ortamda kullanması mı ?
  2. Yazılımcının yapılan işi kod seviyesinde tamamlaması mı ?
  3. Yapılan işin test sunucusuna  aktarılması mı ?
  4. Hepsi
  5. Hiçbiri

Her projenin kendi kuralları olabilir, bu yüzden burada net birşey söylemek yanlış olur.

lead-time

Fakat benim kendi görüşüm ortalamada bir işin bitmesi ; test sunucu atılması ve teste hazır hale getirilmesi ile tamamlanır diyebilirim. Yapılan işin canlı ortama çıkması uzun zaman alabileceğinden dolayı, işin teslim süresini gereksiz yere artırabilir.

Teslim süresi dağılımı nedir ?

Projemizde 3 yazılımcı arkadaşın çalıştığını düşünelim,  Yazılımcı -1 , Yazılımcı -2 ve Yazılımcı -3 ve bu kişilere verilen işlerin teslim sürelerinden bir dağlım oluşturabiliriz. Bu dağılıma işin teslim süresi dağılımı  (lead time distubition) diyoruz.

lead-time

İlk kural projede yapılan işlerin takibini bir excel veya isteyeceğiniz herhangi bir yerde yapmanız.  Daha sonra bu verilerle dağılımını kolayca oluşturabiliriz.

Lead-time-distribution

Bir sonra ki işin ne zaman biteceğini  hesaplamanın yolu

Projenin belli bir aşamasında yeni bir iş geldi ve bize bu işin ne zaman biteceğini soruldu.  Aynı Apgard skorlama standardı gibi bizde bir sonra işin istatistik kullanarak standart bir şekilde hesaplayarak söyleyebiliriz.

İşin teslim süresi dağılımı elde ettikten, bir sonraki işin ne zaman biteceği konusunda basit ve etkili standart elde etmiş oluruz.

lead-time-distribution

Amacımız yeni işin olasılıklar dahilinde ne zaman biteceğini standart bir şekilde hesaplamak.  Yani örneğin yukarıdaki büyük proje dağılımına göre konuşursak, artık yeni iş %50 ihtimalle 50 günde, %85 ihtimalle 60 günde veya  % 98 ihtimalle 150 günde bitecektir diyebiliriz.

İlk yol

İlk olarak Microsoft excel içerisinde ki Percentile.INC fonksiyonunu kullanabilirsiniz.

excel-calculation

Excel içerisinde yüzdesel aralığı hesaplamak için iki formül bulunuyor

1 –  Percentile.INC
2 –  Percentile.EXC

Veri kümenizin genişliğine ve azlığına göre istediğiniz formülü kullanabilirsiniz.

Örnek dosyayı indirmek için tıklayınız  : Metrics.xls

İkinci yol

Hakan Forss’un blogunda belirttiği  hesaplama yöntemi. Percentile.INC ile  karşılaştırıldığında sonuçlar çokta farklı olmadığını belirtmek isterim.

Örnek dosya yı indirmek için tıklayınız  Histogram Example.xls

İş var iş var .

Elbette her iş aynı değil.  Bu iş ne zaman biter ? sorusundan önce bu işin tipine göre ayırıp ona göre işin teslim süresi dağılımına göre tahminde bulunmak daha isabetli olacaktır.

David Anderson’a göre işleri gecikme maliyetine göre 4 kategoriye ayırabiliriz.

1 – Acil işler (expedite)

2 – Sabit tarihli işler (fixed date)

3 – Standart işler

4 – Bekletilebilir işler (Intangible)

İşte bu 4 kategoriye göre ayrı ayrı  iş teslim süresi dağılımlarının (lead time distrubition)  çıkartılması daha net tahminlerin yapılmasına sebebiyet verecektir.

Poker oyunu ile tahmin etmece artık bir zaman kaybı mı ?

İstatistiksel olarak bir sonra ki işin ne zaman biteceğini müşteriye söylemek mi daha gerçekçi, yoksa bir odaya kapanıp kapatıp bir sonraki işin(lerin) ne zaman biteceğini tahmin etmeye çalışmak mı ?

Bir çok projede zaman tahmini yapmak proje yöneticileri açısından artık zaman israfı (muda) olarak görülmektedir. Şu an dünyada proje yöneticileri arasında #noestimates twitter hash etiketi altında tahmin yapmanın ciddi maliyetlere sebebiyet verdiğine ait tartışmalar şiddetli biçimde devam etmektedir.

İşte bu israftan (muda) kaçınarak tahminleri istatistik zeminde cevaplamak hem daha gerçekçi hem de müşteri açısından daha güvenilir sonuçlar çıkmasına sebebiyet verecektir.

No Comments

Post a Comment

Comment
Name
Email
Website

%d blogcu bunu beğendi: