1、測試資源不足和保證軟件質量的矛盾
沒有可用的測試團隊或測試人員,在很多小型開發團隊和小公司都普遍存在測試資源不足的問題,甚至在某些大公司也可能出現。嚴格的成本控制,導致測試資源相對不夠;失敗的項目開發計劃會導致壓縮測試的時間來保證研發的時間;到了測試的時候,就肯定出現你們現在這樣的情況。最后的結果呢,是所有人都得不了好:領導會因為客戶的投訴而頭疼甚至被老板罵;項目經理會對質量負主要責任,對整個項目負主要責任。如果有測試團隊,測試會對質量控制負主要責任。沒有,項目經理負主要責任。
應對辦法有以下幾個:讓開發人員做測試;讓有限的測試人員只測試主要核心功能點;項目經理死扛,自己親力親為;降低軟件質量;讓領導充分意識到這個矛盾的風險。
2、項目日程表異常緊急和按時上線的矛盾
這類項目最大的問題是時間成本。時間成本越緊,失敗風險越大。要提高這種項目的成活幾率,只有一個辦法。砍范圍。把所有可有可無的需求砍掉,放到下一期去實現。確保團隊能夠以合理的生產率產出成果。項目經理要做的最重要的就是,想盡一切辦法,把優先級低的功能砍掉。集中資源保證高優先級需求的產出。要隨時告訴明白客戶,團隊最大的產出是多少,團隊正在做哪些功能。及時讓客戶進行確認和調整。讓客戶明白風險在哪里有多大。這是非常考驗項目經理溝通、談判、組織協調能力的。能把客戶啃下來,保證團隊正常工作,還有1、2分活的可能。不然,最后就當替罪羊吧。團隊、老板、客戶,都需要你承擔責任。
3、團隊的生產率嚴重低于估計和項目按時上線的矛盾
項目競標的時候是公司專家組資深架構師按照已有生產率來進行項目估時和報價的,但項目開始以后出現資源不足問題,例如:原來C++團隊的資深工程師走光了,只有兩個新人可用。原先是按照資深C++開發工程師的生產率來估計的時間,現在給你這樣的一個團隊,生產率和資深C++開發工程師相差很多倍。項目日程表卻異常緊急,這怎么辦? 沒辦法。這種項目的失敗風險是極高的。解決辦法只有找外援或者項目經理死扛了,否則這類項目失敗是必然的。團隊人員突然離開是項目的一個極大的風險,特別是核心資深開發人員,公司往往處于成本原因不可能對每個人有一個備份的人員,所以核心資深開發人員突然離開往往使項目處于高危狀態。
4、項目經理兼任Team Leader的矛盾
項目經理和Team leader這兩個職位貌似是一樣的,其實不一樣。項目經理的職責包括:項目進度控制,成本控制,需求控制,風險管理,配置管理、任務分配以及與客戶相關的溝通和交流等。而Team leader的主要職責包括技術方案確認,開發計劃制定和跟蹤,技術架構設計,重要技術問題攻關,核心代碼編寫和技術指導以及開發團隊管理。對于小公司來說,為了節約成本很可能把兩個角色讓一個人來承擔,這樣的混合角色對個人能力要求非常高,需要兩方面的專業知識,兩方面都得一手把握,壓力很大。現在很多大公司基本都將這兩個角色分拆了,項目經理就是管進度,做協調,Team Leader就負責開發相關事宜,另外還有一個角色,叫Product Manager,這個角色主要是市場和開發之前做協調了。按照我的理解,項目經理需要對項目功能和需求(產品)有非常深入的了解,對軟件開發過程相當有經驗,同時具有很強的溝通能力,因為客戶都是牛的一塌糊涂,你要引導客戶的需求,那是溝通功夫了得。另外,項目經理是項目總負責人,對領導對跨項目和部門也需要及時的溝通協調以獲得最佳的資源,以解決過程中的問題。而Team leader需要控制開發過程中的系統性風險,總體架構把我和關鍵核心部分開發。軟件開發過程有很多的環節,任何一個環節出現大的差錯都會導致焦頭爛額并最終項目失敗。但是在大多數公司,我們都不會稱其為失敗,一般會說:項目延期,好的延期半年,差的甚至有的延期1年!核心競爭力:開發管理+過硬的技術能力。
5、有限的資源和時間與按時上線的矛盾
項目管理的主要矛盾就是如何在有限的成本(資源)和時間內高質量的完成系統。根據毛*澤(東思想,革命為什么成功,要能分清各個階段的革命主要矛盾,集中優勢兵力來予以打擊。在時間管理上就是輕重/緩急。輕重,即是否為核心需求;緩急,即優先級、順序。 資源有限,那就把核心資源放在核心功能和最大風險的部件上。我記得自己工作那幾年,從來不考慮這種問題,領導讓做啥就做啥,被動式積極(有任務就全力以赴,沒任務就自學、不聞不問),那時候我只是一位執行者。 其實,任何事情都可以分成兩階段:先分配,再執行(日常生活中,我們做任何事情都是先在腦子里分配好了)。而在公司,這兩件事往往是分離的:領導做分配,下屬做執行。
分配任務的核心原則,就是先分清輕重緩急,作為管理者,一定要將它養成習慣。