2008-12-05 83 views
7

我在過去的幾個月裏一直致力於Flex,因爲這是我第一次實際做Flex。最後,我低估了導致延遲的項目任務。那麼,在研究新技術時如何估算項目時間?如何估算使用新技術的時間?

回答

2

我還建議在看這個線程:Does anyone work with Function Points?

功能點是一個「行業標準」(這意味着什麼),估計需要多長時間做一些事情。對於大多數情況下,他們試圖繪製出該程序的功能,然後把它們放到一個像這樣的algorythm:

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; 
} 

我掛約故事板分以上會談的線,這是一個interresting談話其中和之中。我會研究這兩個主題,以找出哪一個適合你。

功能點和故事板點的好處是它們有一個語言乘法器。所有語言都使用同樣的思維方式。

如果您正在學習一種新語言,那麼您的特定系統的複雜性會更高。

6

我會給自己一段時間來試驗和學習新技術,然後承諾在特定日期提供任何東西。

在第一階段之後,做一些粗略的估計,並確保你的上司知道他們真的有多粗魯。

+1

無法完成。即使上級知道風險人物很粗糙,他們也承認這一點,但他們仍然認爲這些估計值是準確的。 – Mikeon 2009-09-17 07:16:20

10

你不能。

您必須將其視爲研究,無法估計研究。

+2

+1:未經證實的真相。 – 2008-12-05 12:41:33

+2

研究可以很容易地估計 - 只是估計是錯誤的! – 2008-12-05 15:36:11

0

我想對於某個規模的項目,給自己一些時間來做一個相當簡單但仍然完整的項目的代表性部分的原型。然後,您將有充足的時間來使用該技術,並且可以獲得寶貴的洞察力,從而創造出與之相關的時間。

3

當我參與一個將中型開發團隊轉換爲.Net的項目時,可以估算完整轉換的唯一方法是允許進行初始研究階段。這使得一些開發人員可以熟悉該技術,並實現其中的一小部分功能。我發現非常重要的是,系統的部分工作已經完成到生產標準。

還討論過的一件事是聘請一位熟悉該技術的顧問。這是因爲成本而決定的,但我認爲如果有一個有.NET項目經驗的人指引我們朝正確的方向發展,那將是非常有幫助的。

唯一需要補充的是,當你在一個這樣的項目上工作時,重要的是要估計需要多長時間才能讓其他開發者加快速度。顯然這將比研究階段的時間少。雖然從事原型工作的開發人員應該隨時準備幫助那些正在採用新技術的人。

綜上所述:

  • 你需要給自己時間去拿起新tchnology,然後才能給真正的估計。
  • 您需要將您對整個項目經驗的估計值作爲生產標準。
  • 不要害怕聘請有經驗的承包商,以便快速學習最佳實踐。
  • 不要忘記,每個人都需要學習這項技術,然後才放鬆代碼。
0

當我在過去的一個新的技術工作(即當新技術一直是中央對項目的交付。),我有良好的結果估計它:

New Project Time = Project Time * 1.5 

......但不言而喻,這是一條經驗法則和YMMV。

0

你可以做的一件事 - 除了僱用某人或不估計 - 是估計你的任務的相對複雜度,然後比較實際執行時間和複雜度級別。隨着時間的推移,這一比例將趨於穩定。

1

我通常會估計花在學習上的時間和花在分開實施上的時間。即我估計這個項目就好像我知道我在做什麼,基於它的困惑,但是然後試着估計我學習這項新技術可能花費的時間。

1

不久之前,我不得不在Flex的一個項目上工作,並且從未使用過Flex(或Flash)。我也被迫在這個Flex應用程序中使用某個第三方小部件庫。我估計,我認爲這會花費多少時間才能用像Java這樣的合理語言,然後將其翻了一番來考慮學習一種新語言。問題在於,Flex不合理,沒有文檔記錄,標準庫中存在許多錯誤,顯然,我們的第三方庫將標準庫的所有設計特性放在了心上,因爲它也非常重要破碎。我們最終選擇了性能不佳的產品,只有一半的功能和超過指定的時間。值得慶幸的是,管理層讓我們繼續工作了一段時間(他們一直在改變需求,所以他們欠我們那麼多),我們把它變成了非常好的狀態。它仍然沒有做我們想做的所有事情,但是我們繞過了大部分庫錯誤,包括減輕了最糟糕的性能問題(即實例化UIComponent需要很長時間,所以不是在啓動時全部執行它們,我們根據需要來做,這與我們的第三方lib無關)。

因此,簡而言之:

  • 始終估計大量的轉時間學習新的系統。除了學習語言,你需要學習特質。這可能無法準確估計
  • 如果可能,請避免使用Flex。我無法想象直接的Flash會更好,因爲它們共享圖書館的大部分內容。
1

我的經驗法則是將您認爲需要的時間加倍。我發現你會經常遇到一些需要時間解決的意外問題。

0

現在,我遇到了像你這樣的問題。在這裏閱讀這些評論後,我認爲對於新技術我們有一個要深入瞭解的層次。首先,在短時間內研究新技術作爲原始材料(一個素描圖)之後,已經有了細分工作,所以現在只需按順序排列優先順序並進行更深入的研究。

我希望這是有用的。

4

使用霍夫施塔特定律:

它總是需要更長的時間比你預期 ,甚至當你考慮到 帳戶霍夫斯塔特定律。