免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
方正的軟件開發(fā)方法

1999年.第 1期.電腦與生活.企業(yè)方法

方正的“工廠”

本報記者 劉韌

 

北京大學(xué)計算機科學(xué)技術(shù)研究所的前身是北京大學(xué)文字信息處理技術(shù)研究室,始建于1977年9月,1983年正式成立北京大學(xué)計算機科學(xué)技術(shù)研究所,現(xiàn)任所長是中國科學(xué)院院士、中國工程院院士、第三世界科學(xué)院院士、著名計算機專家王選教授,副所長是劉秋云教授。

 

1995年與北大方正集團公司聯(lián)合成立北大方正技術(shù)研究院,現(xiàn)由王選教授擔任院長,劉秋云、肖建國、陽振坤教授和鄒維副教授任副院長。方正技術(shù)研究院負責方正集團的技術(shù)發(fā)展研究和新產(chǎn)品的研制開發(fā),同時承擔著部分基礎(chǔ)研究工作,為公司的長遠發(fā)展積累技術(shù)資源和人才資源,成為方正集團的科研開發(fā)基地。

 

目前所(院)內(nèi)建有博士、碩士研究生培養(yǎng)點和博士后流動工作站,以本所為依托建有文字信息處理技術(shù)國家重點實驗室和電子出版新技術(shù)國家工程研究中心,下設(shè)報業(yè)管理、文字與圖形處理、數(shù)字媒體、金融信息技術(shù)、指紋技術(shù)、照排技術(shù)等6個研究所,以及彩色系統(tǒng)、地理信息、辦公自動化、出版社管理等多個研究室。全所(院)現(xiàn)有工作人員460余人,其中副高級職稱以上人員25人,博士22人,碩士180余人??偨ㄖ娣e近10000平米,各種儀器設(shè)備900余臺套。

 

方正最早的報紙排版軟件NPM,作者只有兩個人,主持開發(fā)的是方正研究院現(xiàn)任常務(wù)副院長肖建國。NPM在1988年一經(jīng)推出即被全國半數(shù)以上的報紙采用,出盡風頭,時至今日《北京日報》、《人民日報》的部分版面還在使用NPM排版。

 

1988年能在DOS平臺上寫出“所見即所得”的圖文混排系統(tǒng),足以證明肖建國的編程水平是大師級的,而且,NPM為方正所創(chuàng)造的利潤也不亞于后來出名的任何著名程序員的成名之作,但肖建國并沒有出名,也沒找哪家報紙談過自己的程序人生,而是繼續(xù)埋頭苦干,于1993年主持開發(fā)完成了方正彩色出版系統(tǒng),在方正黑白排版市場萎縮之際,為方正培養(yǎng)出新的利潤增長點,使方正牢牢地占領(lǐng)了彩色報紙出版市場。

 

這次功成之后,肖建國仍然沒有急著自己出名,因為盡管作為優(yōu)秀程序員,肖建國的個人能力非常強,但他清醒地認識到:一個長久發(fā)展的有規(guī)模的軟件公司僅靠發(fā)揮一兩個天才程序員的能動性在未來的競爭中必將落敗。

 

作坊為什么不行

 

1988年寫出令人自豪和驕傲的NPM,1993年主持開發(fā)成功方正彩色出版系統(tǒng),肖建國得出的結(jié)論不是自己“頂天立地”,方正離開自己不行,而是一兩個人能夠?qū)懗龊玫能浖@個軟件的規(guī)模不會很大,當軟件規(guī)模足夠大的時候,一兩個人是絕對做不過來的。

 

據(jù)王選回憶,方正在1988年創(chuàng)業(yè)時候,推出的三大產(chǎn)品RIP、NPM和BD書版排版語言,每個產(chǎn)品代碼約在10萬到15萬行,而現(xiàn)在上市的產(chǎn)品程序量則差不多都在50萬到100萬行,方正現(xiàn)在在外面賣的軟件總程序量要超過300萬行。

 

天才的程序員可以在程序的某些模塊體現(xiàn)出自己高超的藝術(shù)性和精巧性,但如此大規(guī)模的程序全靠一兩個人去體現(xiàn)自己的技巧是無論如何也行不通的,實際上也沒有那么多技巧需要施展。程序就是程序,代碼而已,有時候被比喻為藝術(shù),但那只是比喻而已。無論多么精彩絕倫的算法,對于未來龐大的工程性的軟件來說都只能處于錦上添花的地位,而不再會是主角。

 

為了說明30萬行代碼和300萬行代碼的不一樣,肖建國打了一個蓋大樓的比方:“從理論上講,一個人也能蓋起一座大樓,只要這個人每天起早貪黑地干,一年不行兩年,兩年不行三年,總有砌下最后一塊磚的時候,可現(xiàn)實中的大樓沒有這樣蓋的,因為每座大樓都有最后交工的期限,軟件更是這樣,規(guī)定時間內(nèi)不能上市,用戶就會選擇競爭對手的產(chǎn)品。”

 

“師傅帶徒弟”式的作坊作業(yè)讓方正研究院數(shù)字媒體研究所所長助理郭宗明更多憂慮的是公司風險難以控制。“作坊式作業(yè)將希望全寄托在一兩個天才程序員身上,一兩個天才程序員發(fā)揮得好,做得可能比想象得還要好,但萬一做不出來怎么辦?萬一這個人跳槽了怎么?”大公司要講可操作性,什么時候把軟件寫出來了,什么時候上市,都要使用倒記時的方式。而“作坊式作業(yè)不可能做到有計劃,按時推出產(chǎn)品,只能把‘寶’全壓在天才程序員的個人身上,太不安全了。”盡管郭宗明被王選稱為天才程序員,但他一點都不想把公司的命運寄托在像他這樣的天才程序員身上。

 

方正研究院文字圖形研究所副所長李征認為,不僅不應(yīng)該把命運寄托在一兩個名程序員身上,甚至壓根兒都不應(yīng)該鼓勵“明星制”。“今天的程序已經(jīng)談不上明星了,軟件不等于程序,不等于代碼,軟件是一種商品。它需要有包裝、使用指南、安裝程序、培訓(xùn)、用戶支持、升級、售后服務(wù)等等配件,單純的程序是不能賺錢的,只有成為商品的軟件才能夠賺錢。中國軟件產(chǎn)業(yè)發(fā)展之初由于軟件過度匱乏,沒有任何包裝的程序也能夠賣錢,而且,還能賣個天價;但那個時代已經(jīng)一去不復(fù)返了。現(xiàn)在再好的程序,如果沒有包裝,沒有市場推廣一定難以獲得大規(guī)模的利潤,因此現(xiàn)在已經(jīng)進入了由名軟件公司取代名程序員的時代。”作為方正核心產(chǎn)品文字排版軟件所的副所長,李征不寫程序,他將自己定位在軟件開發(fā)管理者的角色上。

 

衡量一家軟件公司是“作坊式”的作業(yè)方式,還是“工廠式”的作業(yè)模式,并非只看它的規(guī)模,并非這個公司程序員少,就說它是軟件“作坊”,那個公司有幾百名程序員,就說它是軟件“工廠”。是“作坊”還是“工廠”不能以人數(shù)而論,方正研究院的演進過程很能說明這個問題。

 

方正研究院的程序員每天都在增多,其直接目的并不是為了形成“軟件工廠”,而是因為軟件規(guī)模越來越大,功能越來越多,需要更多的程序員來寫。很多程序員在一起工作不能自然而然地形成“工廠式”的作業(yè)模式,方正研究院幾百名程序員聚集在一起,起初的情形用肖建國的話形容就是“由小作坊變成了大作坊,大作坊底下帶了很多個小作坊”而已。

 

程序員多,產(chǎn)品是做大了,但由于程序員之間交流不夠,技術(shù)思想、技術(shù)手段、實現(xiàn)方法互相配合得不好,致使寫出的軟件產(chǎn)生了許多許多的BUG。甲程序員的模塊要和乙程序員的模塊配合,因為沒有規(guī)范和制度確保實現(xiàn)這種配合和溝通,結(jié)果造成:甲調(diào)用的時候僅憑假設(shè)想象乙是怎么做的,這種假想的結(jié)果是有時候做重復(fù)了,有時候做錯了,最后,軟件配合起來就不行。肖建國回想當年的情景頗有些感慨:“人員一多,就很難組織。1992、1993年,方正軟件因此出現(xiàn)了大量的BUG,造成軟件從1.0、1.01、1.12到1.03,版本滿天飛,同樣是1.1版,有今天的1.1版,有明天的1.1版,原因是軟件錯誤太多,今天這個用戶來抱怨,打個補丁改了,明天那個用戶又提出了另外一個問題,再打一個補丁交給人家。程序員費了牛勁去改,軟件版本滿天飛,但錯誤還是一大堆。”所謂“軟件工廠”即是一套克服這種協(xié)作混亂的管理方法。

 

協(xié)作難在何處

 

深知軟件協(xié)作困難的肖建國認為,直到現(xiàn)在中國人還做不了像Windows 95這樣大型的軟件。“給再多的錢也做不出來!軟件組織機構(gòu)越大越難管理,大到一定時候就無法控制了,就會出現(xiàn)管不了,失控的局面。” “軟件是大家的,我為什么要多操那個心。”

 

為什么會有這么難?程序員多起來,自然就要有分工,有分工的時候,心態(tài)調(diào)整問題就會凸現(xiàn)出來:原先作坊式作業(yè)的時候,軟件是一兩個程序員寫的,軟件寫完了,雖然在產(chǎn)權(quán)上這個軟件或許不是自己的,但程序員心里會覺得這個軟件就是自己的,對這個軟件的感情就像對自己的兒子一樣,關(guān)于這個軟件一切成敗榮辱都被看成是自己的,在這種心態(tài)下,程序員會不分白天黑夜地超常投入。而軟件“工廠”模式的直接結(jié)果是一個軟件由幾十個、甚至上百個人寫,軟件寫成以后究竟是誰的?有了榮譽是誰的?都不是太明確。同樣,軟件有點毛病也不專是哪個人的,而是大家的,既然是大家的事情,那就讓大家來做,我為什么要多操那個心?但“大家”是一個概念,就像可以拿來一個蘋果,不可以拿來一個“水果”一樣,“大家”這個概念同樣落不到實處,而對軟件的責任心卻必需落到實處。在這個問題上,肖建國承認“現(xiàn)在我們這里的人勤奮程度要比當初差一些。”

 

軟件越做越大,越做越復(fù)雜是不可抗拒的世界潮流,一家軟件公司要參與未來的競爭就必需有做大軟件的能力,而做大軟件就必需要有分工協(xié)作,決不能因為協(xié)作會降低個人的積極性,協(xié)作起來會遇到重重困難就否定協(xié)作,那樣做等于因噎廢食。因此,問題的關(guān)鍵是怎樣在分工協(xié)作的模式下,最大限度地調(diào)動大家的積極性。

 

在肖建國看來,要調(diào)動程序員的積極性問題,首先要在分工上做適當?shù)目紤]。“不能咱倆合作,所有的設(shè)計我都做完了,叫你去編碼,那樣你可能會覺得很枯燥,會感到?jīng)]有發(fā)揮你的創(chuàng)造能力。”在方正研究院提倡軟件設(shè)計部分大家都參與,都有表達創(chuàng)造力的機會。

 

事物是歷史的,方正的軟件也不例外,有些軟件最初就是一兩個人寫的,這一兩個人會覺得這個軟件是他的,會有很多感情,而后來加入開發(fā)的程序員則會面臨心態(tài)融合的問題,后加入的程序員會覺得“我寫這個模塊,是分配給我的任務(wù),不用想別的,那就做吧。”碰到這個問題,李征的方法是給后來的人創(chuàng)造機會,盡量將年青人推到項目經(jīng)理、測試經(jīng)理和支持經(jīng)理崗位上,讓他們感覺到是他們在控制著軟件的發(fā)展,感覺到是他們自己在做主。

 

溝通的時候,則鼓勵大家把想法都說出來。盡管李征不鼓勵名程序員,但他從來不把程序員看成只是完成代碼的機器,而是千方百計試圖將新加入的程序員變成集體的一分子,讓他們感覺到共同完成的軟件之中有著自己的一份功勞。

 

為了培養(yǎng)程序員對軟件的感情,李征讓程序員開展示會的時候去盯展臺,當程序員看到自己寫的軟件有人買,聽到用戶在議論自己寫的程序的時候,會自然而然地和產(chǎn)品發(fā)生關(guān)系。

 

無論在哪里錢都是非常重要的,但是做軟件僅僅有錢是遠遠不夠的,還需要培養(yǎng)程序員對企業(yè)、對產(chǎn)品的感情,這一點李征深有感觸:“后進來的人是在為已有的軟件加功能,是在維護軟件,他并沒有權(quán)改造軟件,只有權(quán)改BUG,這樣的工作很繁復(fù),沒有什么新意,具有犧牲的意義。”為此,李征堅持給這些程序員高待遇,評項目獎的時候,不分資歷想辦法多給他們一些榮譽。

 

機制上,郭宗明認為要保證軟件做好了大家全有份,而不光是“頭兒”的事。“我們的項目獎不會是平均的,但每個人都有份,同樣,軟件做不好,大家都‘砸’。”

 

“很顯然的事,你怎么就不明白呢?”

 

分工協(xié)作遇到的另外一個大難題是溝通問題,解決這個問題最直接的方法是開會。方正研究院的會議現(xiàn)在越來越多,幾個會議室總是塞得滿滿的。組內(nèi)的人要經(jīng)常交流,組和組之間、課題和課題之間、研究所和研究所之間要考慮接口問題、配合問題。開會是容易的,通過會議解決問題卻是困難的。討論交流難免會有爭論,這個時候一定要有人站出來仲裁,否則,討論下去永遠不會有結(jié)論。

 

軟件是工程,不是理論問題,所以,能夠也必需通過仲裁的方式解決分歧,而不是通過進一步的研究分出到底誰對誰錯,軟件工程花不起研究的時間。對此,肖建國把話說得明白無誤:“軟件不是算1+1,1+1你要說等于3,我非和你爭不可,工程問題討論起來,可能會討論明白誰更高明,但很多時候是這樣也行,那樣也行,并沒本質(zhì)的差別,這個時候再固執(zhí)地爭論下去就沒意思了。”

 

溝通困難也有程序員性格和習(xí)慣方面的原因,做技術(shù)的程序員很容易把自己已經(jīng)做成的事情看得很簡單,覺得沒什么好講,“很顯然的事,你怎么就不明白呢?這還用解釋嗎?”是程序員面對請教最常態(tài)的反應(yīng),對這樣的程序員,肖建國認為要教育他們愿意把自己的想法主動告訴別人,愿意去傾聽別人是怎么想的。對于因為保守,不愿意將關(guān)鍵算法和技術(shù)告訴別人,關(guān)鍵時候要挾公司長工資的程序員,肖建國會將他開除。

 

為了從體制上保持充分的溝通,方正研究院將一個組的人數(shù)控制在10個人左右,以控制交流的難度,避免花在交流上的時間太多。

 

在肖建國看來,合理的協(xié)作方式應(yīng)該是先做和別人的接口部分,后做一個人關(guān)在屋里也能做好的部分,原因是“自己的事可以通過自己的努力,通過自己加班趕進度,總之是自己的時間好控制,而控制別人總不方便。更為重要的是,自己關(guān)在屋里先做,做完以后,發(fā)現(xiàn)和別人配合不起來,不僅要返工,還會因為到底是誰的問題和自己的協(xié)作者發(fā)生分歧和矛盾。”

 

軟件開發(fā)管理管什么

 

 

幾乎所有的管理都先從摸得著、看得見的地方入手,方正研究院對軟件開發(fā)的管理也不例外,他們首先抓的是文檔。

 

“不寫文檔就不要在這里干。”

 

在李征眼里,如果不寫文檔,就不是一個好程序員,所以,“不管這個程序員多么天才,如果不寫文檔,我都不要。李征要求“飛騰3.1”的需求分析,就要有三個重要的文檔:

 

第一份是用Excel做的一張大表,表上規(guī)定了:飛騰3.1要做多少個功能;每個功能的來源(是報社的需求,還是出版社的需求,或者是上一個版本遺留的問題);對每個需求的描述和優(yōu)先級別,以及這些功能計劃由哪些人來負責。

 

第二份文檔被稱為功能式樣書。它負責一一對應(yīng)地對上面那張大表上的每一個功能做進一步的說明,詳細闡明功能設(shè)計方法和實現(xiàn)方法。如果飛騰3.1有1000個功能,就會有1000份這樣的式樣書,式樣書很詳細,有的會長達幾十頁。

 

第三份文檔是用Project寫的進度表,規(guī)定飛騰3.1什么時候做設(shè)計,什么時候?qū)懘a,什么時候提交單元測試。軟件飛騰了!開發(fā)中每個里程碑都在這里做了規(guī)定。

 

為什么要寫這么詳盡的文檔?肖建國的經(jīng)驗是“寫軟件不能僅憑嘴說,說完了容易忘,而且,講話有二義性,軟件不能有二義性,所以,該寫的東西都要明確寫下來。”肖建國另外一個經(jīng)驗是:“想清楚、說清楚和寫清楚三者之間有很大的差異性,能寫清楚才算把事情徹底搞透了,很多時候是以為自己想清楚了,其實并沒有想清楚,所以,需要通過寫出來檢驗一下。”

 

寫這么多文檔會不會耽誤了寫代碼的時間?郭宗明認為寫文檔的時間必需舍得花。“從國外軟件開發(fā)的經(jīng)驗看,做文檔,寫注釋的時間,就是要比真正編碼的時間長。”

 

只有飽受教訓(xùn)的程序員才會自覺遵守規(guī)范

 

郭宗明感覺廣東話唱歌很好聽,但他建議大家說普通話,因為方言沒辦法交流。“軟件是大眾化的產(chǎn)品,許多快捷鍵都是公認的,開發(fā)約定大家也應(yīng)該共同遵守,界面是什么風格,變量怎樣命名,浮點數(shù)怎樣命名都要按既定的規(guī)范,程序員不能自己另起一套,自己另創(chuàng)一套可能對自己來說很好用,但別人就沒有辦法理解,沒辦法交流。”

 

為統(tǒng)一規(guī)范,方正研究院頒發(fā)了一套代碼編寫規(guī)范,而真正嚴格執(zhí)行的都是那些飽經(jīng)教訓(xùn)的程序員,因為只有他們才清楚為什么按規(guī)范寫程序日后才不會出麻煩,不規(guī)范的程序員被李征稱為“殺手”。“他們知道規(guī)范,也覺得規(guī)范很有道理,但真正寫程序的時候,就會忘記,因為他們沒吃夠苦頭。這個時候只能通過不斷地檢查他們的程序,強制他們執(zhí)行規(guī)范。”郭宗明發(fā)現(xiàn)不寫注釋或者不按規(guī)范寫注釋的程序員,會堅決要求他補上,因為郭宗明很擔心:“一旦這個程序員改做別的項目或者跳槽了,留下一堆天書一樣的源程序,誰也看不懂,誰也無法接手,整個項目都會受到影響。”

 

軟件編譯應(yīng)當說是相對容易的環(huán)節(jié),但就是這個環(huán)節(jié)上,李征所在的文字研究所出現(xiàn)過好幾次錯誤。最后,李征下決心制定了一個非常詳細的編譯規(guī)范,規(guī)定每一次編譯都要按照這個規(guī)范執(zhí)行。

 

這之后,李征覺得軟件公司所做的每一件具體的事情都應(yīng)該有規(guī)范,比方,刻光盤這樣的小事,李征也專門找人寫了一個規(guī)范流程。李征認為,事事有規(guī)范不僅可以避免錯誤發(fā)生,實際上還可以節(jié)約東撞一下西撞一下所浪費的時間。

 

關(guān)鍵性算法要說出來

 

規(guī)范是協(xié)同工作的基礎(chǔ),真正實現(xiàn)協(xié)同工作還需要制度來保證。方正研究院規(guī)定項目組的成員一個月必需坐在一起互相匯報一次。

 

相互匯報有三個顯而易見的好處:一、可以增進了解,有效避免調(diào)用錯誤;二、關(guān)鍵性算法說出來,大家可以提一些建議,可能會使算法更加優(yōu)化;三、可以增進協(xié)作的氣氛。郭宗明覺得,很多人愿意留在方正不是為了方正的錢,而是為了方正的氣氛。“保持心情舒暢很重要,大家彼此處得很好,發(fā)現(xiàn)問題會彼此提醒,一個人如果態(tài)度很差,大家就會盡可能地躲著他,能繞就繞過去,心里想的是,反正不是我的問題,跟我無關(guān),能不說就不說了。”

 

要想溝通協(xié)作得好,肖建國認為要從最“根上”考慮,“理想的狀態(tài)是,我們?nèi)齻€人一個課題組,進來第四個人的時候,我們?nèi)齻€都要參與面試,誰看不上眼,他都不能進來。”

 

越早發(fā)現(xiàn)錯誤損失越小

 

方正研究院不會將一個模塊交給一個程序員,三個月以后再去檢查,而是在每一個關(guān)鍵點上檢查他的工作,不停地對他的工作做需求評審、設(shè)計評審、代碼檢查、單元測試等等檢查工作。

 

需求評審,發(fā)現(xiàn)問題,糾正了,后面就不會錯下去,而等到三個月以后,程序員交上來一個亂七八糟的文檔,一個不能用的程序,那時候再后悔就來不及了。

 

有非常自覺、非常優(yōu)秀的程序員,但不能因此就相信所有的程序員都是自覺和優(yōu)秀的,人總是有惰性的,盡管每個禮拜都要檢查評審程序員的工作,好像對程序員不信任似的,肖建國還是堅持在每個關(guān)鍵點上檢查工作,“否則, BUG就沒有辦法控制,時間進度也沒辦法控制。” 沖突會發(fā)生在哪些環(huán)節(jié)

 

用制度和條文將變化較小的事情規(guī)定下來是組織管理的基礎(chǔ),根據(jù)條件的變化,隨時隨地解決沖突則是管理的藝術(shù)。管理得好與不好,全在處理各種各樣矛盾沖突時所把握的火候。在方正研究院第一個需要解決的沖突是——

 

選誰做項目經(jīng)理

 

做技術(shù)的人很難打心底服氣誰,為了讓大家都服氣,方正研究院過去提拔干部的標準是讓技術(shù)最強的人做項目經(jīng)理,這種做法大家比較容易心平氣和,但這樣做的通病是技術(shù)最強的人往往沒有管理和項目調(diào)控的能力,而軟件大規(guī)模工程化研發(fā)最需要的恰恰不是一個技術(shù)骨干自己能多做多少,而是通過有效的管理,調(diào)動大家的積極性,把團隊的力量發(fā)揮出來。

 

選管理型人才做項目經(jīng)理,如何平衡技術(shù)骨干和做管理的項目經(jīng)理之間的關(guān)系?方正研究院找到的辦法是讓技術(shù)骨干在待遇上到平衡,讓技術(shù)骨干和做管理的項目經(jīng)理拿一樣多工資,甚至更多,而且,在技術(shù)問題上充分尊重技術(shù)骨干的意見,負責項目管理的項目經(jīng)理更多是管理軟件開發(fā)進度和軟件質(zhì)量。在算法上,作為管理者的項目經(jīng)理肯定不如很多年青人腦子靈,開發(fā)人員想的是新技術(shù),項目經(jīng)理安身立命的依據(jù)則是豐富的開發(fā)經(jīng)驗,對軟件的總體把握以及對于規(guī)范的清楚掌握,兩者并不矛盾。

 

作坊時代已經(jīng)成為領(lǐng)導(dǎo)的技術(shù)骨干,肖建國會給他配一個負責管理的搭檔。“技術(shù)骨干待遇提上來以后,他會覺得當不當領(lǐng)導(dǎo)也沒關(guān)系。‘我技術(shù)上很強,比管我的領(lǐng)導(dǎo)拿的還多。’這樣心態(tài)就好了,說話也就心平氣和了。”但肖建國同時希望技術(shù)骨干記住,“技術(shù)骨干所具有的本事是技術(shù)上的,行為上還要受管理者的約束。”

 

真正天才的程序員真要給他官做,他或許還要擔心管理會耽誤了他鉆研技術(shù)的時間,所以,在保證待遇的前提下,天才程序員更需要的是給他一個難題來做,讓他跨越那個難題。最優(yōu)秀的人有一種征服的愿望,這個時候項目經(jīng)理要信任他,不要去干涉他,放手讓他去做,只要和他講:“這個事情非常重要,我們希望你來解決,而且,我們信任你有這個能力”就行了。

 

技術(shù)和管理并不總是矛盾的,在方正研究院就存在著既是編程天才,又是優(yōu)秀管理者的人,王選說肖建國、郭宗明都是這樣的人,這樣的人被王選稱為最難得的將才。

 

把程序員從技術(shù)的牛角尖里拽出來

 

無庸諱言,管理和技術(shù)更多地還是體現(xiàn)在沖突的一面,有的程序員鉆研某一項技術(shù)會專得很深,如果這項技術(shù)在整個軟件里面用的并不是太多,這個時候的鉆研就有可能影響整個項目的進度,這個時候項目經(jīng)理就有責任把程序員從牛角尖里拽出來。另外,技術(shù)人員更注重細節(jié),從用戶方面考慮的要少,怎么讓沒用過“維思”系統(tǒng),沒有見過NPM的程序員較多地考慮飛騰向下兼容的問題,對李征來說是一個不小的挑戰(zhàn)。

 

作為軟件開發(fā)管理者的李征認為,軟件公司最忌諱的是,一會兒讓這個程序員做這個項目,一會讓他做那個項目,而應(yīng)當讓他在一個方向上長期發(fā)展。“如果一個程序員在圖像方面已經(jīng)有了一些基礎(chǔ),今后凡是圖像方面的工作都應(yīng)該交給他做,目的是培養(yǎng)他在圖像方面的興趣,他做多了,經(jīng)驗自然就多了,反映出來就是能力的提升,成為這方面的專家,別人遇到這方面的問題都來請教他,他就得到了一種榮譽感和滿足感。在文字研究所我們還培養(yǎng)了PS專家、BIG5專家,這樣他們就會覺得自己有責任,有義務(wù)要把所擅長的領(lǐng)域做好。”

 

不但開發(fā)人員應(yīng)該保持一個明確的定位,在李征看來,一個部門也應(yīng)該有自己明確的定位。“文字所曾經(jīng)做過一個MIS系統(tǒng),事后我想過,從我們這個部門的定位來講,文字所不該做這個項目,那是個大型數(shù)據(jù)庫項目,數(shù)據(jù)庫項目并非文字所的專長,為了這個項目,我們生生培養(yǎng)出了一批數(shù)據(jù)庫的人才,做MIS系統(tǒng)的人才。這個項目是日本的項目,做得非常成功,但為此把我們最優(yōu)秀的人都派進去了,如果把這些人都用到飛騰上,成效未必要比做這個系統(tǒng)賺得少,而且,這個項目如果讓別的部門做可能做得更好,文字所的主要任務(wù)是做飛騰。”

 

部門經(jīng)理謹防越過項目經(jīng)理直接對程序員指手劃腳

 

部門經(jīng)理和項目經(jīng)理的沖突,從部門經(jīng)理方面來講,表現(xiàn)為部門經(jīng)理把持不住自己,總禁不住越級去管理本應(yīng)該由項目經(jīng)理負責的項目,直接對程序員指手劃腳,吩咐他們做這做那,這種工作的模式容易產(chǎn)生一系列的問題,項目經(jīng)理會因此產(chǎn)生“那么,還要項目經(jīng)理干嘛?”的強烈抵觸情緒。

 

合理的做法是部門經(jīng)理發(fā)現(xiàn)問題先和項目經(jīng)理講,讓項目經(jīng)理去解決,如果認為項目經(jīng)理解決不了或者不合格的話,應(yīng)該把他換掉,而不是越俎代庖地越級替他做管理。

 

從項目經(jīng)理方面講,沖突表現(xiàn)在資源和人力調(diào)配上。一個部門的人員、設(shè)備和資源都是有限的,而項目經(jīng)理對好設(shè)備、好人員的要求卻永遠沒完,滿足不了要求的項目經(jīng)理自然就會抱怨部門經(jīng)理。銷售部門不了解開發(fā)部門為什么會那么遲鈍,開發(fā)人員覺得市場人員不學(xué)無術(shù)

 

對于一家軟件公司來說,最多的沖突發(fā)生在開發(fā)人員和市場人員之間。市場人員身處第一線,受用戶抱怨最多,市場人員把問題反饋回來,最希望的是問題能及時得到解決。市場人員通常不太懂技術(shù),所以,他們經(jīng)常提一些不是那么合適的問題,這樣的問題在開發(fā)人員看來是如此的愚蠢,開發(fā)人員心里經(jīng)常很不耐煩地憤憤然然:“這種問題也來問我?”一來二去,開發(fā)部門和銷售部門就產(chǎn)生了隔閡,銷售部門不了解開發(fā)部門為什么這么遲鈍,開發(fā)人員覺得市場人員不學(xué)無術(shù)。

 

開發(fā)人員容易是完美主義者,他們最關(guān)心技術(shù),追求使用新技術(shù),市場人員每天都要和用戶打交道,最擔心的是軟件在運行中死機,穩(wěn)定易用是市場人員最關(guān)心的兩點。盡管市場人員不關(guān)心技術(shù)人員到底使用了什么新技術(shù),但他總是希望軟件的功能越強大越好,越早推出越好,而技術(shù)部門則會擔心,功能多了可能要增加風險,強行加班加點可能會出現(xiàn)問題。

 

郭宗明承認,有時候軟件升級和軟件中所加入的新功能純粹是為了市場競爭的需要,“競爭對手產(chǎn)品中有的功能,我們沒有,用戶就會問為什么沒有?盡管用戶實際上用不著那個功能。但用戶會把這個問題當作一個談價格的籌碼向銷售人員提出,這樣市場人員就會逼著開發(fā)人員開發(fā)這些功能。”

 

程序員需要教育

 

 

提及軟件“工廠”,提及規(guī)范管理,很容易讓人將規(guī)范與天才對立起來,從而產(chǎn)生規(guī)范會不會扼殺了天才,會不會扼制創(chuàng)造的擔心?

 

回答這個問題,先要弄清楚規(guī)范是什么?對于軟件工程來說,規(guī)范是用來保證大規(guī)模多人協(xié)作開發(fā)的一些基本的前提,它的目的不是為了束縛程序員的天才,它的內(nèi)容也沒有傷害到最體現(xiàn)程序天才創(chuàng)造的算法上,在規(guī)范面前,程序員喪失的只是一些隨意性。

 

有程序員覺得規(guī)范是一種約束,那是因為大家以前在沒有任何規(guī)范的環(huán)境下隨意慣了,突然來了一個規(guī)范一時難以適應(yīng)而已。其實隨意和天才,和創(chuàng)造完全是兩碼事。

 

如何克服隨意性,將軟件協(xié)作所必需的規(guī)范變成程序員的習(xí)慣,教育是必由之路。教育對程序員來說一開始可能是痛苦的,但是當程序員慢慢將規(guī)范變成習(xí)慣以后,也就不會覺得規(guī)范是一種約束了。

 

李征認為,要讓程序員從心底接受規(guī)范,首先要對程序員灌輸產(chǎn)品意識,要讓每一個程序員都認識到:現(xiàn)在的產(chǎn)品靠個人的能力根本不能夠完成,而是要靠管理、團結(jié)和正確的方法才能完成。“只有當每個程序員都從心底認為個人英雄的時代已經(jīng)成為過去,靠一倆個天才打天下的時代已經(jīng)一去不復(fù)返了,他們才會自覺自愿地進行合作,而合作的前提就是必需要有規(guī)范,這樣原來在程序員心中是條條框框的東西就轉(zhuǎn)變?yōu)樗杂X自愿的行為。”

 

實際管理中,郭宗明發(fā)現(xiàn),程序員并非一味地排斥規(guī)范和管理,他們不接受的是不規(guī)范的管理,不接受的是由于很多漏洞造成很多摩擦的管理。

 

方正產(chǎn)品過去的毛病是不貼近用戶,對于用戶提出的改進意見,開發(fā)人員麻木不仁的回答是“設(shè)計就是這樣的,沒法改。”程序員之所以會這樣說,是因為他們不理解自己一個小小的改進就能夠給用戶帶來極大的方便,極大地提高效率。不理解如果不改,用戶用得不高興,慢慢就會對方正的軟件失去信心。

 

為了讓開發(fā)人員學(xué)會尊重用戶的要求,尊重測試的意見。方正研究院安排程序員到用戶那里去,而且是經(jīng)常去,和排版員在一起呆著,讓程序員親身去看排版員是怎樣用飛騰,了解排版員用了哪些操作,操作順序是怎么樣的。讓程序員知道,用戶那樣用飛騰,有哪些不方便的地方,需要做哪些改進。假如,飛騰有1000個功能,程序員觀察用戶實際使用情況,發(fā)現(xiàn)用戶只用到了200個功能,程序員就可以在這200個功能上精益求精。程序員如果這樣寫軟件,用戶必然會越用越滿意,越用越高興。

 

怎樣才算一個好程序員

 

 

王選是科學(xué)家,但是當王選做完科研以后,他還親手寫了大量的微程序,方正第一代到第四代RIP里面 90%的微程序都是王選寫的,從這個意義上說,王選也是一名程序員。

 

寫程序,王選堅信,測試只能證明錯誤的存在,不能證明錯誤的不存在,所以,“避免錯誤的最好的方式,就是從一開始就避免錯誤的引入。程序已經(jīng)引進了大量錯誤,靠修改是改不出好程序的。”王選的這個認識源于1960年他在電子部738廠協(xié)作的時候,看到美國產(chǎn)的一臺小型機全部邏輯設(shè)計只有一頁紙,一頁紙看懂了,這臺機器就全部了解了。“從此,我養(yǎng)成了遇到任何事情,都先把它的邏輯關(guān)系先列出來,反復(fù)思考,而不急著動手去做的習(xí)慣。”

 

王選這種想清楚以后再動手的習(xí)慣和他當時設(shè)計的算法要以芯片的形式實現(xiàn)有很大關(guān)系,現(xiàn)在一個軟件出現(xiàn)BUG,可以打個補丁修正,而王選那時候任何一個小的錯誤都會導(dǎo)致整個專用芯片報廢,因此,王選每設(shè)計一個芯片,手稿都很厚。

 

王選說,他當時最累的是一方面要在第一線上拼命,“為一個程序調(diào)不出來,為一個隱蔽故障不能發(fā)現(xiàn),要死要活。”另一方面又要做大量的組織管理的工作,“那種勞累是難以形容的,比我現(xiàn)在到外頭做做報告,人大開會要累得多。”在王選眼里,好的程序員要拼命才行。

 

肖建國給好程序員定了四個標準:

 

一、要有必要的基礎(chǔ)知識。“這里所說的必要的基礎(chǔ)知識與開發(fā)數(shù)據(jù)庫軟件所需要的知識和開發(fā)字處理軟件所需要的知識并不相同。”

 

二、要有一定的設(shè)計能力。“只告之要做什么,不用告之怎么做,就能做出來”的人被肖建國稱為有設(shè)計能力的人,“怎么做,都要講得清清楚楚,才能做出來”的人被肖建國看作是沒有設(shè)計能力的人,肖建國反對只會寫代碼不會做設(shè)計的程序員。“日本少有漂亮的軟件,是因為他們剝奪了程序員的創(chuàng)造能力,他們做軟件的方式是設(shè)計完了,就要完全按照設(shè)計編碼,日本甚至找一些高中生訓(xùn)練半年,就讓他們做程序員,這樣的程序員只會完全按照設(shè)計編碼,不會做任何設(shè)計,這種程序員所做的工作其實就是把非常詳盡的用自然語言寫的設(shè)計文檔翻譯成計算機能夠識別的語言而已。”在方正研究院,設(shè)計不是神圣不可侵犯的,編碼的程序員不但在軟件設(shè)計的時候,有權(quán)提自己的設(shè)計思想,在具體編寫的時候,也可以提出自己的修改意見。

 

三、編碼習(xí)慣要比較好。肖建國和王選一樣,主張程序要想清楚以后再動手寫。“這種寫程序的方法可以把程序一把做成了,很多程序員寫程序是想個大概就開始做,覺得車到山前必有路,做一部分,做不下去了,停下來想一想,這樣想想做做,做到一大半后,往往會突然醒悟過來,呀!如果開始就那樣做就更好了,但這個時候已經(jīng)做了80%,再從頭做,時間上不允許了,再說也不愿意費那個工夫,最后只能湊合湊合吧,這個時候程序已經(jīng)寫壞了。一般來說,當程序?qū)懲甑臅r候,程序員會把所有的問題都想明白了,要不然他寫不完,但到最后的時候再想明白,也沒什么用了。”

 

四、要勤奮。“每天工作八小時的程序員不是一個好的程序員。寫程序要有入迷的勁頭,關(guān)鍵時候要廢寢忘食。

 

郭宗明心目中的好程序員要具備五種精神:一是團結(jié)協(xié)作的精神;二是學(xué)習(xí)的精神。“程序員半年不學(xué)習(xí)就會落伍。”;三是創(chuàng)新的精神;四是犧牲精神。“所有的程序員都愿意做新產(chǎn)品,但老產(chǎn)品已經(jīng)賣了出去,就必需要有人為它做維護。”五是關(guān)鍵時刻要有幾天不睡覺的“沖鋒陷陣”精神。

 

抓“蟲子”

 

 

大型軟件要完全消滅BUG是不可能的,現(xiàn)在幾乎所有軟件公司發(fā)貨的產(chǎn)品都帶有BUG。因此,如何權(quán)衡按時推出產(chǎn)品和減少BUG之間的矛盾是問題焦點所在。軟件公司有的時候明知道產(chǎn)品中還有BUG,但也不能花時間改了,因為再改,可能又會產(chǎn)生新的BUG,程序是相互聯(lián)系的,動了手,腳可能會受到影響。更為重要的是時間不等人,競爭對手更不等人。

 

方正研究院處理這個問題的原則是:保證用戶日常要用的功能不能帶有BUG,保證不能有高級別的BUG,比如死機等用戶絕對不能容忍的BUG。為了確保這兩點,實在不行的時候,寧肯砍功能。

 

治本的辦法當然是盡量減少程序中的BUG,方正研究院的方法是抓住兩頭:一頭是加強應(yīng)用研究,留出時間深入用戶充分了解用戶的需求,而不是急著先把軟件做出來。在這方面有過教訓(xùn)的肖建國深有感觸地說:“不成熟的軟件到了用戶手中后,用戶會提出一大堆問題,軟件改了再改,不停地往上打補丁,補丁來補丁去,補丁多了,軟件就面目皆非了,原來設(shè)計的結(jié)構(gòu)就不適應(yīng)了。另外,在用戶的抱怨聲中,現(xiàn)改軟件勢必很倉促,那個時候軟件的質(zhì)量是很難保證的,還談什么消滅BUG。”

 

另一頭是加強測試。軟件人員一般都是比較自負的,總覺得自己寫的軟件沒毛病,寫完軟件后自己測一下,沒毛病,更會認定自己寫的程序沒有毛病,但問題往往會出在用戶和程序員使用軟件的方法、方式不一樣上。飛騰是程序員做的,程序員就覺得飛騰應(yīng)該這樣用,但用戶跟程序員想法會不一樣,用戶認為飛騰就應(yīng)該那樣用,因為沒想到用戶還會那樣用軟件,測試的時候沒測,潛藏的問題就發(fā)現(xiàn)不了。

 

根據(jù)郭宗明的經(jīng)驗,軟件測試很多時候要做極限測試才能發(fā)現(xiàn)技術(shù)上的隱含錯誤。比如,因為申請內(nèi)存沒有釋放而造成BUG,由于現(xiàn)在計算機內(nèi)存非常大,測一次根本發(fā)現(xiàn)不了問題,只有反復(fù)使用這個功能,無數(shù)次申請內(nèi)存,機器才會出現(xiàn)內(nèi)存不夠,從而把問題暴露出來。

 

開發(fā)和測試是一對矛盾,開發(fā)想的是消滅BUG,沒有BUG是開發(fā)者的光榮;測試想的是發(fā)現(xiàn)BUG,發(fā)現(xiàn)軟件中的BUG是測試人員的驕傲。所以,方正研究院的測試部門和開發(fā)部門是相互獨立的兩個部門,如果開發(fā)部門和測試部門是同一個領(lǐng)導(dǎo),這個領(lǐng)導(dǎo)就很難協(xié)調(diào)這兩個針鋒相對的矛盾。李征稱,1998年研究院最為成功之處,就是將原來只有十幾個人的測試隊伍發(fā)展成了70個人的測試中心,培養(yǎng)了一批對產(chǎn)品十分熟悉的測試專家。另外,在方正研究院測試不僅是測試部門的事,開發(fā)人員自己也要做單元測試,郭宗明說:“自己寫的程序自己最清楚。”為了加強開發(fā)人員的責任心,測試部門的測試不僅要說明錯誤在哪里,還要說明錯誤是哪個程序員引起的,而這些BUG最終要和開發(fā)人員的工資、榮譽掛鉤。

 

 

最近方正研究院的墻上貼滿了年底之前通過ISO9000的標語,方正會在軟件工程化管理的路上堅決地走下去,他們已經(jīng)得到了兩年來艱苦管理磨合的回報——1997年夏天推出的NT RIP和1998年推出的飛騰,一出門就站得住腳,軟件質(zhì)量明顯上升,1998年新推出的“點睛”系統(tǒng)在中央電視臺全面取代了國外最著名公司出品的同檔次的動畫軟件,為方正研究院進軍數(shù)字媒體市場吹響了號角。


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
程序員為什么要一直改bug ?不能一次性寫好嗎?(三思逍遙的回答,105贊)
《軟件測試經(jīng)驗與教訓(xùn)》讀書筆記
精心整理的68個關(guān)于程序猿的一些幽默
如何對待測試中不能重現(xiàn)的BUG
五年程序員人生的點點滴滴
為毛你深陷故障驅(qū)動式開發(fā)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服