2008-12-05 7 views
7

Pracuję nad programem Flex przez ostatnie kilka miesięcy, a ponieważ po raz pierwszy musiałem wykonywać Flex, nie doceniłem zadań projektu, które spowodowały opóźnienie. Jak ocenia się czasy projektu podczas pracy nad nową technologią?Jak oszacować czasy pracy nad nową technologią?

Odpowiedz

2

Polecam również patrząc na tego wątku: Does anyone work with Function Points?

Function Points są „standardem przemysłowym” (cokolwiek to znaczy) do oszacowania, ile czasu potrzeba, aby coś zrobić. Dla większości starają się nakreślić co robi program, a następnie umieścić je w algorytmem jak ten:

long GetManHoursForProject() 
{ 
    long Count_of_Function_Points = GetFunctionPointCountFromAnalyticalPhaseOfSDLC(); 
    double Average_Complexity  = 1; // .8 for easy, 1 for normal, 1.2 for hard 
    long Programming_Language  = 130; // for C++ (higher level languages have higher values) 


    double Man_Months = Count_of_Function_Points * Programming_Language * Average_Complexity; 


    long Man_Hours = Man_Months * 20 * 8; // 20 days per month, 8 hours per day 

    return Man_Hours; 
} 

Gwint I związana z powyższych rozmów o Story Board punktów, co jest interresting rozmowa w sobie i między sobą. Zajrzałbym do obu tych tematów, aby znaleźć, który z nich działa dla ciebie.

Fajną cechą punktów funkcyjnych i punktów fabuły jest to, że mają mnożnik języka. Ten sam sposób myślenia stosowany jest we wszystkich językach.

Jeśli uczysz się nowego języka, to złożoność byłaby wyższa dla określonego systemu.

+0

to była fajna odpowiedź do napisania. – Jeremiah

+0

Jakie to ma zastosowanie w przypadku stosowania? Wygląda na to, że ustawiasz masę liczb, aż wydają się "rozsądne", ustawiając Average_Complexity & Programming_Language na pewną zmienną. Przynajmniej jest to otwarte. –

+0

Cóż, dla nas było to dobre narzędzie, aby pokazać szefowi, jak można oszacować czas. Jeśli powiemy mu "Cóż, to jest skomplikowana zmiana", oni widzą, jak to wpływa na czas. Zazwyczaj mieści się w granicach 20% czasu rzeczywistego. To lepsze niż strzelanie z biodra. – Jeremiah

6

Dałbym sobie określony czas na eksperymentowanie i poznanie nowej technologii przed obiecaniem dostarczenia czegokolwiek w określonym dniu.

Po tym pierwszym okresie zrób kilka przybliżonych szacunków i upewnij się, że twoi przełożeni wiedzą, jak bardzo są szorstcy.

+1

nie można wykonać. Nawet jeśli przełożeni zostaną poinformowani, że ich wyniki są surowe i przyznają się do tego, wciąż uważają, że szacunki są dokładne w głębi serca. – Mikeon

10

Nie możesz.

Należy uznać to za badania, a badań nie można oszacować.

+2

+1: Bezbarwna prawda. –

+2

badania można łatwo oszacować - po prostu szacunki będą błędne! –

0

Sądzę, że w przypadku projektów o określonej wielkości, należy poświęcić trochę czasu na racjonalnie prosty, ale wciąż kompletny i nie trywialny prototyp jakiejś reprezentatywnej części projektu. Będziesz mieć trochę czasu na zabawę z technologią, a także zdobędziesz cenną wiedzę na temat czasu potrzebnego do stworzenia z nią rzeczy.

3

Kiedy pracowałem w projekcie, aby przełączyć średniej wielkości zespół programistów na .Net, jedynym sposobem oszacowania całkowitej konwersji było umożliwienie początkowej fazy badań. Pozwoliło to niektórym programistom na zapoznanie się z technologią i wdrożenie w całości niewielkiej części funkcjonalności. Stwierdziłem, że bardzo ważne jest, aby część systemu, nad którą pracował, została ukończona zgodnie ze standardem produkcyjnym.

Coś, co zostało również omówione, było zatrudnienie konsultanta, który znał technologię. Decyzja ta została odrzucona z powodu kosztów, ale myślę, że byłoby niezwykle pomocne, gdyby ktoś, kto miał doświadczenie w projektach .NET, wskazał nam właściwy kierunek.

Jedyną rzeczą, którą należy dodać, jest to, że podczas pracy nad projektem tego rodzaju ważne jest również oszacowanie, ile czasu zajmie przyspieszenie działania innych programistów. Oczywiście będzie to mniej niż czas, który zajęła faza badań. Choć programiści, którzy pracowali nad prototypem, powinni być pod ręką, aby pomóc tym, którzy teraz wybierają nową technologię.

Podsumowując:

  • Trzeba dać sobie czas, aby odebrać nową tchnology zanim można dać realne szacunki.
  • Musisz bazować na szacunkach dotyczących doświadczenia pełnego projektu, do standardu produkcji.
  • Nie bój się zatrudnić kontrahenta z doświadczeniem, aby szybko poznać najlepsze praktyki.
  • Nie zapominajcie, że każdy musi nauczyć się tej technologii, zanim zostaną uwolnieni od kodu procdu.
0

Kiedy pracowałem z nową technologią w przeszłości (tj kiedy nowa technika jest kluczowe dla realizacji projektu.), Miałem dobre wyniki przy szacowaniu go jako:

New Project Time = Project Time * 1.5 

... ale nie trzeba dodawać, że jest to reguła i YMMV.

0

Jedną rzeczą, którą możesz zrobić - oprócz zatrudniania kogoś lub bez szacowania - jest oszacowanie względnej złożoności swoich zadań, a następnie porównanie faktycznego czasu wdrożenia do poziomu złożoności. Z biegiem czasu stosunek będzie zbliżał się do stabilnej wartości.

1

Zazwyczaj oceniam czas spędzony na uczeniu się oraz czas spędzony na realizacji oddzielnie. To znaczy. Mój projekt oceniam tak, jakbym wiedział, co robię, biorąc pod uwagę jego rozterkę, ale potem spróbuję oszacować czas, jaki zajęłoby mi nauczenie się nowej technologii.

1

Nie tak dawno temu musiałem pracować nad projektem w Flexie i nigdy wcześniej nie używałem Flexa (lub Flasha). W tej aplikacji Flex byłem również zmuszony do korzystania z pewnej biblioteki widgetów innej firmy. Oszacowałem, jak długo sądziłem, że zajmie to rozsądny język, taki jak Java, a następnie podwaja go w przybliżeniu, aby uwzględnić naukę nowego języka. Problem polegał na tym, że Flex nie jest rozsądny, nie jest udokumentowany, istnieje wiele błędów w standardowej bibliotece i najwyraźniej nasza zewnętrzna biblioteka wzięła do serca wszystkie cechy wzornicze biblioteki standardowej, ponieważ również była bardzo złamany. W efekcie otrzymaliśmy produkt o słabej skuteczności z połową funkcji i przez wyznaczony czas. Na szczęście zarządzanie pozwoliło nam na kontynuowanie pracy nad nim przez jakiś czas (zmieniali wymagania, tak nam to zawdzięczają) i udało nam się uzyskać naprawdę dobrą formę. Nadal nie robi wszystkiego, co chcieliśmy, ale włamaliśmy się do większości błędów biblioteki, w tym do złagodzenia najgorszych problemów związanych z wydajnością (mianowicie, utworzenie egzemplarza UIComponent trwa DŁUGI CZAS, więc zamiast wykonywać je wszystkie przy starcie, robimy to w razie potrzeby. Nie ma to związku z naszą biblioteką 3rd party).

Więc w skrócie:

  • Zawsze oszacować dużo czasu wirowania-up dla uczenia się nowego systemu. Poza uczeniem się języka, musisz nauczyć się specyfiki. Jest to prawdopodobnie niemożliwe do dokładnego oszacowania
  • Unikaj Flex, jeśli w ogóle możliwe. Nie potrafię sobie wyobrazić, że Flash jest lepszy, ponieważ dzielą dużą część biblioteki.
1

Moja zasada polega na podwojeniu czasu, jaki według Ciebie zajmie. Odkryłem, że zawsze napotkasz na nieoczekiwane problemy, których rozwiązanie zajmie trochę czasu.

0

Teraz spotykam problem podobny do twojego. Po przeczytaniu tych komentarzy tutaj, Myślę, że należy do poziomu, który chce być głęboko jasne o nowej technologii. Po pierwsze, po prostu badaj w krótkim czasie nową technologię jako surową (rysunek szkicu), po tym, jak już działa podział, więc teraz po prostu ustalaj priorytety i badaj głębiej według zamówienia.

Mam nadzieję, że jest to przydatne.

4

Zastosowanie Prawo Hofstadtera za:

To zawsze trwa dłużej niż można oczekiwać, nawet jeśli wziąć pod uwagę Prawo Hofstadtera użytkownika.

Powiązane problemy