"我自己知道,近幾年也一直在用,但就是說不出來,直到最近幾天才能夠表達(dá)"--叫作Think in Code,也就是用代碼思考,同時(shí)也把代碼當(dāng)成自己思想表達(dá)的方式。正如哲學(xué)家用文字設(shè)計(jì)、詮釋思想,程序員‘說話‘用的是代碼,這就是一個(gè)程序員的境界,也只有代碼是無歧義的"。
--究竟要怎樣的努力才能做到像你一樣?
--就是時(shí)間,我覺得任何人寫十幾年的程序,估計(jì)都能和我差不多。做程序員,很多人會(huì)覺得是吃青春飯的,但我要說,如果大家能靜下心來做到三十幾歲,一定會(huì)發(fā)覺這是十分愜意的一件事情。
袁紅崗話不多,和其他同事站在一起,穿著簡直可以用隨便來形容。不經(jīng)介紹,你一定不會(huì)想到面前這個(gè)"老袁"就是中國Java及J2EE核心技術(shù)領(lǐng)域公認(rèn)的技術(shù)權(quán)威,金蝶中間件的首席科學(xué)家。
"那些都只是虛名而已",老袁平靜地說。
36歲的老袁其實(shí)并不老,但十幾年的程序員生涯卻足夠資深。他的"作品"包括:行業(yè)內(nèi)最早基于Windows平臺(tái)的財(cái)務(wù)軟件;國內(nèi)最早的基于三層結(jié)構(gòu)技術(shù)的應(yīng)用軟件系統(tǒng);國內(nèi)首家擁有完全自主知識(shí)產(chǎn)權(quán)并通過國際J2EE認(rèn)證的應(yīng)用服務(wù)器……
"編而優(yōu)則不仕",老袁的想法仍是程序員本色:"回過頭來看,所做產(chǎn)品賣了很多,說明中國有那么多人在用我們寫的程序,這才是最有成就感的。如果我做管理工作,那就默默無聞了,就算做到比較高的管理位置又能怎樣?"
"那究竟要怎樣的努力才能做到像你一樣?""就是時(shí)間,我覺得任何人寫十幾年的程序,估計(jì)都能和我差不多。做程序員,很多人會(huì)覺得是吃青春飯的,但我要說,如果大家能靜下心來做到三十幾歲,一定會(huì)發(fā)覺這是十分愜意的一件事情"。
沒有捷徑,但有方法
做一個(gè)程序員,老袁不愛談技術(shù),而以講究方法著稱。幾年前,老袁曾在網(wǎng)上發(fā)了個(gè)貼子,談《做程序員的基本原則》,結(jié)果短時(shí)間內(nèi)的訪問量居然達(dá)到了數(shù)十萬次之多,成為名副其實(shí)的精華貼。方法對(duì)于程序員的重要性,用那里頭的一句話來說,就是"世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的"。
最近見到老袁,他最得意的卻是自己才總結(jié)出來的"編程思想"---"我自己知道,近幾年也一直在用,但就是說不出來,直到最近幾天才能夠表達(dá)"---叫作Think in Code。
所謂的Think in Code,也就是用代碼思考,同時(shí)也把代碼當(dāng)成自己思想表達(dá)的方式。在老袁看來,正如哲學(xué)家用文字設(shè)計(jì)、詮釋思想,程序員"說話"用的是代碼,這就是一個(gè)程序員的境界。"也只有代碼是無歧義的"。
如今的老袁寫起程序,一來"在設(shè)計(jì)的時(shí)候,不需要任何其他的開發(fā)工具,只需要代碼,對(duì)象設(shè)計(jì)、功能設(shè)計(jì)都可以直接定義,用代碼方式表達(dá)出來",二來"寫到后來不再需要另外的文檔了,寫的東西已經(jīng)表達(dá)了我的思想"。設(shè)計(jì)或是編碼,可以自頂向下,自底向上,或者兩者融合,都可以自由選擇。很有點(diǎn)隨心所欲的境界。
如果選擇了自頂向下的設(shè)計(jì)路徑,老袁就會(huì)把最高層的這些接口設(shè)計(jì)好,下面的細(xì)節(jié)就暫時(shí)放著,留待日后細(xì)化,反之亦然。等程序的代碼結(jié)構(gòu)有了,再將這尚不可交付的代碼結(jié)構(gòu)做一個(gè)測試、重構(gòu),找出里面的缺陷,優(yōu)化里頭的細(xì)節(jié),使代碼更加合理簡潔,變成一個(gè)可交付的版本。每天大家都下班后,老袁啟動(dòng)一個(gè)自動(dòng)編譯和測試的程序,第二天一來,就知道自己前一天的工作里面有沒有什么錯(cuò)誤。
同樣,老袁也對(duì)一些標(biāo)準(zhǔn)化的軟件開發(fā)模型很不感冒,比如CMM認(rèn)證之類。在老袁看來,過于規(guī)劃化的流程把軟件開發(fā)變成了一種很不自然的事情。老袁更喜歡一種循環(huán)開發(fā)的模式,寫程序的時(shí)候,軟件的設(shè)計(jì)、編碼、測試都融合在一起進(jìn)行,而不是像傳統(tǒng)的軟件工程方法那樣分階段,一定要概要設(shè)計(jì)→詳細(xì)設(shè)計(jì)→編碼→測試,完全完成前一階段才能進(jìn)行下一個(gè)階段。"設(shè)計(jì)、編碼、測試,不是階段,而是過程,設(shè)計(jì)的時(shí)候也可以編碼,編碼完了就可以測試,為什么一定要所有編碼完了才能測試或是所有設(shè)計(jì)完成才可以編碼呢?"
找到合適自己的方法
同事說,"老袁在創(chuàng)新上一直是我們追趕的對(duì)象,程序員是很講究創(chuàng)新的,很多程序員一開始是跟著人家走,學(xué)一些工具并滿足于此,但是老袁能自創(chuàng)一派。"
老袁說,"其實(shí)我以前也學(xué)過很多的方法,比如UMT,CMM學(xué)了很久,但是始終用不起來,感覺這些方法還是不適合我,所以每個(gè)人都應(yīng)該找到自己適合的方法。"
那怎么來找自己的方法?"不要輕易相信別人的方法。經(jīng)常說如何好,我就懷疑,是不是真的用了這套東西之后開發(fā)能力就提高了呢?"
說起來輕松,但真正的尋找過程注定充滿了艱辛。找到了,成為"開宗立派"的大師,找不到,則只能在模仿小空間里繞圈子。
老袁在學(xué)校里就開始編程了,"那已經(jīng)是真正的項(xiàng)目"。這也讓老袁早早地在同齡人中間開始拔尖。從那之后到1994年,在老袁看來是自己學(xué)習(xí)、摸索,模仿的階段,看了很多書,讀了很多程序,自己也寫,"但現(xiàn)在看起來確實(shí)是非常粗淺的"。
1994年,優(yōu)秀程序員老袁進(jìn)入金蝶公司,推出了不少大名鼎鼎的"作品",比如金蝶財(cái)務(wù)軟件等。"在外人看來,這是一個(gè)非常輝煌的時(shí)代"。但是老袁卻開始越來越郁悶---不是因?yàn)閯e的原因,"東西在別人看來寫得非常好,但是自己卻總是覺得再也無法提高了"。
曾經(jīng)有一年多的時(shí)間,老袁說自己一點(diǎn)東西也寫不出來,就是感覺跨不過去了。"當(dāng)時(shí)也動(dòng)過這樣的念頭:算了,不寫程序了,不寫程序就搞搞管理,日子也會(huì)很好過。"
那段時(shí)間,老袁率領(lǐng)當(dāng)時(shí)的金蝶中央研究院開始了J2EE架構(gòu)的核心---J2EE應(yīng)用服務(wù)器的研究和開發(fā),成功開發(fā)出了國內(nèi)首家擁有完全自主知識(shí)產(chǎn)權(quán)、通過國際J2EE認(rèn)證的應(yīng)用服務(wù)器,并成為國際JCP組織中國代表。2000年,金蝶中間件公司成立,發(fā)布了金蝶Apusic應(yīng)用服務(wù)器1.0版本,2001年,老袁又把所有的架構(gòu)體系推倒重來了一遍,這就是2001發(fā)布的2.0版。
這個(gè)2.0版的重構(gòu)成了老袁程序員生涯的一個(gè)重要轉(zhuǎn)折,可謂從優(yōu)秀到卓越。"這個(gè)時(shí)候就開始意識(shí)到做軟件是要有思想的,要有思想來指導(dǎo)你。之前之所以遇到很大障礙,就是沒有一套思想、方法論。憑借著對(duì)技術(shù)的掌握自己還是寫了一些軟件,但是技術(shù)掌握得再多,沒有好的方法,你仍然沒法寫出好的程序。"
就象是捅破了一層窗戶紙。從那時(shí)候起,老袁的編程工作就有了游刃有余的感覺。去年老袁在美國遇到一位敏捷編程方法的倡導(dǎo)者,被外界稱為“軟件開發(fā)教父”的Martin .Fowler,幾句一聊,讓老袁立刻有了知己之感。"這才發(fā)現(xiàn)世界上還有這么多程序員有和我一樣的想法"。
這讓老袁有了進(jìn)一步總結(jié)自己的編程理念的想法。"我的編程思想和敏捷編程很像,但又不完全是敏捷編程"。老袁希望自己在40歲之前,把Thinking in code說得更清楚些,更具可操作性,比如:如何用代碼而不是用建模工具來設(shè)計(jì),如何在設(shè)計(jì)的時(shí)候讓代碼來表現(xiàn)流程。如今老袁平時(shí)也帶學(xué)生,但是只教方法,不教技術(shù),"有很多技術(shù),他們比我還懂得多"。
名詞解釋
敏捷編程
一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法。在敏捷開發(fā)中,軟件項(xiàng)目的構(gòu)建被切分成多個(gè)子項(xiàng)目,各個(gè)子項(xiàng)目的成果都經(jīng)過測試,具備集成和可運(yùn)行的特征。簡言之,就是把一個(gè)大項(xiàng)目分為多個(gè)相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
相關(guān)鏈接:“影響中國軟件開發(fā)的20人”-袁紅崗(http://news.chinabyte.com/334/1760834_3.shtml)
“人物:袁紅崗,所屬公司:金蝶中間件公司
入選理由:最早開發(fā)Windows上的企業(yè)應(yīng)用軟件,打造獨(dú)立知識(shí)產(chǎn)權(quán)的EJB服務(wù)器
很多JAVA程序員對(duì)袁紅崗極其佩服,源于他做了很多人不敢想更不敢做的事情,這就是他打造了國產(chǎn)的EJB服務(wù)器,很快,金蝶將在國內(nèi)推出自主產(chǎn)權(quán)EJB服務(wù)器的3.0版本。
同時(shí),袁紅崗還是在Windows平臺(tái)上開發(fā)企業(yè)應(yīng)用軟件的最早的一批程序員,當(dāng)時(shí)寫出的適合小型企業(yè)使用的財(cái)務(wù)購銷存一體化軟件KINGDEE 2.7,令I(lǐng)T行業(yè)對(duì)金蝶刮目相看,使金蝶一舉成名,正是這些人才奠定了中國的管理軟件的基礎(chǔ)。
袁紅崗將自己多年的經(jīng)驗(yàn)以一種樸實(shí)的風(fēng)格寫出來,這些帖子在網(wǎng)上也影響深遠(yuǎn)。”
更多相關(guān)資訊請(qǐng)瀏覽袁紅崗視點(diǎn)專區(qū):http://www.apusic.com/market/javaclub/yuan/
聯(lián)系客服