Bu yazımızda, özellikle yazılım dünyasında sık kullanılan; piyasada kullanımında biraz karışıklık yaşandığını düşündüğümüz efor, süre ve story point kavramlarından bahsedeceğiz. Kavramların daha iyi anlaşılabilmesi için yazılım dışında farklı örneklerden de faydalanacağız. Dolayısıyla, yazılım sektöründe olmasanız da bu kavramları gerçek hayatta kullanabileceksiniz…
Efor Nedir?
Eforu, zihince ve bedence ortaya konan emek olarak tanımlayabiliriz. Bir işin eforu demek, o işin tamamlanması için gerekli olan insan kaynağı miktarıdır. Efor kavramı adam/gün, adam/saat, bazen de adam/ay olarak birimlendirilebilir. Efor kişiden kişiye değişen bir kavramdır. Bir uzman bir iş için 8 Adam/saat efor harcarken, daha az tecrübeli biri için aynı işin bitirilmesi 16 adam/saat olabilir. Bu sebeple efor bildirilirken genelde kullanılacak kaynağın tipi ve birim fiyatı da belirtilir. Uzman bir programcı için 2 birim fiyat verilirken, yeni mezun biri için efor fiyatı daha düşük belirlenebilir. Efor belirtmenin amacı, o işi yapmak için başka herhangi hiçbir iş ile uğraşılmadan o işin bitirilmesi için gerekli insan kaynağıdır. Dolayısıyla efor tahmini yaparken, ya da gerçekleşen eforu bildirirken başka işler için harcanan kaynaklar hesaptan çıkarılmalıdır.
Süre Nedir?
Süre, bir işin bitirilmesi için gerekli zaman dilimidir. Süre ile efor çoğu kişinin aynı gibi kullandığı; aslında gerek sözlük anlamı, gerekse iş hayatında kullanılan anlamı ile tamamen farklı kavramlardır.
Düşünün ki, 100 m2 bir eviniz var ve boya yaptıracaksınız. İki ayrı firmadan fiyatları yaklaşık aynı rakam olan iki ayrı teklif alıyorsunuz. Biri 4 günde iş biter diyor, diğeri ise 10 gün sonra işi teslim edeceğini bildiriyor. Biri 4 günde teslim edecekken, diğeri neden 10 gün demiş olabilir?
4 günde evinizi boya tamamlanmış olarak teslim edecek olan acaba bu işte kaç kişi çalıştıracak? Bir kişiden fazla boyacı kullanıyor olabilir, ya da tek boyacı kullanacaktır ama bu sürede yarım bıraktığı başka bir iş yoktur. Her gün evinizde ful mesai harcayacak ve evi o şekilde bitirecek olabilir.
10 günde teslim edecek olan ise belki tek kişi çalışmayı planlıyor olabilir. Belki, bu sürede boya malzemelerini alacaktır, evin bir gün kuramasını bekleyecektir, bekleme süresi içinde başka bir evi de boyamaya devam edecek olabilir. Kullanacağı malzemeler biraz geç kuruyan malzeme olabilir. Evi ile sizin eviniz arasındaki mesafe uzun olabilir, her gün yolda geçireceği zaman biraz daha uzun olabileceği için evinizde çalışacağı zaman daha kısıtlı olabilir. Ya da “ben yavaş çalışırım, sakin çalışırım ama temiz iş çıkarırım” da diyor olabilir. Sonuçta ev bir şekilde boyanacak. Kısa sürede da bitebilir, uzun sürede de bitebilir. En nihayetinde, siz tekliflerden birine karar vereceksiniz ve sonuçta sizin eviniz, istediğiniz renge, istediğiniz şekilde boyanacak.
Bazen ne kadar istesek de süreyi kısaltayamayacağımız işler vardır. Örneğin tek bir oda boyayacağız. Yarım gün boyanın kuruması gerekiyor olabilir. O yarım günde aynı odayı tekrar boyama şansımız olmayacağından o evin boyama süresini kısaltma şansımız olmaz. Yazılım dünyasında bu konuyla ilgili örnek olarak hamile kadın esprisini duymuşsunuzdur belki de: “Bir çocuk dokuz ayda dünyaya gelir ama üç kadın üç ayda birleşip bir çocuk dünyaya getiremez”:) Kurumayan boyanın üzerine bir kat daha boya sürersek, boya kabaracak ve güzel bir iş yapamamış olduğumuzdan paramızı da alamayacağız. Daha fazla para kazanmak için, ancak bekleme sürelerinde farklı iş alternatifleri aramamız gerekecektir. Tabii bir anne adayı için böyle bir alternatif imkanı yoktur:)
Tekliflerde işin bitirilmesi için tahminlenen sürenin verilmesi önerilmekle beraber, fiyatlamada süre değil, harcanacak efor değerlendirilir. Daha kısa sürede bitirilmesi beklenen projelerde daha fazla efor (adam/gün, adam/saat vb.) kullanarak sürenin kısaltılması sağlanabilir. Bu da aslında eforun fiyatlanmasıdır. Hatta daha kısa süre ön görülen teklifler bazen daha pahalı da olabilmektedir. Hiçbir zaman süre için fiyat belirlememeliyiz, efor için fiyat belirlemeliyiz. Bir işte süre için fiyat belirlemek demek; başka müşterinin işini sarkıtıp, yeni müşterinin işini öne almamız demektir ki bu da asla yapılmaması gereken bir çözümdür. Müşterilerimize süre tahminlemesi yaparken mümkün olduğunca gerçekçi süreler ön görmeliyiz ve verdiğimiz sürelere uymaya çok özen göstermeliyiz. Eğer sürelerle ilgili bir sapma ön görülüyorsa, süre sonuna gelmeden müşteriyle gerekçelerini açık açık konuşmalıyız ve kalan süreyi çok iyi değerlendirmeliyiz. Verilen tahmini süreye uymamız, müşteri memnuniyeti açısından çok önemlidir.
Story Point:
Story Point özellikle Agile projelerde planlama yaparken, işin büyüklüğü için kullanılan bir terimdir. Hatta piyasada “SP” kısaltması ile kullanılıp, SQL veri tabanı objelerinden biri olan “Stored Prosedure”ün baş harfleri ile de karıştırılabilmektedir. Bunların yazılım sektörü terimleri olmaları dışında birbirleriyle hiçbir ilişkisi olmadığını gönül rahatlığıyla söyleyebiliriz:)
Story Point, bir işin zorluğunu, risklerini, bilinmezliğini, bağımlılıklarını, karmaşıklığını birlikte değerlendiren; yani toplam büyüklüğü ifade eden bir metriktir. Story Point tek başına bir efor tahmini değildir. Bunun yanında tek başına bir süre tahmini de değildir. Tek başına, kişilere, kişilerin tecrübesine ve yeteneklerine de bağlı bir metrik değildir.
Story point tahminleme, kesin bir tahminleme olmayıp, göreceli bir tahminlemedir. Bu sebeple, bir işe story point öngörüsü yaparken mümkün olduğunca o iş içinde rol olacak tüm kişilerden tahmin almakta fayda vardır. Bir kişi tarafından basit olarak nitelendirilen bir iş, başkası tarafından zor olarak nitelendirilebilir.
Story point puanlamasında farklı yöntemler uygulanabilir. Kullanılan puanlama yöntemlerinden biri de Poker oyunu oynanarak kullanılan Fibonacci dizisindeki puanlardır. Fibonacci dizisindeki rakamlar, her defasında sayının kendinden önceki iki sayı toplamını oluşturarak 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,…şeklinde artan rakamlardan oluşmaktadır. Dizideki sayıların artış oranı, bir süre sonra %61 olarak sabit artmaktadır. Bu da göreceli tahminlemeyi kolaylaştırmaktadır.
Story point tahminlemesini ilk kez yapacak gruplarda yapılan tahminlemelerde, çok doğru puanlama yapılamaması normaldir. Bunun için uygulanan bir yöntem; referans bir iş belirleyerek o işe bir referans Story point atamaktır. Örneğin, bir ekrana combobox ( açılır liste kutusu) eklemek için bir puan belirlenir. Takım planlama toplantılarında, işe story point ataması yaparken de daha önce belirlenmiş story point puanlamasını referans alır. Story point ataması yapılırken her combobox eklemeye aynı story point verilmeyeceğine dikkat etmenizi özellikle belirtmek isteriz. Zira unutulmamalıdır ki, bazı ekranlar daha karmaşıktır ve eklenecek açılır liste kutusunun etkileyeceği kısımlar farklılıklar gösterebilir. Bu sebeple, işi yapacak analist, testçi ve diğer programcılardan dâhil ortak bir tahminleme yapması beklenir.
Bazen, tahminlemede verilen puanlar birbirinden çok farklılıklar gösterebilir. Bu durumda, verilen puanların ortalamasının alınması kesinlikle yanlıştır. Bunun yerine, farklı puanlama yapanlar arasında neden bu puanlamayı yaptıkları ve birbirlerini ikna etmeleri beklenir. Açıklamalar sonrasıaynı iş tekrar puanlanabilir. Önemli olan; herkesin konu hakkında aynı bilgiye sahip olması; en yakın, en doğru tahminlemeyi yapabilmektir. Tahminleme yapılırken süreç içinde bulunacak tüm kişilerden tahminleme almak, risk ve karmaşıklığı mümkün olduğuna daha gerçekçi görmeye ve daha iyi öngörüde bulunmaya sebep olacaktır. Örneğin bir işe 5 kişi aynı puanı verirken, aynı işe biri çok daha düşük bir puan vermiş olabilir. Nedeni araştırıldığında, o kişinin konu hakkında çok daha bilgi sahibi olduğu ve çok kısa bir yöntem ile o işi bitirebileceği hakkında bilgi veriyor olabilir.
Gelin, story pointi, güncel olaylardan bir örnekle zenginleştirelim: Diyelim ki 10 m2’lik bir duvar boyanacak. 10 m2’lik bir duvarın boyanması daha önce 2 Story point olarak belirlenmiş olsun. Fakat bu duvarın olduğu projede boyayı siz almayacaksınız ve hangi boyanın kullanılacağını bilmiyorsunuz. Hatta boya yapılacak mekan havanın sizin daha önce boya yaptığınız mekanlarda olmadığı kadar çok daha soğuk olan bir bölgede yapılacak. Boya yapılacak mekanda ısıtma sistemleri henüz yerleştirilmemiş. Şimdi, bu durumda 10 m2’lik o alanın 2 story point olma ihtimali sizce ne kadar gerçekçi? Bu yüzden o bölgede daha önce çalışmış başka kişilerden de bir tahminleme yapmanız, hatta belki de bu işi o kişilerle yapmanız daha doğru olacaktır değil mi? Çünkü bu işte biraz daha bilinmezlikler ve riskler olduğu açıktır.
Evet, efor, süre, story point her üçü de yazılım dünyasında çok yoğun kullanılan kavramlardır. Waterfall (Şelale) projelerde efor ve süre kavramları etkin olarak kullanılmaktadır. Agile (Çevik) projelerde ise süre ve efor tanımlarına neredeyse hiç yer verilmeyip, yapılacak işler story point ile ölçümlendirilir İşlerin ne zaman ya da hangi sürede tamamlanacağı ise planlama toplantılarında konu edilir.
İster waterfall olsun ister agile projeler olsun; waterfall projelerde gerçekleşen efor, süre; agile projelerde ise gerçekleşen story pointleri kayıt altına almak; tahminlenen ile gerçekleşeni karşılaştırmamızı ve sonraki işlerde daha doğru tahminleme yapmamızı sağlaycaktır. Bilindiği gibi bu da, işin sonunda bize fayda sağlayacak olan müşteri memnuniyetini artırmada faydalı olacaktır.
Doğru tahminlemeler dileğiyle,