Kilka rad od ciemnej strony od tego, który nauczył się na własnej skórze.
Wymagania są niejasne. Nikt nie przeprowadził dogłębnej analizy wszystkich implikacji.
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.
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ć.
Twoim obowiązkiem jest uwzględnienie, chyba że oczekujesz od innych wiedzy specjalistycznej w tej dziedzinie.
Masz inne rzeczy do zrobienia na podstawie wcześniejszych zadań i będziesz musiał opracować szacunek uwzględniający tę inną pracę.
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.
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ą”?
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.
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.
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ł.