Bufor? Tak! Ale jak można go oszacować? Oto jest pytanie!
Poprzedni tekst prezentujący budowę i monitorowanie projektu z wykorzystaniem buforów zakończyliśmy pytaniem: jak określić wielkość bufora? Dziś przyszedł czas na odpowiedź.
Istnieją i są stosowane w praktyce trzy podstawowe metody określania wielkości bufora. Najpierw więc je zwięźle przedstawię, potem zaś zastanowię się nad ich silnymi i słabymi punktami.
Pierwsza z nich, przedstawiona została przez Eliyahu Goldratta w książce „Łańcuch krytyczny”. Jest bardzo prosta, gdyż polega po prostu na policzeniu długości łańcucha zadań (szacowanych metodą 50%) i podzieleniu tej długości przez 2. Stąd też można ją nazwać metodą połowy łańcucha. Wg tej metody jeśli mamy 10 zadań oszacowanych metodą czasów agresywnych (50%) na 10 dni, to bufor – dla tego ciągu zadań – wyniesie 50 dni ((10 * 10)/2). Tym samym czas trwania projektu wyniesie 150 dni: 100 dni na realizację zadań i 50 dni bufora. Metoda prosta? Tak. Łatwo zrozumiała? Tak. Ale czy nie za prosta i czy nie prowadzi do zbyt dużych buforów? Ano właśnie – to bardzo dobre pytanie.
Pozostałe dwie metody wykorzystują dwa oszacowania, o których czytaliście w poprzednim tekście na temat buforów: oszacowanie agresywne (tzw. 50 %-owe) oraz oszacowanie bezpieczne (tzw. 90 %-owe).
Druga metoda określania wielkości bufora polega na podzieleniu przez 2 sumy różnic oszacowań bezpiecznych i agresywnych.
Bufor = Σ( tbi – tai)/2
Stąd też można ją nazwać metodą połowy marginesu bezpieczeństwa, lub w skrócie połową bezpieczeństwa. Przecież tak naprawdę różnica miedzy oszacowaniem bezpiecznym (90%-owym), a oszacowaniem agresywnym (50 %-owym) stanowi margines bezpieczeństwa „wbudowany” w oszacowanie zadania przez szacującego jego czas trwania wykonawcę. Jeśli więc w łańcuchu zadań mamy 10 zadań i ich oszacowania wynoszą – odpowiednio:
Oszacowania bezpieczne: 30 -20 - 20 -15 – 10 -20 – 20 – 20 – 20 -25 (razem: 200 dni)
Oszalowania agresywne: 12 -10 – 8 - 10 – 5 - 5 – 10 – 5 – 10 -15 (razem 90 dni),
to sumaryczny margines bezpieczeństwa wynosi 110 dni, a wielkość bufora wynosi – zgodnie z tą metodą - połowę marginesu bezpieczeństwa, czyli: 110/2 – a więc 55 dni.
Wreszcie metoda trzecia. Wg niej bufor łańcucha zadań jest równy pierwiastkowi sumy kwadratów różnic między oszacowaniami 90%-owymi, a oszacowaniami 50%-owymi zadań tworzących łańcuch zadań. Podstawą tego podejścia są dwa następujące stwierdzenia. Pierwsze mówiące o tym, że chcielibyśmy, by bufor łańcucha zadań dawał taki sam poziom bezpieczeństwa, jak oszacowanie bezpieczne zadań (czyli 90%) oraz, że różnica między oszacowaniem bezpiecznym, a agresywnym wynosi około dwa odchylenia standardowe (czyli: 2σ = tb – ta). Na tej podstawie można stwierdzić, że bufor powinien wynosić właśnie dwa odchylenia standardowe, czyli:
2σ = 2 * √(( tb1 – ta1)/2)2 +(( tb1 – ta1)/2) 2 + ….+ (( tb1 – ta1)/2) 2
I w konsekwencji:
2σ = √( tb1 – ta1)2 +( tb1 – ta1) 2 + …. + ( tb1 – ta1) 2
Stąd metoda ta nazywa jest także SRSS (Square Root of Sum of Squares).
Jeśli teraz metodą SRSS określimy wielkość bufora dla łańcucha 10 zadań z poprzedniego przykładu (metoda druga – połowa bezpieczeństwa), to dla tych samych oszacowań zadań można najpierw policzyć różnice między czasem bezpiecznym i agresywnym dla każdego zadania oraz kwadrat tych różnic:
Różnice oszacowań: 18 – 10 – 12 – 5 – 5 – 15 – 10 – 15 – 10 – 10
Kwadrat różnic: 324 – 100 – 144 – 25 – 25 – 225 – 100 – 225 – 100 – 100 (razem 1368).
Stąd SRSS wynosi 37, a czas trwania łańcucha zadań to 90 plus bufor wielkości 37, co razem daje 127 dni.
Metody obliczania bufora już znamy. Czas na zasadnicze pytanie: którą z tych metod i kiedy stosować?
Od razu powiem, że jestem zwolennikiem jednej z dwóch metod, wykorzystujących dwa oszacowania: bezpieczne i agresywne. Po pierwsze dlatego, że – w przeciwieństwie do pierwszej metody („Połowa łańcucha”) – uwzględniają przy określaniu wielkości bufora stopień niepewności w każdym z zadań (czyli różnicę między tb i ta). Ponadto skłaniają do dyskusji i rozmowy na temat tych oszacowań i analizy warunków realizacji zadania. Coś tak jak w metodach „zwinnych”, gdzie właśnie dialog i rozmowa o projekcie i oszacowaniach user stories odgrywa tak fundamentalną rolę.
Główną zaletą metody („Połowa łańcucha”) jest jej prostota. I dlatego jest stosowana często w pierwszej fazie wprowadzania tej nowej metody harmonogramowania i monitorowania projektu.
I jeszcze jedna kwestia dotycząca odpowiedzi na pytanie którą z opisanych metod stosować. To typ projektu, związany z tym, czy jest on bardziej horyzontalny (rozciągnięty na osi czasu, czyli wiele zadań sekwencyjnych), czy też bardziej wertykalny (czyli wiele zadań, lub etapów projektu jest realizowanych równolegle). Którą metodę stosować w przypadku projektu „horyzontalnego”, a którą „wertykalnego”? Tym razem odpowiem: spróbujcie sami znaleźć odpowiedź.
Macie podobne doświadczenia z buforami? A może krańcowo inne? A może stosujecie jeszcze inne podejście do określania ich wielkości? Jeśli tak, to zapraszam do dyskusji.