專案管理的是與非(轉)

ger8發表於2007-08-11
子張向孔子請教仁,孔子說:"要是能夠在天下實施五種品德,就是仁了。"子張請教哪五種品德?孔子說:"謙恭、寬厚、信誠、敏捷、施惠。謙恭就沒人欺侮,寬厚就能獲得群眾,信誠就能夠得到別人的任用,敏捷就做事有功,施惠就足以使喚人。"

                            ——引自《論語現代版》

  軟體專案管理是一項複雜的活動,它涉及到計劃、組織、實現、度量等方方面面,始終圍繞著時間、成本、範圍、質量等因素團團轉。表面上看好像沒有任何一個單獨的問題會導致困難,每個問題都能獲得解決,但當它們相互糾纏、累積在一起時,整個團隊的行動就會越來越慢。我們所面臨的挑戰和任務是在實際的進度和有限的資源範圍內,尋找解決實際問題的切實可行方案。提起軟體專案管理,我們大多數人腦子裡想到的都是一些基於文件方面的文案工作(進度表、狀態報告、會議計劃、進度跟蹤記錄、里程碑報告等等),然而,最容易被管理者忽視,但卻是非常重要的兩個因素是:對人的有效管理和對專案風險的有效管理。

  作為公司或一個團隊的管理者,你需要透過員工的進取去實現經營目標。然而,如果沒有激勵,員工計程車氣就無法振作,你的目標就會變得虛妄。因此,在一個以人為本的企業文化中,胡蘿蔔幾乎無處不在,並且表現出各種賞心悅目的形式,令人熱血沸騰。同樣地,你也需要一些胡蘿蔔來營造一種積極的團隊文化,包括那些不花錢的胡蘿蔔(既感情投資)。有效的授權不僅是一種激勵員工進取的胡蘿蔔,往往能夠實現員工與企業的雙蠃,一方面可以滿足員工建功立業的個人追求,另一方面也是實現公司戰略規劃的一種必然選擇。否則,員工會不思進取,而作為管理者也會陷入俗務之中不能自拔。

                             ——引自《水煮三國》

  管理學特別是對人的管理學,早在幾千年前,人類開始群體生活,形成早期社會時就已經開始形成了。作為一名優秀的管理者,你必須面臨四大要素:一、選擇正確的人。二、為他們分配正確的工作。三、保持它們的積極性。四、幫助團隊凝聚起來並始終保持團隊的凝聚力。作為一名專案管理者,你的主要工作可能會是為團隊創造信任、公開、積極交流的環境,並能有效地消除團隊成員之間的隔閡和衝突。作為一名合格的管理者,你的腦子裡始終應該清楚的明白一個道理:"你的部屬樂意並且積極的為你工作,不是因為你的個人魅力,也不是因為他們喜歡你,而是因為你喜歡他們。你喜歡、尊重為你工作的每一個人,你關心他們,愛護他們,他們的問題就是你的問題,他們的擔憂就是你的擔憂。你的胸懷像天空一樣寬廣,在一個人真正證明自己的能力以前,你就信任他,你讓他們覺得你把他們當成一家人,這才是他們喜歡始終跟隨你的原因。

  "這就是所謂"得道",讓部屬與領導者的價值觀相一致,這樣部屬就會與領導者同生共死,不會畏懼什麼困難和危險,表現出崇高的獻身精神。"智士不為暗主謀",在一個昏庸的管理者周圍,不可能留住高潔的人才。如果你不關心別人,不照顧別人,就別想讓他們為你做一些不同尋常的事情,即使你手中掌握著權力也無濟於事。如果要讓他們改變,就必須去了解並讚賞他們的過去,並相信他們現在的能力。要記住你的團隊成員們會很在意你的反應,他們看到你的反應將決定他們對專案的狀況及未來的發展是否有信心。在其它成員面前指責另一個成員是一種衝動的行為,事後你會為此而後悔,尤其是你還沒有把所有真相弄清楚之前,一定要事先考慮一下後果,從理論上講,只要不超過做決定的日期,晚些做決定會更好,因為那時你會得到更多的資訊,如果你發現做了一個錯誤決定也應該心甘情願馬上把它糾正過來。

  另外,管理中的憤怒和羞辱是會傳染的,如果高層管理者喜歡罵人,低層管理者也會照著學。如果希望用辱罵來作為一種刺激,可以讓員工提高效率的話,那就大錯特錯了,沒有人在被辱罵之後還能做得更好的。透過辱罵的方式只能表現出經理的無能,而不是員工的無能。需要補充一點,企業文化中的馬屁文化也是會傳染的,如果高層管理者喜歡阿諛奉承者,低層管理者不僅會有模有樣、照單全收,還會學會媚上欺下。如果這樣的話,下面員工的座右銘就會變作:"好風憑藉力,送我上青天"在這種文化中,人們學會的只是趨炎附勢,專注於捕捉任何一個飛黃騰達的機會,再不會努力工作。而這一切,這是作為一名專案管理者應該知道的,瞭解了這些,便擁有了可以組成一隻優秀的,有凝聚力的核心團隊所必須的條件。作為一名管理者:你必須學會用心來領導、相信自己的預感、構築團隊的靈魂、訓練一個能識別出謊言的鼻子。

  薪酬管理難道真是用"最低的人力資本"去購買"最高的營業績效"碼?難道打工族的勞動力真的彷彿集貿市場中可以討價還價的商品嗎?當然不是,它忽略了下面三個問題:第一、勞動力是一種特殊的商品,在打上價格標籤時需要顧及人的尊嚴。第二、提供勞動力的人追求的不僅僅是被老闆視為成本的工資,還有職業生活的快樂。第三、每一位員工都希望能夠與老闆分享公司的營業績效,因為其中浸透了他們的情感。如果你在薪酬管理中忽略了員工的情感,就另指望員工熱愛他們的工作。於是,勞資關係就變成了買賣關係,一邊是討價還價、斤斤計較,一邊是缺斤少兩、以劣充優,利益相爭,各有所圖,就象菜場買菜和賣菜一樣。因此,以人為本的薪酬管理會關注員工的情感需要,會把"績效分享"作為薪酬管理的主題。於是,勞資關係就變成了夥伴關係,利益相連,目標一致。

                            ——引自《水煮三國》


  軟體開發是一項複雜的、創造性的協作式遊戲。作為遊戲它自然存在著樂趣,所以程式設計師們才會樂此不疲,前仆後繼。首先、這種快樂源於一種創造事物的快樂。其次、這種快樂來自於一種開發出對別人有用的東西時所帶來的滿足感。第三、快樂源自開發過程中,親眼看到軟體按自己預先設想的那種效果執行時所帶來的迷人魅力。第四、快樂源自開發過程中持續學習的快樂。最後、快樂源自開發過程中,我們能象詩人一樣,僅憑自己的想像,來建造自己的城堡時帶來的快樂。程式設計的快樂在於它不僅滿足了我們內心深處進行建立的渴望,而且還喚醒了每個人內心的情感。不幸的是,同樣作為遊戲它也有苦惱的一面:首先、苦惱來自追求完美主義。其次、苦惱來自總是由他人來設定目標、供給資源、提供資訊。第三、苦惱來自於尋找瑣碎的BUG卻是一項枯燥的、重複性的活動。第四、人們通常希望在專案接近結束時,能收斂得快一些,然而,情況卻是越接近完成,收斂得越慢。最後、苦惱來自當投入大量的辛苦勞動後,產品釋出時卻面臨著陳舊過時的危險。作為軟體開發者,我們別無選擇,只有適應它們,就這樣痛並快樂著地面對每一天。

  來自領導的資訊只有25%被下級知道並正確理解,從下到上的反饋資訊不超過10%,平等交流的資訊則可達到90%以上。平等造就信任,信任增進交流。有效地進行適當的意見交流,對一個組織的氣候和生產力會產生有益和積極的影響。使顧客滿意並和他們面對面地交流,才是蠃得市場的關鍵。

                             ——引自《管理智典》

  管理是一種控制性遊戲,在遊戲面前,你只有二種選擇:或者,你確信自己能蠃,於是投入足夠多的能量來蠃得一切;或者,你不進行這個遊戲,放棄它。然而,作為軟體專案管理者,你也應該知道,早投入、高風險才會有高回報。逃避風險是致命的,因為這也會讓你得不到與風險同在的利益,久而久之,你就會面臨著被市場淘汰的危險。風險是"遭受損失的可能性",由條件、結果以及周圍的環境構成。風險和問題的區別在於:風險是尚未發生的問題,而問題是業也成真的風險,昨天的風險可能會是今天的問題。風險管理主要包括下面幾個方面:

  第一、風險識別:

  從頭腦想像中抽取出各種風險並加以篩選,再加上在整個開發過程中,保持持續不斷的風險發現機制,以發現新的風險。

  第二、風險分析:

  對風險出現的可能性和潛在的危害性進行量化分析。

  第三、應急計劃:

  如果識別出的風險真的出現,你將採取的應急措施。

  第四、風險緩解:

  為了使應急計劃得以有效實施,必須在風險轉化為真之前所採取的措施。

  第五、持續的監控:

  跟蹤需要管理的風險,尋找風險出現的跡象。

  專案面臨的某些風險可能是致命的,發生時會使專案嚴重滯後或直接廢棄。這類風險是最需要管理的,但有效的管理它們也許會使你與你的上級發生衝突(如時間上最後期限等),對於這類風險往往超出了你的管理許可權,可以先將它們列為專案假定風險,然後把它們轉交給上級來管理。風險可能出自技術、政治、經濟、資源或其它各個方面,幾乎無所不在,並且會對專案開發、市場佔有率或是達到專案目標(如進度、預算、質量等)造成災難性後果。但在所有軟體專案中,通常會共存五大核心風險,分別如下:

  第一、缺乏合理的進度安排

  這是導致專案滯後的最主要的原因。首先、它源於開發人員們普遍存在的樂觀主義精神,我們總是期待在實現過程中不會碰到困難,然而我們的構思是有缺陷的,因此總會發現BUG。其次、它源於一種錯誤的認識,人員數量和開發時間是可以互換的,既投入兩倍的人數會在一半時間內完成開發工作。然而,這種理論卻忽略了隨著人數的增加,相應的也會增加新人培訓和人們相互交流所需的負擔,另外,還有任務重新分配所造成工作中斷帶來的負擔,正如Alistair Cockburn所說:"最有效的交流方式是面對面的交流"當3、5個人的時候很容易做到這種交流方式,隨著人數的增長,再也很難做到這種交流方式。交流成本的增加與培訓新人所需時間成本的增加、以及任務重分配導致工作中斷成本的增加,直接導致一種結果:向進度落後的專案中增加人手,只會使進度更加落後。

  第三、源於空泛的估算,管理人員特別是高層管理人員為了滿足顧客期望的日期而造成的不合理進度安排。如果分配的時間一開始就不夠,不管高層領導威脅有多麼嚇人,工作也無法按時完成,如果人們察覺到管理者可能濫用權力來懲罰自己,他們就會感覺到威脅,沒有安全感。安全感的缺乏會讓人們反對變化,而在所有成功專案中,變化是唯一不變的要素之一,除非感到安全,否則人們就不會去迎接變化,只會按部就班,這樣往往喪失了很多走捷徑的好機會,而這些機會原可以大大縮減時間進度的。第四、如果你沒有認真估算產品規模,那麼你預計的進度就是空中樓閣,唯一的依據只是你的希望。在估計產品規模時,除了正常的時間計算以外,不但應該將"可能需要做"的事情所需工作時間加上,還要將某些"可能不需要做"的事情所需工作時間加上。專案的超期不應歸咎於開發者的低效率。

  最後、專案的滯後不是一下子造成的,而是在一天天的不知不覺中造成的,有無數種方法可以浪費一天的時間,但是沒有任何方法可以拿回一天的時間。高層管理者的不良反應肯定會對資訊的完全公開造成壓制;相反,仔細區分狀態報告、毫無驚慌地接收報告、決不壓制下級,將能鼓勵誠實的進度彙報,而這會使你在第一時間掌握實際進度,把握先機,及早做出正確的修訂,從而避免了晚期才獲得這些實際資訊時,那種無力挽天時的無奈。此外、也可以在專案管理中設定一個合理的進度安排和一個具有挑戰性的期望目標完成時間。期望目標和合理進度不同,期望目標完成時間,可以設為專案完成的成功率在30%左右時的日期,這樣很具有挑戰性,但不能強迫要求必須完成此期望目標。畢竟,合理進度安排才是更合理的時間安排。另外、需要指出的是現代敏捷方法論對此進行了有效改進,如XP(極限程式設計)中,就利用使用者素材與CRC卡,進行優先順序劃分並進行快速增量迭代開發,針對原來開發的產品或第一次迭代開發後的原型完成的功能量,來計算功能點,從而估算每個CRC卡的功能點,得到總功能點來推匯出比較準確的進度安排。

  第二、需求的變化

  從專案的角度來說,需求總是向著膨脹的方向在變化。就連去掉某些已經做好的東西,也是一種膨脹,因為它增加了工作量。開發人員交付的是使用者滿意程度,而不僅僅是實際的產品,使用者的實際需要會隨著程式的構建和使用而變化。要知道,一個活著的軟體必須面對變化,只有死掉的軟體才不會有需求變化(沒人用了),我們應該儘早面對現實,而不是逃避,事先為它們做好思想準備。變化是好事不是什麼壞事。同樣,現代敏捷方法論強調對需求變化的快速響應,如XP(極限程式設計)就採用快速增量迭代開發,來在短時間內開發出功能不斷增強的原型軟體提交給使用者使用的方法,來快速響應需求的變化。

  第三、人員的變更

  在我們有些管理者中,總是假設開發者都是可以隨便替換的,新員工馬上可以取代離去的老員工,多麼愚蠢的假設。解僱員工或高的員工替換率最大的影響,是使軟體專案失去了連續性。這是在抱著這種假設的團隊文化中,大量員工會在專案進行到一半時離開,新來員工往往需要1到3個月的上道時間,在這段時間內,他們做不了什麼,還經常需要其它老員工的幫助,從而浪費了其它老員工很多不必要時間,導致專案進展更加緩慢,最終造成專案的很大損失。

  另外、還有一種現象在中國軟體事業中普遍存在,當正在進行一個專案時,另一個專案由於進度落後或最後期限等原因所致,高層管理者就會從你的團隊中抽掉一些人去到另一個專案中補牆。這種拆東牆補西牆的作法,往往導致的結果是兩個專案都會落後,因為它不僅十分錯誤作了團隊人員可以隨意替換的假設,而且還作了將開發人數與開發所需時間可以互換的錯誤假設。盲目的認為,投入大量人數後,新人馬上會投入新的工作,這樣專案開發所需時間就會成倍縮短。在這種組織文化中,是不會形成一支穩定的團隊的,成員整天只會忙碌著補自已的牆或為別人補牆,充當著類似消防員的角色,那兒有火那兒就有我們的身影。

  同樣,現代敏捷方法論非常注重人的能力,如XP中透過權力下放、教練角色、將團隊緊密圍在一起並結對程式設計、小團隊組成等方式,來組成一個強有力的團隊,由於有凝聚力,所以很少有大的人員變動,他們往往可以完成兩倍於他們人數所能完成的任務。非常小的團隊能夠產生非常大的物質生產力,有時候,小團隊可以在很短時間內創造奇蹟,而大型團隊極少能做到。但是,小團隊卻往往得不到足夠的政策支援,從而導致任由團隊超編,這是一種病態組織文化所致。作為管理者必須明確知道,擁有一支穩定的、有凝聚力的開發團隊是組織最大的財富,而不是障礙。


  第四、規約崩潰

  這種情況只有兩種結果:要麼發生,要麼不發生,不會有不同程度的影響。但它真的發生時,它會直接毀滅你的整個專案。在專案啟動之初,專案各方需要透過一系列商談來確定需求的範圍,規約崩潰就是指這個談判過程的崩潰。在商談期間,很多時候當遇到嚴重衝突時,由於雙方都不願意讓步,但又不想放棄這個專案,從而導致這些衝突被掩蓋起來。最終專案便朝著一個帶著缺陷的、含混不清的目標前進了,被掩蓋的問題暫時不會打擾你,但不是永遠。儘管你可以含混說明一個產品,但不能含混構造一個產品,所以,最終在專案晚期這些問題將發生,在大半甚至所有預算時間和金錢都已付出的時候,此時,任何一方不再全力支援,都將使專案被取消。任何規格文件中的含糊標誌著不同的系統參與者之間存在著未解決的衝突。只要在開發過程中有多個參與者,就一定會有衝突存在。談判困難而調解容易,如果兩個人的利益是完全或部分相斥的,預先做好安排,準備好請雙方透過調解來解決衝突。同樣,現代敏捷方法論透過客戶的積極參與勝過合同談判的方試,來儘早發現和避免規約崩潰。

  第五、低效率

  對於專案成功而言,專案人員的素質、人員的組織和管理是比使用的工具或採用的技術方法更重要的因素。團隊質量是專案成功最大的決定因素,對人的關注、激勵和培養勝過一切。專案管理人員的職責不是要人們去工作,而是給人們創造工作的可能。創造力來自於個人,而不是組織架構和流程,專案管理者面臨的中心問題就是如何設計架構和流程,來提高而不是壓制人們的主動性和創造力。透過權力的向下委派,從而產生了改進的質量、提高的生產率、高漲計程車氣,進而使中心的權威實際上得到了加強。就整體而言,組織機構會更加融洽和繁榮。增加加班時間只會降低生產力,壓力之下的人們無法更快地思考既也會降低生產力。使用壓力和加班的真正原因是為了在專案失敗時讓人們看上去能好受一些。

  正式的過程改程式序需要花錢、花時間,特定的過程改進工作還會延緩專案進度,儘管最終會體現生產力上的收穫,它們也不可能抵消花在過程改進上的時間。多種技術的改程式序(如CMM提級)很可能讓專案比不實施這些程式完成得更晚,對於人員超編的專案,標準過程會為多餘的人們製造出足夠的工作,讓所有人都忙個不停,儘管很多是無用的,這也導致生產率低下。人員超編的團隊往往生產率低下,因為它們團隊內部耦合度提高,會議時間、重複勞動和無效工作都會增加。理想的人員安排是在專案的大部分時間裡由小型核心團隊來做設計工作,在開發的最後階段再逐漸加入大量人手。如果不大幅度減少除錯的時間,就沒辦法讓專案大幅度提前完成,而要成比例減少除錯時間,就需要成比例增加設計所需時間,因為絕大多數的錯誤源於介面缺陷,編碼前進行的正規而完善的設計,可以大幅度減少錯誤。同樣,現代敏捷方法論透過注重人、快速迭代開發、自組織的團隊和提倡可持續的開發速度,來避免跑的過快導致團隊精力耗盡、出現短期行為而導致崩潰的問題,從而保持了穩定的生產率。

  精兵簡政是失敗公司使用的辦法,它讓員工負擔失敗的責任。成功公司的目標應該正好相反:興旺、發達、而人性化。

                              ——引自《最後期限》

  企業的最大風險則與價值相關:在低價值的專案上浪費資源,付出高價值的機會成本,就這是企業最大風險。勇於承擔風險是好事,但必須由收益來導航,願意承擔多少風險,必須取決於能獲得多少收益。真正的專案評估不是傾向於不斷削減成本,來提高價值,而是在風險與價值之間取得平衡點。透過不確定的價值和不確定風險組合效果的淨收益圖,來指導你把資本投入到最適當的地方。我們每個軟體從業人員都必須明白:顧客真正需要的,是我們能夠給他的、某種他想得到的利益。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7839396/viewspace-945288/,如需轉載,請註明出處,否則將追究法律責任。

相關文章