天天看點

雜談:項目管理的是與非

原帖位址:http://www.iteer.net/modules/doc/article.php?page=2&storyid=1509

  子張向孔子請教仁,孔子說:"要是能夠在天下實施五種品德,就是仁了。"子張請教哪五種品德?孔子說:"謙恭、寬厚、信誠、靈活、施惠。謙恭就沒人欺侮,寬厚就能獲得群衆,信誠就能夠得到别人的任用,靈活就做事有功,施惠就足以使喚人。" ——引自《論語現代版》

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

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

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

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

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

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

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

  來自上司的資訊隻有25%被下級知道并正确了解,從下到上的回報資訊不超過10%,平等交流的資訊則可達到90%以上。平等造就信任,信任增進交流。有效地進行适當的意見交流,對一個組織的氣候和生産力會産生有益和積極的影響。使顧客滿意并和他們面對面地交流,才是蠃得市場的關鍵。  ——引自《管理智典》

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

  第一、風險識别:

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

  第二、風險分析:

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

  第三、應急計劃:

  如果識别出的風險真的出現,你将采取的應急措施。

  第四、風險緩解:

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

  第五、持續的監控:

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

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

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

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

  第三、源于空泛的估算,管理人員特别是高層管理人員為了滿足顧客期望的日期而造成的不合理進度安排。如果配置設定的時間一開始就不夠,不管高層上司威脅有多麼吓人,工作也無法按時完成,如果人們察覺到管理者可能濫用權力來懲罰自己,他們就會感覺到威脅,沒有安全感。安全感的缺乏會讓人們反對變化,而在所有成功項目中,變化是唯一不變的要素之一,除非感到安全,否則人們就不會去迎接變化,隻會按部就班,這樣往往喪失了很多走捷徑的好機會,而這些機會原可以大大縮減時間進度的。

  第四、如果你沒有認真估算産品規模,那麼你預計的進度就是空中樓閣,唯一的依據隻是你的希望。在估計産品規模時,除了正常的時間計算以外,不但應該将"可能需要做"的事情所需工作時間加上,還要将某些"可能不需要做"的事情所需工作時間加上。項目的超期不應歸咎于開發者的低效率。

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

  第二、需求的變化

  從項目的角度來說,需求總是向着膨脹的方向在變化。就連去掉某些已經做好的東西,也是一種膨脹,因為它增加了工作量。開發人員傳遞的是使用者滿意程度,而不僅僅是實際的産品,使用者的實際需要會随着程式的建構和使用而變化。要知道,一個活着的軟體必須面對變化,隻有死掉的軟體才不會有需求變化(沒人用了),我們應該盡早面對現實,而不是逃避,事先為它們做好心理準備。變化是好事不是什麼壞事。同樣,現代靈活方法論強調對需求變化的快速響應,如XP(極限程式設計)就采用快速增量疊代開發,來在短時間内開發出功能不斷增強的原型軟體送出給使用者使用的方法,來快速響應需求的變化。

  第三、人員的變更

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

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

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

  第四、規約崩潰

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

  第五、低效率

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

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

  精兵簡政是失敗公司使用的辦法,它讓員工負擔失敗的責任。成功公司的目标應該正好相反:興旺、發達、而人性化。  ——引自《最後期限》

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

繼續閱讀