從程序員到項目經理的轉變

當你預期的那一天,也許是害怕的那一天,終於來到了:從工程師的隊伍裏你被提拔到了軟件項目領導或者團隊領導的位置。這也許就是你選擇的職業道路,或許你不太情願,將就嘗試一下。無論在哪種情況下,你都可能缺少工程學科、人員管理以及領導能力的相關教育

  這需要更多的領導能力和管理(它們不是一回事),而不能象Dilbert(譯註:著名IT漫畫主角)那樣簡單地和老闆對抗了。當你考慮新的目標時,請考慮下面的活動計劃列表。一次就抓住了每個亮點,這是不可能的。但是這份建議說明可以幫助你將注意力放在可以提高你和你的團隊績效的活動上。

  建立優先級

  作爲經理,首先要做的、最重要的事是你需要有意識地建立優先級。當你仍陷於繁重的軟件開發活動中時,你需要一套新的職責。過多的經理新手不能抗拒技術的吸引而陷於此類活動,這將導致項目組的其他人員想要獲得經理的幫助時,卻得不到幫助。

  有成效的領導知道他們首要的任務是爲其他組員提供服務。這些服務包括訓練和指導、解決問題和衝突、提供資源、建立項目目標和優先級、提供適當的技術指引。要使每個組員都能清楚的知道,你總是可以幫助他們。我發現將自己定位於爲被我監督的人工作是非常有意義的,而不是相反的。在你所作的事情中,對於組員要求你幫助他們這件事,應該具有非屏蔽中斷的優先級。

  第二重要的,是使你的客戶滿意。作爲一名經理,沒有直接的能力使客戶滿意,因爲你已不再是作爲個人提供產品和服務完成這點。相反,你必須建立一種環境,准許你的組員最大程度上滿足客戶的需求。經理提供了強有力的方法,有效地提高客戶的滿意度。

  第三重要的,是爲你的項目工作。因爲也許還有其他許多技術上的項目,或者其他經理的請求幫助,諸如爲指導委員會工作。當這些和二個高級別的發生衝突時,都要準備推辭掉。

  很明顯,使其他經理滿意的事情是你最不重要的事情。在一個有秩序的組織裏,如果你在三個以上的重大環節上獲得了成功,其他的經理都會很激動的。我們並不都能很幸運地工作在一個良好的環境裏,但一定要對你任務單上排在最前面的工作任務努力盡到最大的責任。集中精力有效地、快樂地、儘可能地幫助你的組員,不要將精力放在使你上司滿意的上面。

  分析你的技能差距

  除非你已經爲新位置做好了準備,否則相對於你當前的領導能力和管理技能,你會感到一些差距。出色的技術背景或許是你被選爲領導角色的一個因素,但是你要想幹得出色,你需要更多的技能。針對別人的評論和項目,真實地列出你的長處和短處,然後減少差距。

  軟件人員並不以令人滿意的人際關係技能出名。你會希望增強處理人際關係的經驗:解決衝突、說服以及灌輸想法。你也不得不處理包括招聘、解僱、商談計劃表,以及在你的辦公室裏評論某人業績使其傷心落淚等一些事務。

  我發現從一堂傾聽技能課開始我的管理職業是非常好的。當作爲個體提議人,積極地將我們自己的技術議程提交小組時,我們經常對此感到非常愜意。有效的管理要求更多的合作和善於接受的人際關係方式。要花點時間學習如何(何時)巧妙地引導自己的自然判斷。傾聽技能課提供了一種交流機制,我已經發現在許多場合下都很有用。

  接着,到講臺的另一側,提高你的演講能力。如果你真的不適應公開場合的講話,學習戴爾.卡內基的課會有幫助的。你會發覺,通過這樣的培訓獲得的經驗,以及獲得提高的交流能力,都可以幫助你更好地適應將來的工作。

  作爲項目領導,爲了計劃和跟蹤項目,以及當需要項目回退而採取修正措施時,你有責任調整其他人的工作。參加項目管理的培訓課,閱讀一些有關項目和風險管理的書籍和文章。參加項目管理學會,閱讀其月刊--PM Network。SEI的軟件能力成熟度模型對於軟件項目計劃和項目跟蹤提供了很多有用的建議。建立優先級的能力、控制有效果的會議、清晰的交流,對於你,作爲一名經理的績效將會有實質上的影響。

  定義“質量”

  幾乎每個人都會認真地對待質量問題而且都希望生產出高質量的產品。然而,對於軟件的質量含義,沒有一個統一的定義。傳統上的軟件質量觀點和“足夠好”的軟件觀點有着激烈的爭論。爲了幫助小組走向成功,需要花一些時間和你的組員、客戶共同探討質量的含義。

  這兩種陣營在思想上經常不會有相同的定義,可以很容易的就不同目的開展工作。關注交付計劃的經理對於想正常地檢查每行代碼的工程師會不耐煩的;認爲可靠性非常重要的客戶對一個帶有很少使用但帶有很多bugs的特性的產品是不會滿意的;一個很好的GUI也許會讓用戶厭煩,因爲用戶已經熟記了如何有效地使用前一個版本的產品。

  爲了更好的理解客戶對軟件質量的看法,在Kodak,我的小組曾經邀請了我們的客戶和他們的經理就這個議題在一個開放的論壇展開討論。這個論壇是很有意義的,那些使用我們產品的人有着自己的理解,通過討論,我們可以知道我們制定質量的思路有哪些和他們是不相符的。明白了不同,就可以使你集中精力,照顧客戶的最大利益,而不是使開發人員獲得最大滿意。

  軟件質量的傳統描述包括要與說明書一致,滿足客戶的需求,代碼和文檔沒有缺陷。“六個∑質量” (six-sigma quality)這個流行詞, 建立了一個非常高的尺度,用於監測失敗的頻率和密度。但它不適用於如快速產品交付,可用性,充足的特性集,已支付價錢的交付意義這樣的質量尺度,。對於我們生產和購買的產品,我們總是熱衷於儘可能涵蓋所有的這些質量特性,然而,妥協總是必須的。

  在一個項目的需求階段,我們制定了包括十項質量屬性的一個列表,如效率,協同性,正確性以及宜於學習,我們認爲這對於用戶來說是最重要的。我們請客戶關鍵人物代表小組以1到5的尺度評估每項屬性。一旦我們決定了哪些屬性是最重要的,我們就可以設計並實現這些目標。如果你在瞭解了對於客戶的質量含義並在設計實現質量屬性的過程中沒有麻煩的話,而且客戶對質量屬性表示滿意,那你是很幸運的。

  在衆多關注的質量說明中,我曾聽到過一個:“客戶回來了,但產品沒有” 。和你的客戶、開發人員一起對每一個產品都確定適當的質量目標。一旦決定了,就給出達到質量目標的明確的最高優先級。以身作則,按很高的質量標準要求你自己的工作。採用這個座右銘:“力求盡善盡美,滿足於優秀。”


表彰成績

  對你組員成績的表彰和獎勵,是激勵他們的一種很重要的手段。除非你的小組中已經有了一種表彰程序,否則這應是你最重要的事情之一。表彰包括象徵性的東西(證書,旅遊獎勵)以及實際的東西(電影票,餐館禮品券,兌現獎)。在送贈品時要說一些親切的話語:“感謝你所給予的幫助”或者“祝賀取得了成績”。在表彰和獎勵上花費很少的心思和錢,就可以獲得很多的友好和將來的合作。包括客戶代表,以及爲項目成功做出過貢獻的支持人員等等開發組外的人員也可以獲得表彰。

  和你的組員討論,瞭解他們感興趣的表彰和獎勵的方式。使得無論大小成就的表彰活動成爲小組文化的一個標準組成部分。對每位組員對其所作的工作表現出發自內心的興趣也要給與含蓄的表揚,爲消除所有影響他們戰鬥力的障礙盡你的力量。表彰是展示組員以及小組外的其他人的一種方式――你要知道並感謝他們爲小組成功所作的貢獻。

  學習過去

  你的小組在過去承擔的一些項目有可能沒有取得完全的成功。甚至在成功的項目上,我們也能經常認爲一些事情我們下次會作得更好。當你進入了新的領導角色,需要花點時間瞭解早期的項目爲什麼失敗,並要計劃避免犯同樣的錯誤。對於軟件開發,每位經理花時間處理每種可能要發生的錯誤是非常困難的,學習過去的成功和失敗就是個成功的開始。

  可以從過去你們小組承擔的一個沒有經過檢查評估的項目着手,不要管其成功還是失敗,實施項目後的回顧(有時稱作事後調查分析)。你的目標不是判定責任,而是爲了在將來項目中作得更好。藉此,可以瞭解什麼已經作得很好,什麼應該作得更好。在當前每個項目的主要里程碑時,通過集體討論或公平的組織者,用同樣的方式,領導小組用頭腦風暴的方式對其展開分析。

  另外,要了解領悟已有的軟件工業的最佳準則。一個好的起點是Steve McConnell的Jolt Award獲獎作品:快速開發(Rapid Development,Microsoft Press, 1996)的第三部分 ,敘述了27個最佳準則。也要避免McConnell敘述的36個常見的軟件開發錯誤。你的組員也許反對新的工作方式,但是你的角色是作爲一名領導,要確保團隊一致連續地使用最佳可用的方法、過程和工具。積極促進組員之間的信息共享,這樣局部單個最好的實踐經驗就能成爲每個開發人員的工具箱的一部分。

 建立改進目標

  一旦你對過去的項目建立起了回顧,確立了質量對小組的意義,你就要建立短期以及長期改進的一些目標。目標要儘可能量化,所以你要劃分幾個簡單的階段,標明你是否採取了適當的過程朝着目標前進。

  例如,如果你認定由於需求的不穩定導致項目經常延期,你可以建立一個改進需求穩定的目標,在6個月內提高50%。這樣一個目標需要你確切知道每週或每月需求的變化數,清楚他們的出處,採取行動控制那些變更。這可能要求你要改變與那些提交需求改變的人的交流方式。

  你的目標和階段是軟件過程改進程序的組成部分,你要使之有序。作爲缺乏創造力的官僚主義的最後避難所,輕視“過程”很流行。雖然事實上,每個小組都能找到改進其工作的方式。當然,如果你總是用已有的工作方式工作,你也就不要期望你會得到比以前更好的結果。
  
  有兩個強烈的原因要求改進過程:校正問題,防止問題。確保你的改進努力要圍繞着已知的或可預知的可能威脅項目成功的問題。領導你的小組找出當前正在使用的方法的長處和短處,以及項目面臨的風險。

  我的小組召開了一次“兩段式頭腦風暴”練習,來確定改進軟件生產力和質量過程的絆腳石。在第一次會議中,參會者在便條上寫出他們關於會議主題的想法,一個便條一個想法。組織者將他們寫在便條上的想法收集上來並分組。最後,我們就會得到一打主要的分類,並將其記錄到活動掛圖上。

  第二次會議,相同的參會者在便箋上寫出解決這些障礙的思路,並貼在掛圖的合適位置。進一步細化,歸納出一些詳細的活動,就可以成爲我們努力的一部分,清除障礙,幫助組員實現軟件的質量和生產力的目標。

  建立可度量和可達到的目標,便於你集中精力實現改進。要使目標具有明顯的優先級,並可週期性地監視過程。記住你的目的是,提高你的項目和公司完成的技術和業務上成功,不要滿足於一些過程改進書籍裏提到的期望細節。要把改進的工作視爲迷你項目,具有可分發、資源、計劃和有責任的小項目。否則,過程改進活動將總處於比誘人的技術工作低的優先級上。

  緩慢的開始

  這篇文章提供了許多建議,幫助你,一位軟件經理新人,帶領你的小組走向偉大的成功。在日復一日新的工作壓力面前,要努力保持你的頭腦清醒。在長時間的塑造軟件開發小組的文化和習慣上,你還是個非常重要的角色。你不必一次性都作完,可以選擇跟環境最相關的的幾個開始。

  作爲軟件經理,除了項目要按時按照預算完成外,你要擔負的責任還很多。你還要:領導技術人員,將他們形成一個具有凝聚力的團隊;建立協同團隊工作的環境;鼓勵和獎賞高級軟件工程師的實踐應用;平衡來自客戶、公司,組員和你自己的需求。

  這是項重大的任務,祝你好運。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章