«««

19 listopada 2010

Na 80% w Piątek

Na ile można być pewnym, że uda się zrobić projekt w 6 tygodni? W ogóle na jakiej podstawie podać takie założenie, a jeśli już to z jakim błędem? Plus minus tydzień? Na podstawie doświadczenia oczywiście. Ale czy jesteśmy nieomylni w swoim szacowaniu? Raczej też nie. No to skąd u licha ja mam to wszystko wiedzieć?! ...da sie

Niejaka Joana Krupa.... wróć, znowu o dupach myślisz człowieku, nic tylko by populacje ratował. Więc, Joel Spolsky wymyślił sobie coś takiego: Evidence Based Scheduling, ale ni w ząb softwaru za darmo nie znalazłem. Zrobiłem więc mały interaktywny wykres z użyciem matplotlib. Muszę jednak trochę ponarzekać, bo mimo fajnych możliwości to ma wybitnie toporną dokumentację. Niby kupę przykładów, ale nikt nie wie co i dlaczego robią. No nic, jakoś przebrnąłem.
Skróconą wersję i po polsku można ogarnąć z tej prezentacji

Jak wiadomo metodę Monte Carlo wymyślono po to, aby odpowiadać na idiotyczne pytania np. czy Polacy potrafią śpiewać? Żaden normalny człowiek tego nie wie, a MC tak. Wystarczy wylosować Polaka i ocenić jak śpiewa, a potem jeszcze ~10000 kolejnych. Oczywiście można wystawić im średnią ocenę, ale jak zrobimy histogram to będziemy mieli wszystko. Brońcie panie boże, żeby Was tak ktoś kiedyś oceniał.

Czas na małą prezentację

Jak już wspomniałem wykres jest interaktywny i będzie się aktualizował o nowe losowania dopóki go nie wyłączymy.
Zielona pionowa linia to średnia liczona w sposób tradycyjny dla porównania.
Kolor określa jednocześnie wysokość słupka (prawdopodobieństwa), można więc łatwo odczytać jakiemu upływowi czasu odpowiada. Czas jest tylko arbitralnie dobraną jednostką, ale to może być cokolwiek.
Skrypt obsługuje kilka klawiszy:
h   - pomoc
a   - zwęź słupki
z   - rozszerz słupi
x   - zwęź skalę osi x
c   - rozszerz skalę osi x
e   - pokaż strzałkę
q   - pauza
esc - wyjście
Zobacz też skróty okienka matplotlib. I tak np. jeśli się naciśnie kilka razy 'a' to dostaniemy takie kwiatki:
A teraz do rzeczy: jak to uruchomić?
Potrzebne będą dwa pliki z danymi. W jednym będą oszacowane zadania do wykonania w projekcie, a w drugim nasze doświadczenie w postaci miało zająć/zajęło. To może ja pokażę.

project.dat
2 # poczytam teorię
3 # projektowanie bloczków
6 # serce aplikacji
4 # obsługa kontroli silnika
Plik opisuje projekt, który chcemy oszacować. Liczby reprezentują dowolna jednostkę np. godziny, a po '#' jest opcjonalny komentarz.

estimator.dat
2/2 # doświadczenie w formacie:
4/5 # miało być ;) / a było ;(
1/6
3/1  # ...komentarze opcjonalne
14/10
Ten plik natomiast jest dzienniczkiem naszego doświadczenia w podobnych zadaniach i zdolności naszego szacowania czasu. Przykładowo, jeśli założyliśmy, że pogramy w piłkę 3 godziny, a graliśmy tylko 2 to zapisujemy to jako 3/2. Proste jak drut.
Tu można pobrać przykładowe pliki project.dat i estimator.dat
uruchomienie:
ebs.py project.dat estimator.dat
Im więcej danych, tym wykres będzie bardziej symetryczny. Tu danych było malutko:
...ale nie wiem jak to interpretować.

So, kiedy następnym razem będziemy się gryźli ile nam zajmie zmiana koła w czasie deszczu w Wygwizdowie, możemy z autopsji zrobić rozkład prawdopodobieństwa.

Do pobrania

Skrypt ebs.py (repo)

Aktualizacja: 2010.11.20-17:24

Dodałem help i możliwość kontroli skali osi x

Brak komentarzy: