Ogólne techniki są dość rozsądne, ważne jest, aby wiedzieć, że nie wymagają dużej wiedzy technicznej.
Punktem wyjścia przy planowaniu jest określenie dokładnego problemu, który musi zostać rozwiązany, oraz określenie jasnych i jednoznacznych wymagań. Jeśli tego nie masz, twoje prognozy będą niepoprawne. Udokumentowanie tego w jakiejś specyfikacji funkcji, zanim ktokolwiek zacznie pisać kod, oznacza, że wszelkie pytania, które należy zadać, zostaną zadane przed rozpoczęciem kodowania. Jest to zaskakująco skuteczna oszczędność czasu. Cofanie się i wyjaśnianie wymagań przerywa przepływ pracy jako programista, a oczekiwanie na odpowiedzi może blokować postęp.
Po zidentyfikowaniu wymagania należy zidentyfikować zadania związane z jego rozwiązaniem. Jest to klasyczne ćwiczenie typu dziel i zwyciężaj - każde zadanie, które można dalej rozbić, wymaga dalszego rozbicia.
W większym zespole możesz skorzystać z pokera szacunkowego, aby uzyskać oszacowanie oparte na doświadczeniu wszystkich zaangażowanych osób. To nie działa tak dobrze w mniejszym zespole, ale nadal przydatne jest uzyskanie niezależnego oszacowania od obu deweloperów, a być może także uwzględnienie jednego od ciebie - twój brak specjalistycznej wiedzy może być pomocny tutaj, ponieważ wyjaśniając ci, co zadanie polega z ich punktu widzenia, zespół programistów prawdopodobnie lepiej zrozumie problem.
Mniejszy zespół może pomóc w uzyskaniu najlepszego / oczekiwanego / najgorszego oszacowania przypadku dla każdego zadania, co daje zakres wartości, ale jeśli otrzymujesz dużo przekroczeń, możesz skłaniać się w kierunku najgorszego przypadku, aż do momentu, gdy twoi deweloperzy naucz się szacować dokładniej.
W małym sklepie programiści często stają się podwajani jako sysadmini, zespół wsparcia, a nawet testerzy (chociaż ze wszystkich rzeczy, które mogą robić, testowanie jest tym, którego powinieneś unikać za wszelką cenę), więc musisz wziąć to pod uwagę. Dowiedz się, ile czasu faktycznie spędzają programiści pracując nad nowymi funkcjami, i uwzględnij to w swoich szacunkach. Jeśli zadanie jest szacowane na 2 dni, ale Twoi twórcy są w stanie pracować nad nowym rozwojem tylko w 60% przypadków, będziesz potrzebował 4 dni na jego ukończenie. Możesz także pomóc w tym, kontrolując szereg innych zadań, z którymi muszą sobie poradzić, dzięki czemu zadania administracyjne lub pomocnicze, które nie są pilne, mogą być zestawiane razem, a nie wykonywane doraźnie. Wielu programistów (z pewnością włączając w to mnie) nie jest świetnymi menedżerami czasu, więc wszystko, co możesz zrobić, aby pomóc w tym względzie, pomoże. Jednozadaniowość jest zawsze łatwiejsza dla programistów niż wielozadaniowość. Pomocne może być również zablokowanie czasu w ciągu dnia.
Rejestruj - za każdym razem, gdy masz sesję planowania, rejestruj szacunki i wartości rzeczywiste. Następnie możesz użyć tego a) jako przewodnika, o ile należy zwiększyć swoje prognozy podczas planowania i b), aby pomóc im udoskonalić swoje umiejętności szacowania. Na koniec każdej iteracji (lub jakiejkolwiek równoważnej masz) cały zespół powinien dokonać przeglądu wykonanej pracy i dowiedzieć się, dlaczego zajęło to więcej niż oczekiwano, aby można ją było uwzględnić w przyszłych szacunkach. To musi być nienaganne zadanie - wydaje się, że masz tutaj właściwe podejście, ale odpowiedź może być za jakiś czas, więc dokonam obserwacji. Jeśli ktoś powie „popełniłem tutaj błąd”, możesz zmienić to w „co mogłeś zrobić lepiej”, ale powiedzenie ludziom, że byli zbyt powolni lub źle postępowali, tylko pogorszy sprawę.
Nie zdaję sobie sprawy z tego, że nie ma srebrnej kuli dla tego rodzaju problemów, ale najważniejszym czynnikiem jest komunikacja - co w rzeczywistości jest łatwiejsze w mniejszym zespole - i wykorzystanie informacji zwrotnych w celu udoskonalenia twoich wspólnych umiejętności.