日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

现代软件工程讲义 5 项目经理 Program Manager

發布時間:2024/7/23 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现代软件工程讲义 5 项目经理 Program Manager 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在一個軟件團隊里, 不同的人有不同的投入, 我們在 豬,雞和鸚鵡 的故事里已經說明了. 不同的人還要在團隊中擔負不同的任務, 我們也要講一下.

開發人員 (大部分內容在:?? 現代軟件工程講義 2 工程師的能力評估和發展

項目經理?? ( 這篇博客 )

測試人員? ( link )

?

?

0. PM

我碰到的不少大學同學都有一個想法 - 先做幾年技術, 然后做管理; 也有一些同學說 - 我技術不行, 希望直接找到一個管理的工作, 就像PM 那樣。

PM 的M 就是 manager, 但是 P有這幾種: Product Manager, Project Manager, Program Manager, 在不同的行業和公司它們的作用不一樣。 下面說說微軟的PM - Program Manager:

1. 微軟PM 的來歷

大部分公司的項目經理叫 Project Manager, 微軟的經理叫 Program Manager, 這有什么本質的區別么?

微軟曾經也是一個創業公司, 兩個創始人都是 dev, 招聘的新成員也大多是像他們一樣的開發人員, 這其中就有一個叫 Charles Simonyi 的超級程序員 (當然還有像 Steve Ballmer 那樣的超級銷售人員, 這里按下不表)。

?

?

1974 年, Charles Simonyi 在Xerox PARC 開發了 WYSIWYG (所見即所得) 的字處理軟件 Bravo, 成為 PARC 的 Alto 個人電腦的重要應用軟件。?

作為參照:

??? 同一年, Steve Jobs 從印度回來, 加入Atari 公司打工, 因為其他員工不能忍受他的傲慢態度和衛生習慣, 他只好上夜班。

??? 同一年, Bill Gates 在哈佛大學讀 2 年級, 第二年, 他看到了個人電腦的曙光 – MITS Altair 8800, 于是退學創立了 Microsoft.

?

1981 年, Charles 加入了微軟公司, 領導 Word 和其他辦公軟件的開發。?? 很多開發人員聚集在一起, 怎么工作呢?? 如果大伙做的是搬磚的體力勞動 (我很喜歡用搬磚的例子),? 那么在一定限度內, 人員的增長和項目復雜度的增長是線性的關系; 程序開發就有些不同, Charles 發現項目管理的復雜度似乎是和人員數量的平方成正比。? 一個團隊里有 4 個成員, 就有 6 種雙向依賴和交流的途徑, 然后增加一位新成員, 就要增加 4條新的雙向依賴交流的途徑。 對于 N 個成員的團隊來說交流的途徑總數是 n * (n-1) /2, 這種 N 平方的增長意味著這樣的交流對人類來說是不可持續的。

?

?

怎么辦?? Charles 想到了一個辦法 - 他提議把程序員分成 Master Programmer (MP) Slave Programmer (SP), MP 和其他成員交流, 了解需求, MP 只寫抽象的偽代碼, 或者對功能的描述; SP 根據MP 的文檔, 實現具體的功能。 SP 只用和 MP 交流。? 這樣不就大大減少了交流的成本么?

這個想法在理論上是好的, 但是在實際上, 沒有人想做 Slave Programmer, 剛加入團隊的成員問 - 為什么我們不能當 Master Programmer?? 這次改革最后不了了之。

?

但是, 隨著軟件復雜度的提高, 用戶需求的多樣化, 市場競爭的日益激烈, 光有程序員和銷售人員是不夠的。 我們需要專門人才來做下面的事:

怎么讓軟件變得可用 (usable), 有用 (useful)

銷售人員把顧客的需求直接告訴開發人員, 但是開發人員往往聽不懂。 我們需要專人來把市場/銷售人員那一套 MBA 的套路翻譯成程序員能懂的功能說明 (spec)?

一個產品團隊要做很多事, 這些事往往是程序員不愿意花時間的:

  • 和客戶交談, 組織用戶調查, 發現用戶需求
  • 了解和比較競爭對手的產品
  • 怎么改進團隊的流程
  • 誰都不愿意做, 誰都沒有能力做好, 大家寧愿盯著屏幕寫代碼。? 怎么辦呢?? 這時候有另一個聰明人出現了, 一個叫 Jabe Blumenthal 的程序員提出了 Program Manager (PM) 的頭銜, 并成為了微軟第一個 PM (1984年, Excel 團隊)。 和不少早期微軟公司員工類似, Jabe 從微軟退休, 當中學老師, 做公益活動去了。 (鏈接)

    PM 做什么呢??

    2. PM做開發和測試之外的所有事情

    有些同學說,我寫的代碼都不用測試, 我真想不到除了開發和測試之外,還有什么事情可做。? 我們看看 微軟公司有哪幾類的PM:

    • 有做功能設計的PM; 有些需要很深的計算機科學各個分支的專業知識 (如 Visual Studio 各種語言,框架, TFS 的項目管理, SQL Server, Windows Server, Windows Azure,?Bing Search 等團隊的PM );?
    • 有些需要對商業和客戶很強的了解能力 (如 Office 應用軟件的PM );
    • 有些需要廣泛的經驗和知識面, 商業拓展能力 (如 MSN 部門的 PM);?
    • 有些是驅動流程的PM, 例如推動幾百人的團隊完成一個版本的開發, 又如保證 Windows Phone?在幾十個不同硬件上能發布;
    • 也有專門深入某一領域的 PM (如國際化/本地化 localization/globalization);?
    • 還有和研究人員合作, 琢磨前沿技術如何能進入主流產品,做技術轉化的 PM。

    ?

    Program Manager 和一些公司的 Project Manager 的區別:

    ?

    Project ManagerProgram Manager

    是團隊的行政領導, 帶領大家在項目中工作。

    和大家平等工作, 推動團隊完成軟件的功能。

    通常是團隊和外界打交道的唯一代表一個團隊可以有很多PM
    對項目的功能有最后的決定權和其他團隊成員一起形成決議
    管事也管人管事不管人
    不一定做具體工作一定做具體工作

    ?

    在別的團隊中, 也有產品經理的職位, 例如這個博客 (和書) http://iamsujie.com.?

    問: 既然PM 這么厲害, 為什么不讓他們領導開發人員和測試人員, 這樣 PM 工作起來不就是更有利了么?

    答: 首先, 我們認為好的產品設計是在平等討論 (甚至爭論) 的基礎上產生和完善的, 如果討論的一方同時又是另一方的老板, 則無法進行平等和無拘束的討論。

    其次, PM 的產品是 spec (規格說明書), PM 要憑自己的能力, 把用戶的需求展現成 dev/test 能夠了解, 能夠執行的語言, 從而贏得同伴的信任和尊敬。 如果PM 同時又是其他人的老板, 則不必寫太好的 spec, 用命令即可說服別人。 再次, PM 不一定是很好的行政經理, 硬把管理不同專業的 dev/test 的任務加到PM 頭上, 反而會壞事。 關于這個問題, 這里也有一篇討論.

    ?

    問: PM 最大的, 最獨特的貢獻是什么?

    答: 保持團隊的平衡。

    ?

    一個軟件產品幾乎做不到同時又多又快又省。 在別的領域也類似,? 中國在大躍進期間提出了 多快好省 的要求。 最后只得到一個 “多” -? 人多。 (參見 軟件工程的估計)

    ?

    大部分優秀的團隊可以做到兩個:

    多, 快, 但是不省

    多, 省, 但是不快

    快, 省, 但是不多

    PM 要帶領團隊選擇哪兩個是最重要的, 哪一個是可以犧牲的。

    ?

    還有許多不那么優秀的團隊也許勉強可以做到一個:

    多, 但是不快, 不省

    省, 但是不多, 不快

    快, 但是不省, 不多

    ?

    當然還有一些團隊一個目標也達不到, 中途作鳥獸散了。

    ?

    問: 我們團隊有幾個程序牛人, 參加過 ACM 比賽什么的, 他們寫的程序都不用測試, 為什么還要 PM? 如果PM 也來開發, 是不是項目進展更快?

    答: 程序 和 軟件有區別,? 請看:? http://www.cnblogs.com/xinz/archive/2011/05/22/2053838.html

    ???? 其次,在下面的圖中, 團隊有很多劃船的牛人, 還有一個拿著話筒的舵手. 如果這個舵手也開始劃船, 后果會怎么樣?

    ?

    ?

    可能小船的速率會快一些, 但是小船的方向, 穩定性會出問題。 船快了一些, 但是劃槳的隊友很累, 船不穩, 而且最后到了一個計劃外的地方,你愿意么??

    ?

    在軟件行業發展的最初, 軟件都是為維持機器本身的運作服務, 或是做科學計算, 這時候也許看不出 PM 的作用。隨著產業的發展, 軟件應用的深度和廣度, 軟件的復雜度, 軟件團隊的復雜度極大地提高了, 這時候我們需要一些人來起著溝通, 交換, 影響, 潤滑, 討價還價的作用 - 就像商業社會的金錢一樣 – PM 就是這樣的角色。?

    ?

    問: PM 文化的盛行有副作用么?

    答: 任何方法或文化都有優點和缺點,? PM 太多了以后,? 由于大部分決定都是經過平等而反復的討論協商折中的到的, 一個后果是 “design by committee”, 一些產品不能很快跟上市場變化, 在需要個人特色的方面, 如設計/UI, “committee”設計出來的東西大多中規中矩, 但是很多方面了無新意。

    牛人主導的項目,往往有大起大落,在PM主導的產品中,“不犯大錯”成了一個特點,微軟的很多產品在長期的競爭中, 靠“不犯大錯”,從第三版開始,趕上并超越對手。這也是一個了不起的能力。 [注8]

    ?

    Scott Berkun 也談到了一些副作用:? http://www.scottberkun.com/blog/2009/the-lost-cult-of-microsoft-program-managers/?

    3. PM 的能力要求和任務

    成為一個團隊的PM, 需要哪些能力呢?

    學習能力: 在一個新領域中能很快上手

    觀察理解能力: 能理解用戶, 站在用戶的角度上考慮問題, 觀察發現用戶不善于表達的需求, 觀察團隊成員的言外之意, 老板/客戶/利益相關人的弦外之音.

    ????????????????????? 什么是同理心? 就是能夠理解別人的處境, 心理, 動機的能力。 西諺有 – put yourself in other people's shoes, 正是此意。

    分析管理能力: 每天項目中發生的事情千頭萬緒, 能夠分析出重點, 找到優先級, 做決定…

    一個項目和個人一樣, 每天都會碰到各種問題:

    ??? 重要而緊急的???????? - 網站崩了!??

    ??????????????????????????????? - 程序員二柱突然說他要離職!?

    ??? 重要而不緊急的????? - 按照流量和內容的發展趨勢,? 三個月后, 目前的架構似乎撐不住, 但是現在還湊合…?

    ???????????????????????????????? - 程序員們都不寫文檔, 他們三個月前說等忙過之后會寫的, 但是…

    ??? 不重要而緊急的????? - 老板的老板問到了項目的進度!? 要寫一個PPT,請若干人征求意見

    ??? 不重要且不緊急的?? - …

    PM 如何處理這些事情呢?

    ?

    銷售能力:? 能滿懷激情地向用戶兜售產品, 向團隊兜售希望。 請看 Steve Ballmer 的銷售能力展示.

    交流能力, 處理沖突的能力: 其他角色碰到沖突一般會來找 PM. PM 也要鼓勵團隊成員保持斗志。

    一定的專業能力: 寫代碼, 玩轉Excel, PPT, Visio, 甘特圖, 會PS, 有文字功力, 能寫有人讀的博客, 總得有幾招絕活吧!

    轉換角色的能力:?? 一個PM 能玩轉很多高技術的工具, 但是當工作需要, 她能突然把自己變成一個完全不懂技術的菜鳥用戶,從用戶的角度來看問題 …

    自省的能力: 一個PM 做第一個項目的時候可以拍腦袋定工期, 拍胸脯打包票, 最后拍屁股走人 ?(誰沒年輕過呢?)。 但是失敗之后要有自省和自我改進的能力 (看這個例子)。

    ?

    在生活中能不能鍛煉PM 的能力呢?

      可以,?裝修房子,?組織一個大型活動, 等等。?

    在一個項目中, PM 的具體任務是什么呢?

    帶領團隊形成團隊的目標/遠景, 把抽象的目標轉化為可執行的, 具體的, 優美的設計。

    管理軟件的具體功能的生命周期 (需求/設想/設計/實現/測試/修改/發布/升級/遷移/淘汰)。

    創建并維護軟件的功能說明書 (specification), 讓它成為開發/測試的及時準確的指導, 而不是障礙。

    代表客戶和用戶的利益, 主動收集用戶反饋, 預期用戶新的需求。 協調并決定各種需求的優先級。

    分析帶領其他成員形成對缺陷/變更需求的一致意見, 并確保實施。

    帶領其他成員確保項目保持 功能/時間/資源 的合理平衡, 跟蹤項目進展,? 確保團隊發布讓客戶滿意的軟件。

    收集團隊項目管理和軟件工程的各種數據, 客觀地分析項目實施過程中的優缺點, 推動項目成員持續改進, 從而提振士氣。

    ?

    成功的PM 如果得到團隊成員的支持, 會是什么樣?

    成為項目流程的主人 - 驅動流程, 會議, Scrum, 進度

    代表團隊, 向上級/伙伴團隊/客戶/市場部門 報告項目進展

    團隊成員都樂意和你交流,? 你贏得大家的尊重

    你不用自己寫一行代碼,也同樣可以積極地影響項目和產品

    ?

    PM 如果得不到到團隊成員的支持, 會是什么樣?

    在各種會議或流程中浪費大家的時間,? 發一些大家不讀的 “Status Mail”.

    不能凝聚團隊, 形成共識

    對團隊的狀態不了解, 也不能有效和準確地向有關方面報告團隊的情況, 獲得支持,但偏偏還不斷打擾團隊成員,糾纏一些過時的問題。

    對項目和產品造成負面的影響。

    PM 還會和團隊成員因為對投入的認識不同而產生誤解, 參考 豬,雞和鸚鵡,當隊友期望你是“豬”的時候 , 你偏偏當個“雞”;當隊友期望你作為“雞”而搞定某一事情 , 你卻偏偏當個飛來飛去的”鸚鵡”!

    ?

    4. PM 們的故事

    講了這么多條條框框, 我們還是講幾個故事吧:

    ?

    A) 是不是所有的好功能都是由PM 主導, 一步一步根據用戶需求,按照用戶場景設計,然后可用性測試等等步驟之后得來的?

    功能本天成,妙手偶得之——一個來自微軟的故事。[注3]

    約摸在1985年,微軟的一個叫Steve Hazelrig的工程師正在寫Mac Excel 版本的打印功能,那時候激光打印機很貴,而且離辦公室也不近。他懶得經常跑到打印機那兒取打印紙,檢查打印效果,就寫了一個小程序,把要輸出到打印機的圖像顯示在屏幕上,還有一個放大鏡功能可以把局部放大以檢查每個像素的位置及效果。這時一個PM路過看到了這個小工具,說,這么酷的東西,為啥不做成一個功能呢?

    所以后來微軟的編輯軟件都有“打印預覽”這一功能。然而,用戶們并沒有正式地要求這一功能。

    B) PM 怎么說服聰明的同事 這個故事在 [注4, 注5] 中都提到了. 在Macintosh 研發的過程中, 由于計算能力的限制, 計算機的圖形顯示非常緩慢.? 一位聰明的程序員展示了他的新算法, 能很快地畫圓形和橢圓. 當他得意地展示給 Steve Jobs 看的時候,? (作為一個不懂編程技術的 PM,Steve 應該表示仰慕才對…) Steve 看了之后, 反問 - 你能繼續改進, 讓圓角的矩形框顯示速度加快么??? 程序員說: 這個太難了, 也沒有必要.? 橢圓不是挺好的么?? Stevel 為了說服同事, 建議兩人到外面散步, 然后指出現實世界中的各種告示牌都是用 圓角的矩形框 來實現,走了一圈, 同事就被說服了。 過了幾天, 圓角的矩形框也可以很快速地在屏幕上顯示了。 C) PM 如何找到需求 一些人常說PM 負責提需求,??Dev?就管實現就好了, ?那需求從哪里來呢?? <Social Network> 這部電影提到這樣一個情節: Mark在忙著寫早期的 "the facebook"?網站, 一個同學來打聽他認得的某女生有沒有男朋友,? Mark 聽了, 趕緊把 "顯示交友狀態" 這一功能加到了網站上。 你說他是不是一個好的PM?? ? D) PM 的分析能力和韌性 能把市場, 我方的優勢和劣勢, 創新的機會講得頭頭是道, 也是一種能力。 在軟件工程課上我們講過 NABC 方法。? 喬布斯在 NeXT 公司時那樣也做過很有說服力的分析: http://v.youku.com/v_show/id_XMzE1Mzc2NTE2.html? 注意, 這么厲害的 PM, 分析的這么透徹, 但是 NeXT 的產品還是失敗了.? 但是喬布斯沒有氣餒, 又投入了另一個公司的運作 – Pixar.?? 你有這些能力么?

    微軟的PM 有獨特的歷史和價值, 正如 Steven Sinofsky 講的: 一直被拷貝, 但很少成功復制… [注6]? [注8]。新的技術浪潮和商業模式給 IT 人士提供了一波又一波的機會,了解PM 的特點和要求,對要想進入這一領域的同學來說很有好處。

    ?



    ?

    ?

    [注1: PM來源: http://www.joelonsoftware.com/items/2009/03/09.html]

    [注2: PM 在微軟的工作: http://blogs.msdn.com/b/jmeier/archive/2010/07/03/what-is-a-pm-at-microsoft.aspx ]

    [注 3:? 源自微軟的[口述歷史] ]

    [注4:? Revolution in the Valley]

    [注5: Steve Jobs, by Walter Isaacson]

    [注6: Steven Sinofsky 關于PM @ Microsoft 的博客:? http://blogs.msdn.com/b/techtalk/archive/2005/12/16/504872.aspx ]

    [注7: Scott Berkun 也曾是微軟的PM, 他寫了一本很好的PM 手冊: Make Things Happen ]

    [注8: Eric Brechner 最近也對微軟的PM 發表了意見: http://blogs.msdn.com/b/eric_brechner/archive/2012/07/01/pm-secret-weapon-or-wasted-headcount.aspx?]

    總結

    以上是生活随笔為你收集整理的现代软件工程讲义 5 项目经理 Program Manager的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。