當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]Charles Simonyi,這位曾與Martha Stewart(譯者注:美國(guó)女富豪,作家)拍拖15 年、WYSIWYG字處理技術(shù)發(fā)明人之一、從微軟股票賺得10 億美元(譯者注:Charles Simonyi 曾是微軟Office產(chǎn)品團(tuán)隊(duì)的負(fù)責(zé)人)、到過(guò)太空的天才程序員,是試圖解決大型軟件團(tuán)隊(duì)遇到的






Charles Simonyi,這位曾與Martha Stewart(譯者注:美國(guó)女富豪,作家)拍拖15 年、WYSIWYG字處理技術(shù)發(fā)明人之一、從微軟股票賺得10 億美元(譯者注:Charles Simonyi 曾是微軟Office產(chǎn)品團(tuán)隊(duì)的負(fù)責(zé)人)、到過(guò)太空的天才程序員,是試圖解決大型軟件團(tuán)隊(duì)遇到的“人月神話”問(wèn)題之第一人。他的方法是創(chuàng)立一個(gè)新的崗位,由超級(jí)天才程序員擔(dān)任,負(fù)責(zé)系統(tǒng)中最重要功能的實(shí)現(xiàn),而其他次要部分則交給一個(gè)由低級(jí)程序員組成的雜牌團(tuán)隊(duì)。他把這個(gè)崗位命名為程序經(jīng)理(program manager)。雖然Simonyi 本人是天才級(jí)的,但他的這個(gè)想法卻不怎么出彩,我想沒(méi)人愿意做一個(gè)被人輕視的低級(jí)程序員吧。

若需詳細(xì)了解這段歷史, 可以閱讀William Poundstone的《How Would You Move Mount Fuji?》

Jabe Blumenthal,是20世紀(jì)80年代后期在Mac Excel團(tuán)隊(duì)工作過(guò)的一名程序員。他撿起了這個(gè)頭銜,卻賦予了不同的含義。Blumenthal 發(fā)現(xiàn)軟件開(kāi)發(fā)已經(jīng)變得日益復(fù)雜,以致沒(méi)有哪個(gè)程序員有時(shí)間去關(guān)心如何真正保證軟件的可用性和實(shí)用性。而市場(chǎng)人員又在一旁大談客戶(hù)需求,抱怨沒(méi)人聽(tīng)他們的 話,沒(méi)人將他們MBA式的天才想法轉(zhuǎn)化為軟件中可用的功能。產(chǎn)品設(shè)計(jì)方面不少的工作都需要花費(fèi)大量時(shí)間,比如用戶(hù)溝通、可用性測(cè)試、競(jìng)爭(zhēng)對(duì)手產(chǎn)品的分析評(píng) 估、將復(fù)雜問(wèn)題化繁為簡(jiǎn)等等。但絕大多數(shù)程序員恰恰沒(méi)有時(shí)間做這些事情(實(shí)際上這些往往也不是他們的強(qiáng)項(xiàng))。于是,Blumenthal 重拾“程序經(jīng)理”,不過(guò)完全重新定義了這個(gè)職位。

程序經(jīng)理需要做什么工作?

自此以后,一名程序經(jīng)理的工作包括:

  • UI 設(shè)計(jì)
  • 編寫(xiě)功能規(guī)格
  • 團(tuán)隊(duì)協(xié)調(diào)
  • 充當(dāng)用戶(hù)代言人

還有,穿Banana Republic 牌子的休閑Chino褲

在 小項(xiàng)目中,你有一個(gè)程序經(jīng)理就夠了,但對(duì)于大型項(xiàng)目,就可能需要配置多位了,每個(gè)人負(fù)責(zé)全部功能特性的一個(gè)子集。從眾多項(xiàng)目中總結(jié)出來(lái)了一個(gè)經(jīng)驗(yàn)法則:每 四名程序員配置一個(gè)程序經(jīng)理。那么如何劃分功能集呢,如果你遇到困難,我向你推薦我從Mike Conte那學(xué)到的方法:根據(jù)用戶(hù)活動(dòng)劃分產(chǎn)品功能(http://www.joelonsoftware.com/uibook/chapters /fog0000000065.html)。比如:twitter.com可劃分為四類(lèi)用戶(hù)活動(dòng):

  • 注冊(cè)與登錄
  • 發(fā)表帖子、閱讀回復(fù)
  • 配置個(gè)人賬戶(hù)
  • 搜索新聞

我的第一份程序經(jīng)理工作是在微軟的Excel團(tuán)隊(duì),負(fù)責(zé)一個(gè)叫做用戶(hù)化的用戶(hù)活動(dòng)(比如編寫(xiě)腳本、宏)。首先要做的事情是搞清楚用戶(hù)的需求。于是我與很多用戶(hù)交流,直到我長(zhǎng)滿(mǎn)繭子的耳朵只能聽(tīng)到相同的需求、讓人厭煩為止。接下來(lái),需要花很多時(shí)間與開(kāi)發(fā)團(tuán)隊(duì)溝通,弄清在18個(gè)月的新版本開(kāi)發(fā)周期中,些需求是合理的、可以實(shí)現(xiàn)的。并和Visual Basic 團(tuán)隊(duì)溝通,確定他們是否可提供編譯器、代碼編輯器、對(duì)話框編輯器,否則用戶(hù)就不能在Excel中使用宏語(yǔ)言。同時(shí)還必須跑去與Apple溝通,他們當(dāng)時(shí)正在自己搞一門(mén)叫做AppleScript的通用宏語(yǔ)言。此外,我還要和微軟內(nèi)部的其他應(yīng)用團(tuán)隊(duì),主要包括Word、Access、ProjectMail等打交道,因?yàn)樗麄円苍谧龊?code style="box-sizing: border-box;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.0470588);word-break: break-all;">Excel團(tuán)隊(duì)差不多的事情。這個(gè)過(guò)程的絕大部分工作,都是溝通討論——會(huì)議、郵件、電話……幾乎無(wú)休無(wú)止。我被那段生活搞怕了,直到現(xiàn)在,在辦公室的時(shí)候還怕聽(tīng)到 電話鈴響。

第二步是寫(xiě)愿景規(guī)劃。這是一個(gè)內(nèi)容相當(dāng)寬泛的文檔,比如Visual Basic如何在Excel中工作,用戶(hù)可能編寫(xiě)的宏是什么樣子,需要技術(shù)團(tuán)隊(duì)構(gòu)建哪些模塊,以及它們?nèi)绾谓鉀Q用戶(hù)的問(wèn)題。然后在此基礎(chǔ)上討論修改,直到 沒(méi)有太多分歧。至此,便可以開(kāi)始編寫(xiě)詳細(xì)規(guī)格書(shū),要描述清楚每個(gè)不可再分的細(xì)節(jié)呈現(xiàn)在用戶(hù)面前時(shí)的樣子。

這是一份功能而不是技術(shù)規(guī)格書(shū)。也就是 說(shuō),它的全部?jī)?nèi)容都用于描述用戶(hù)所見(jiàn)所為,而不是程序如何實(shí)現(xiàn)。若需進(jìn)一步了解功能規(guī)格,請(qǐng)閱讀http://www.joelonsoftware.com/articles/fog0000000036.html。程序經(jīng)理不關(guān)心開(kāi)發(fā)團(tuán)隊(duì)的內(nèi)部 實(shí)現(xiàn)細(xì)節(jié)。當(dāng)我將這份功能規(guī)格發(fā)給開(kāi)發(fā)團(tuán)隊(duì)的頭頭Ben Waldman后,他和他的團(tuán)隊(duì)再坐下來(lái)詳細(xì)討論實(shí)現(xiàn)工作。最后,他們很聰明地弄出一份精悍的表格,將我定義的面向?qū)ο蟮慕涌谝灰挥成涞?code style="box-sizing: border-box;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;font-size: 14px;word-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.0470588);word-break: break-all;">Excel內(nèi)部功能。當(dāng)然這不是我的事情,我對(duì)Excel內(nèi)部知之甚少,并不知道那些需求應(yīng)該怎么實(shí)現(xiàn)。

老實(shí)說(shuō),我那時(shí)候?qū)κ裁炊际且桓[不通。剛從學(xué)校出 來(lái),對(duì)代碼開(kāi)發(fā)、程序測(cè)試、文檔撰寫(xiě)、產(chǎn)品推廣以及可用性測(cè)試等,完全沒(méi)有經(jīng)驗(yàn)。幸運(yùn)的是,微軟在每個(gè)崗位都有經(jīng)驗(yàn)豐富的導(dǎo)師,他們教給了我迄今知道的全 部知識(shí),也是他們真正承擔(dān)了這么大的產(chǎn)品的全部實(shí)際工作。舉個(gè)我知道的例子說(shuō)吧,用戶(hù)在宏程序里將電子表格中單元格的值復(fù)制給一個(gè)變量:

  x = [A1]

問(wèn)題是單元格的值可能是數(shù)字,也可能是字符串;而B(niǎo)asic 語(yǔ)言是早期綁定的,你必須首先用DIM將x 定義為Integer、Float 或String等確定類(lèi)型,然后才能使用。

要解決這個(gè)問(wèn)題,Basic 必須支持某種動(dòng)態(tài)類(lèi)型,但我沒(méi)那么聰明,想不出什么解決辦法。不要緊,Visual Basic團(tuán)隊(duì)的程序員Tom Corbett想出來(lái)了http://www.patentstorm.us/patents/5689709/description.html。Variants和IDispatch由此誕生了,借助鴨式類(lèi)型識(shí)別(duck typing?!叭绻恢圾B(niǎo),走起來(lái)像鴨子,叫起來(lái)像鴨子,那我們就可以管它叫鴨子?!保?,于是Basic 搖身一變,成了動(dòng)態(tài)語(yǔ)言。這個(gè)事情說(shuō)明,我的工作不是自己去解決問(wèn)題,而是找到用戶(hù)需要解決的問(wèn)題,并保證程序員找出解決這些問(wèn)題的辦法。

一旦功能規(guī)格完成、技術(shù)團(tuán)隊(duì)開(kāi)始工作后,我的職責(zé)就有了變化:(1)解決設(shè)計(jì)方面出現(xiàn)的問(wèn)題;(2)負(fù)責(zé)與所有其他團(tuán)隊(duì)的溝通,以便節(jié)省開(kāi)發(fā)人員的時(shí)間。例如,我要向測(cè)試人員說(shuō)明全部功能是如何運(yùn)轉(zhuǎn)的,并幫助他們?cè)O(shè)計(jì)測(cè)試計(jì)劃;確保文檔團(tuán)隊(duì)明白如何為Excel Basic 編寫(xiě)一份高質(zhì)量的教程和參考手冊(cè);和本地化專(zhuān)家確定本地化策略;向市場(chǎng)人員解釋VBA在市場(chǎng)上的優(yōu)勢(shì);和可用性專(zhuān)家設(shè)計(jì)可用性測(cè)試方案等。

程序經(jīng)理需參加大量的會(huì)議,但其產(chǎn)出基本不超出規(guī)格文檔這個(gè)范圍,因此我一個(gè)剛畢業(yè)的無(wú)用之人也能勝任這份工作。完全沒(méi)必要讓一個(gè)有14年經(jīng)驗(yàn)的資深程序員擔(dān)當(dāng)程序經(jīng)理。實(shí)際上,有14年的開(kāi)發(fā)經(jīng)驗(yàn),你反而可能因?yàn)橹捞?,而無(wú)法扮演好用戶(hù)代言人這個(gè)角色。

沖突

如果沒(méi)有程序經(jīng)理,聰明的程序員們?cè)谝黄?,可能設(shè)計(jì)出讓用戶(hù)難以理解的界面,也許只有Vulcan 人(《Star Trek / 星際迷航》中邏輯思維能力超強(qiáng)的外星種族)才會(huì)表示“正合吾意”。最好的程序員會(huì)聰明到不能理解用戶(hù)為何不能記住16 個(gè)單字母的命令行參數(shù)。這些程序員往往難以割舍他們的最初想法,尤其是已經(jīng)將自己的想法變成了代碼之后。

程序經(jīng)理給軟件設(shè)計(jì)流程帶來(lái)的最大益處,是可以引入程序員之外的第二種觀點(diǎn)。而這種觀點(diǎn)恰恰更接近用戶(hù)的想法——這些用戶(hù)往往既不想閱讀使用手冊(cè),更不想寫(xiě)什么emacs-lisp函數(shù),至于在他們大腦里將十進(jìn)制數(shù)字轉(zhuǎn)化為八進(jìn)制,那就更不可能了。

一個(gè)好的程序經(jīng)理對(duì)于UI 的工作方式有他自己的想法,和開(kāi)發(fā)人員的相比,可能更好,也可能更壞,因此需要雙方進(jìn)行討論。通常,程序經(jīng)理是站在用戶(hù)角度,希望凡事都盡可能簡(jiǎn)單易懂, 諸如有心靈感應(yīng)力的用戶(hù)界面、大到30″ 而又能放進(jìn)口袋的屏幕之類(lèi);而開(kāi)發(fā)人員想的是處處盡可能減少要編寫(xiě)的代碼,支持命令行界面(他們會(huì)說(shuō)“這怎么就不好用了呢?”)和Python綁定。

我記得Excel 5項(xiàng)目中最為經(jīng)典的爭(zhēng)論發(fā)生在一個(gè)開(kāi)發(fā)人員和程序經(jīng)理之間。開(kāi)發(fā)人員希望數(shù)據(jù)透視表(pivot table)懸浮在電子表格的繪畫(huà)層上,而程序經(jīng)理堅(jiān)持認(rèn)為數(shù)據(jù)透視表應(yīng)位于單元格的右側(cè)。這個(gè)爭(zhēng)論持續(xù)了很長(zhǎng)時(shí)間,最后由程序經(jīng)理勝出。而最終的設(shè)計(jì)比 當(dāng)初任何一方的單獨(dú)設(shè)計(jì)都好出很多。

為確保這種爭(zhēng)論完全以事實(shí)為基礎(chǔ)、在參與方間平等地展開(kāi),程序經(jīng)理和開(kāi)發(fā)人員地位對(duì)等是必要的。如果開(kāi)發(fā)人員 負(fù)責(zé)向程序經(jīng)理匯報(bào),那么在爭(zhēng)論過(guò)程的任何時(shí)刻,程序經(jīng)理只要略感厭倦,就可以說(shuō)“好了,討論得夠了,現(xiàn)在就按我說(shuō)的辦”。但如果他們是對(duì)等的,這種事情 就不會(huì)發(fā)生。就好比在法庭,我們不能允許任何一方的律師同時(shí)是法官。只有建立在這個(gè)理論之上,真理才最可能通過(guò)對(duì)等雙方間的爭(zhēng)論而被發(fā)現(xiàn)。只有任何參與方 都不具有不公平優(yōu)勢(shì)時(shí),爭(zhēng)論本身才可能是公平的。

這點(diǎn)很關(guān)鍵,如果你剛才還在夢(mèng)里探究11年級(jí)的Sally 現(xiàn)在在哪兒,趕緊醒醒吧。她在Scottsdale做生物醫(yī)學(xué)家,還入了共和黨。我們必須明白,程序員不能是程序經(jīng)理的下屬,換句話說(shuō),開(kāi)發(fā)團(tuán)隊(duì)的頭頭、CTO或CEO,都不應(yīng)是負(fù)責(zé)撰寫(xiě)規(guī)格書(shū)的人。

大多數(shù)公司犯的頭號(hào)錯(cuò)誤,就是讓程序員的上級(jí)編寫(xiě)規(guī)格書(shū)、設(shè)計(jì)產(chǎn)品。這樣出來(lái)的設(shè)計(jì),不能得到真正平等的審查,不能引出沖突與爭(zhēng)議,自然就不會(huì)好到哪里去。

要我真正弄懂這個(gè)道理,其實(shí)并不容易。在Fog Creek 軟件公司,我自己曾承擔(dān)了該程序經(jīng)理做的大量工作,為此我費(fèi)勁口水,時(shí)刻提醒在我說(shuō)錯(cuò)的時(shí)候,程序員要指出、爭(zhēng)辯。我們不是大公司,但也已經(jīng)到了需要真正 的程序經(jīng)理的時(shí)候了——Dan和Jason,程序員喜歡和他們吵。

當(dāng)然,程序員和程序經(jīng)理地位對(duì)等的時(shí)候,程序員會(huì)略占優(yōu)勢(shì)。這樣的事曾發(fā)生過(guò)幾次:程序員讓我介入他和程序經(jīng)理間發(fā)生的爭(zhēng)議。

“誰(shuí)寫(xiě)代碼?”我問(wèn)。

“是我……”

“那好,誰(shuí)負(fù)責(zé)將程序簽入版本控制庫(kù)呢?”

“我想還是我……”

“既然這樣,那你還有什么問(wèn)題呢?”我問(wèn),“你對(duì)最終產(chǎn)品的每個(gè)比特都有絕對(duì)控制權(quán),你還需要什么呢,一頂皇冠?”

可見(jiàn),這種體制將擔(dān)子壓在了程序經(jīng)理肩上,要求程序經(jīng)理能說(shuō)服程序員,因?yàn)樵谀承r(shí)候,程序經(jīng)理會(huì)面臨程序員不理會(huì)爭(zhēng)議而直接按自己想法行事的風(fēng)險(xiǎn)。因此,要成為一名優(yōu)秀、有影響力的程序經(jīng)理,要求你:(1)正確;(2)贏得程序員的尊重,唯此他們才可能承認(rèn)你的正確。

往期精彩


談?wù)勛霎a(chǎn)品、做項(xiàng)目以及標(biāo)準(zhǔn)化相關(guān)的話題

推薦一個(gè)非常好的項(xiàng)目管理工具

十種能力指引IT人才走向成功

若覺(jué)得本次分享的文章對(duì)您有幫助,隨手點(diǎn)[在看]并轉(zhuǎn)發(fā)分享,也是對(duì)我的支持。


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉