My, jako programiści, ciągle pytamy: „Jak długo to potrwa”?
I wiesz, sytuacja jest prawie zawsze taka:
- Wymagania są niejasne. Nikt nie przeprowadził dogłębnej analizy wszystkich implikacji.
- Nowa funkcja prawdopodobnie złamie niektóre założenia przyjęte w kodzie i natychmiast zaczniesz myśleć o wszystkich rzeczach, które możesz zmienić.
- Masz inne rzeczy do zrobienia na podstawie wcześniejszych zadań i będziesz musiał opracować szacunek uwzględniający tę inną pracę.
- Definicja „zrobione” jest prawdopodobnie niejasna: kiedy zostanie wykonana? „Gotowe” jak właśnie skończyłem kodować, czy „gotowe” jak w „użytkownicy go używają”?
- Bez względu na to, jak bardzo jesteś świadomy tych wszystkich rzeczy, czasami twoja „duma programisty” sprawia, że dajesz / akceptujesz krótsze czasy, niż początkowo przypuszczałeś. Zwłaszcza, gdy czujesz presję terminów i oczekiwań kierownictwa.
Wiele z nich to kwestie organizacyjne lub kulturowe, które nie są proste i łatwe do rozwiązania, ale w rzeczywistości w rzeczywistości pyta się cię o wycenę i oczekują od ciebie rozsądnej odpowiedzi. To część twojej pracy. Nie możesz po prostu powiedzieć: nie wiem.
W rezultacie zawsze kończę na oszacowaniach, które później uświadamiam sobie, że nie mogę spełnić. Stało się to niezliczoną ilość razy i zawsze obiecuję, że to się więcej nie powtórzy. Ale tak jest.
Jaki jest twój osobisty proces podejmowania decyzji i dostarczania wyceny? Jakie techniki uważasz za przydatne?
project-management
development-process
estimation
time-management
Sergio Acosta
źródło
źródło
Odpowiedzi:
Od pragmatycznego programisty: Od czeladnika do mistrza :
W sekcji autorzy zalecają następujący proces:
źródło
Szacowanie oprogramowania jest najtrudniejszym pojedynczym zadaniem w inżynierii oprogramowania. Drugim etapem jest wzbudzanie wymagań.
Istnieje wiele taktyk ich tworzenia, wszystkie oparte na uzyskaniu dobrych wymagań. Ale kiedy twoje plecy opierają się o ścianę i odmawiają podania lepszych szczegółów, Fake It:
To tak, jak moja matka groziła, gdy byłem dzieckiem „Pośpiesz się i wybierz jakieś ubrania, albo ja je dla ciebie wybiorę !”
źródło
Stworzyłem program dla faceta, który był bardzo nieugięty w kwestii dokładnych szacunków. Ustaliliśmy, co działało bardzo dobrze, to:
20-25% fakturowania brzmi bardzo często.
Ale poprosił mnie o zmianę XYZ, sądząc, że zajmie to około 2 godzin. Po 1 godzinie szczegółowego oszacowania ustaliłbym, że zajmie to 8,5 godziny. Więc zdecyduje, czy warto było zapłacić 8,5 godziny. Jeśli nie, zaoszczędziłby 7,5 godziny ponad tym, co kosztowałoby go, gdybym to zrobił bez oszacowania.
A jeśli on nie chce zainwestować 8,5 godziny, szczegóły pracy zrobiłem dla oszacowania była praca bym musiał zrobić tak.
Przekonałem się, że dzięki tej metodzie byłem w stanie wykonać większość zadań na czas, a nawet wcześnie, bez nadmiernego przeceniania. Ponieważ czas był tak drobiazgowy, że mogłem wcześnie stwierdzić, czy się poślizgnęłam. Jeśli uderzę w przeszkody, aby po 3 godzinach móc stwierdzić, że moje 8,5-godzinne zadanie zajmie 12, mógłbym z nim porozmawiać o tym, zanim upłynie więcej czasu, aby mógł ponownie ocenić i szarpnąć tę funkcję, gdyby był zaniepokojony kosztami .
Czy on był niklem i przyćmił? Nie, patrzyłem na to, pozwalając mu wykorzystać pieniądze tam, gdzie widział najwięcej korzyści. Cieszyłem się z doświadczenia w szacowaniu, w którym zawsze byłem okropny.
źródło
Często jesteśmy proszeni o „szacunkową ocenę” podczas spotkań, podczas których otrzymujemy bardzo szerokie i szczegółowe pomysły na to, co chcieliby zrobić. Zawsze mówię: „jeśli dzisiaj chcesz uzyskać odpowiedź, to jest to rok i milion dolarów. Jeśli chcesz podać mi znacznie więcej szczegółów i trochę czasu na ich przejrzenie, mogę dopracować te liczby”.
Prawie zawsze mają rację.
źródło
To zależy od tego, do czego służy szacunek.
W przypadku wstępnego oszacowania wysokiego poziomu dla uzasadnienia biznesowego najważniejsze są:
Znajduję najlepszą technikę wyboru porównywalnego projektu, który „czuje” to samo. „Poczuj” jest całkowicie subiektywne - ale przy takim szacunku moje doświadczenie mówi mi, że nie znajdziesz obiektywnych pomiarów. Następnie zapewnij szeroki zakres. Przeczytałem kilka książek, które mówią, że zakres od -50% do + 100% jest dobry, ale zależy to od wielu czynników.
Aby uzyskać szczegółowe oszacowanie niskiego poziomu:
źródło
Kilka rad od ciemnej strony od tego, który nauczył się na własnej skórze.
Nie dokonuj oszacowania w tym momencie. Nie wiadomo, ilu żołnierzy potrzeba, aby wygrać bitwę, nie mając pojęcia o liczebności wroga. Oszacowania dokonuje się po rozpoznaniu. Jest tak, chyba że walczyłeś już z tym wrogiem.
Twoim obowiązkiem jest uwzględnienie, chyba że oczekujesz od innych wiedzy specjalistycznej w tej dziedzinie.
To samo, co powyżej, nawet w przypadku nieoczekiwanej pracy, którą tworzy obok ciebie kolega z zespołu slobowego, z prawie nieistniejącą procedurą testową, która powoduje, że kod się zepsuje, czego nie można dokładnie przewidzieć z góry. To prognoza pogody.
Zrozum tutaj wymóg użytkownika końcowego, myśl jak użytkownik. Nie rób tego, co zrobić, jeśli twoi rówieśnicy szacują, że coś się „zrobić” tylko dlatego, że niektóre podstawowe funkcje z w podstawowe workflow, że żaden użytkownik może ewentualnie tolerować to, co uważają za „done” . Pomyśl o tym z punktu widzenia użytkownika, ponieważ to tylko klient, którego szacujesz, zazwyczaj zrozumie. Oszacuj w kierunku pełnych wymagań użytkownika końcowego, a nie w oparciu o wymagania techniczne. I zdaj sobie sprawę, że Twoi klienci pytający o szacunki będą tutaj całkowicie niedokładni w kwestii tego, jak formułują słowa i rozumieją techniczne aspekty tego, co mówisz.
Nie rób tego! Brzmisz jak zmotywowany pracowity i być może taki, który łatwo poddaje się przymusowi.
Problem w tym, że: powiedzmy, że ty i Joe dokonaliście oszacowań czasu dla tego samego zadania (ale między dwoma oddzielnymi pracownikami, nieświadomymi obu oszacowań naraz). Odważnie oceniacie „jeden tydzień” . W porządku, myślisz, że będziesz pracować ponad 100 godzin tygodniowo, nieodpłatne nadgodziny. Teraz spóźniłeś się trzy dni.
Tymczasem Joe ocenia 5 miesięcy. Myślisz, że to śmieszne, myślisz, że możesz to zrobić w ciągu jednego tygodnia. Ile działa Joe? 10 godzin tygodniowo? ... tyle że kończy na czas dokładnie za 5 miesięcy.
Zgadnij, kto jest postrzegany jako osioł? Zgadza się. Joe wydaje się świetnym pracownikiem, wydajesz się teraz niewiarygodnym. Nie ma to tak wielkiego znaczenia, że mógłbyś osiągnąć jeszcze lepszy wynik w ~ 7% czasu, który zajął Joe. Liczy się to, że miałeś 3 dni wolne od tygodniowego oszacowania.
Nigdy nie błądzić po stronie dokładniejszego oszacowania. Błąd po stronie luźniejszych danych szacunkowych. W Twojej firmie istnieje reputacja i nie będzie ona oparta na długości szacunków prawie tak samo, jak dokładność szacunków. Łatwo jest być dokładnym z oszacowaniem, które jest zbyt długie, po prostu masz więcej czasu na pracę nad problemem i lepsze jego rozwiązanie. Szacunek, który jest zbyt krótki, wcale nie pozostawia miejsca na oddech, albo desperacko go spotkasz, albo wpadniesz w szał.
źródło
"Dwa tygodnie!"
Poważnie. Moje pierwsze oszacowanie to zawsze dwa tygodnie. Ponieważ mam jakiś dziwaczny blok myślowy, który sprawia, że myślę, że wszystko brzmi jak za dwa tygodnie.
Staram się to obejść, naprawdę zastanowić się, ile czasu zajmie, próbując zidentyfikować wszystkie potencjalne punkty problemów i bity, które wyglądają na zbyt czarne, żebym mógł je dokładnie oszacować. I spróbuj rozpoznać, że jeśli moja odpowiedź brzmi „Dwa tygodnie!”, Prawdopodobnie tego nie zrobiłem.
Prawie każdy dobry menedżer, którego nauczyłem się rozpoznawać „Dwa tygodnie!” jako odpowiedź, która wymaga łagodnego ustnego uderzenia alfonsa w odpowiedzi.
źródło
Jest wpis na blogu, w którym opisano, jak prowadzić rejestr dokładności poprzednich szacunków, a następnie następnym razem, gdy powiesz komuś „to będą dwa tygodnie”, możesz spojrzeć na swoją poprzednią historię i zobaczyć, jak długo to potrwa ostatnio zajęło mi to, że powiedziałeś „to będą dwa tygodnie”.
Sam tego nie próbowałem, ale chciałbym zobaczyć, jak dokładne są moje szacunki.
źródło
To zależy od organizacji i sposobu wykorzystania szacunków.
Jeśli oszacowanie ma jedynie dać ogólny wyobrażenie o tym, kiedy będzie gotowy, ogólnie mogę dokonać szybkiego oszacowania na podstawie mojego doświadczenia. Często do szacunków dołączam wszelkie niepewności lub możliwe zmiany wraz ze sposobem, w jaki zmiany mogą wpłynąć na inne obszary systemu i wymaganym zakresem testów regresji.
Jeśli oszacowanie stosuje się w odniesieniu do jakiejkolwiek umowy lub w scenariuszu, w którym wymagany jest bardziej precyzyjny harmonogram, wykonuję pełny podział pracy. Jest to więcej pracy i wymaga głębszego przemyślenia na temat projektu i zmian w systemie, ale jest znacznie dokładniejsze, szczególnie w przypadku większych prac.
W obu przypadkach kluczowa jest ciągła komunikacja. Jeśli natrafisz na coś nieoczekiwanego, poinformuj o tym zamiast czekać na termin. Jeśli wymagania nie są jasne, upewnij się, że udokumentowałeś ich zrozumienie i funkcjonalność, którą planujesz dostarczyć. Jest to również pomocne przy wszelkich przyjętych założeniach. Jeśli chodzi o konkurujące priorytety, gdy jedna praca uderza w drugą, jasno określ, jak wpłynie to na harmonogram.
źródło
Szacunki na co? Małe zadania lub kompletne rozwiązania.
Te ostatnie rzadko robię, ale po prostu zgaduję, dodaj trochę, poproś menedżera, aby dodał trochę i przekształcił go w zakres, z małą notatką obok stwierdzającą, że powyższe jest przypuszczeniem.
Małe zadania - Planowanie pokera Stwierdziłem, że działa naprawdę dobrze (nie idealnie, niektóre zadania 1pt zajęły znacznie dłużej, a niektóre zadania 5-minutowe zajęły minuty, ale ostatecznie wszystko wyrównało się).
źródło
Zaprezentuj ofertę w oparciu o to, co wiesz dzisiaj. Użyj Stożka Niepewności, aby określić zasięg wokół początkowych szacunków.
Co tydzień obliczyć, ile pozostało do zrobienia, ponownie oszacuj na podstawie tego, co wiesz. Gdy będziesz mieć wystarczająco dużo próbki, ile pracy wykonujesz każdego tygodnia, podaj 90% przedział ufności dla tego, co pozostało, aby dać (zwykle) zawsze zawężający się zakres dat w miarę postępu projektu i pozostałej pracy (mam nadzieję, że ) kurczy się.
źródło
Ufnie. Nie potrafię powiedzieć, ile razy spartaczyłem pierwsze spotkanie z klientem, nie zakładając profesjonalizmu przy wycenie. Nawet jeśli wydmuchujesz liczby z powietrza - upewnij się, że zawsze masz jakieś szacunki. To powiedziawszy, uważaj, aby nie ocenić siebie w dziurze. Różne rzeczy wymagają różnej ilości czasu, wysiłku i zasobów. Oto dobry sposób, aby to zrobić:
źródło
Czasami szacowanie staje się ogromnym wyzwaniem dla Ciebie i Twojego zespołu, szczególnie gdy mówimy o szacowaniu projektu oprogramowania.
Kiedyś postanowiliśmy podzielić się naszym doświadczeniem i naszą wiedzą na temat procesu szacowania oprogramowania i zdefiniowaliśmy cztery różne typy szacunków :
Oczywiście te typy są różne. Ballpark jest często nazywany „guesstimate”. Jest to więc przybliżona liczba lub zakres, który daje ogólne wyobrażenie o kosztach i może pomóc potencjalnemu klientowi zdecydować, czy chcieliby kontynuować dyskusję.
Z reguły klienci potrzebują postaci na boisku na początku projektu. Nasza rada jest taka: omówienie projektu i podanie danych liczbowych powinno być tylko krokiem w kierunku otrzymania oszacowania częściowego (który jest elastyczny, można skorzystać z oszacowania typu częściowego dla całego procesu rozwoju. Nie trzeba dokonywać ponownej oceny od zera, kiedy chcesz dodać, usunąć lub zastąpić funkcje, usługi itp.).
Każdy powinien pamiętać o ryzyku związanym z szacowaniem rozwoju oprogramowania: niedoszacowaniem, przeszacowaniem, całkowitym epickim scenariuszem awarii itp.
Możesz przeczytać więcej na naszym blogu!
http://blog.lemberg.co.uk/project-management/software-estimation-process/
Mam nadzieję, że te informacje pomogą ci!
źródło
Brzmi jak prośba o zobowiązanie, a nie szacunek. Są to różne rzeczy, ale jeśli potrafisz rzetelnie zarządzać zobowiązaniami, naprawdę pomoże ci to w wiarygodności i karierze.
Kilka porad opartych na moim ~ 10-letnim doświadczeniu:
źródło
Po pierwsze, jeśli jakieś zadanie zostało mi przydzielone, podzieliłbym je na podzadania. Oszacowałbym czas dla każdego podzadania i prawdopodobnie z podzadaniami mógłbym znaleźć problematyczny obszar, a zatem byłbym w stanie przewidzieć, jak długo to potrwa wziąć do pewnego stopnia.
Ale nadal całe planowanie pomogłoby tylko do pewnego stopnia. Dopiero po rozpoczęciu kodowania można znaleźć dokładne problemy
źródło
Jeśli wykonujesz wiele projektów dla tego samego szefa lub klienta, możesz próbować oszacować w szerokich pociągnięciach złożoności zamiast tygodni lub miesięcy, być może w rozmiarach koszulek. Zidentyfikuj kilka poprzednich projektów i przypisz im rozmiary S, M, L, XL.
A potem zadaj sobie pytanie: który projekt brzmi podobnie do zakresu? A następnie zamiast odpowiadać „2 miesiące”, możesz odpowiedzieć „brzmi dla mnie jak L” (lub jakakolwiek inna kalibracja dla twojego projektu).
Jest to dość łatwe do zrozumienia i jasne jest również, że w tych domysłach jest wiele niepewności.
Następnie, gdy zmieniają się wymagania, możesz powiedzieć „ta zmiana sprawia, że brzmi bardziej jak XL”.
źródło
Trochę późno, ale kiedy byłem w wojsku, poinstruowano nas, aby użyć PERT do ustalenia szacunków. Wymaga to doświadczenia w swojej dziedzinie i wykonywanego zadania. Był zaskakująco dokładny przy określaniu szacowanego czasu ukończenia podczas konserwacji i naprawy urządzeń elektronicznych (skomplikowanych urządzeń radiowych i łączności satelitarnej), gdzie dowolna liczba rzeczy może być błędna lub znaleziona i wymagała naprawy podczas rutynowej konserwacji. Oszacowania były ważne, ponieważ inne jednostki mogą nie działać, dopóki nie odzyskają sprzętu łączności. Jednym z nich jest darmowy kalkulator PERT online
źródło