程序員的四個(gè)境界 |
日期:2004年7月17日 作者: 人氣: 5406 查看:[大字體 中字體 小字體] |
國(guó)學(xué)大師王國(guó)維先生認(rèn)為古今成大事業(yè)、大學(xué)問(wèn)者,必經(jīng)過(guò)三種境界,第一種境界:“ 昨夜西風(fēng)凋碧樹(shù)。獨(dú)上高樓,望盡天涯路”;第二種境界:“衣帶漸寬終不悔,為伊消得 人憔悴”,第三種境界:“眾里尋他千百度,驀然回首,那人卻在燈火闌珊處”。一代宗師 真是體察入微,寥寥數(shù)語(yǔ),道盡了求道者的心路歷程,將一個(gè)人由淺嘗、迷茫到徹悟的過(guò)程 盡數(shù)概括,可謂入木三分。 IT行業(yè)可謂現(xiàn)在的熱門(mén)行業(yè),程序員也是很多人羨慕的工作。薪水高,不用東跑西顛, 敲敲鍵盤(pán),看看屏幕,一切工作全都搞定,輕松而方便。果真如此嗎?不盡然,實(shí)際上,程 序員的職業(yè)生涯也是一個(gè)求道的過(guò)程,需要不斷的提高和學(xué)習(xí),IT行業(yè)知識(shí)更新之快,常讓 程序員們有隨時(shí)掉隊(duì)的危險(xiǎn),無(wú)一日不戰(zhàn)戰(zhàn)兢兢,不敢稍有懈怠。 程序員的職業(yè)生涯也可分為四個(gè)階段,初級(jí)程序員(菜鳥(niǎo))、高級(jí)程序員(熟練工)、系統(tǒng) 程序員(高手)、軟件大師(大師),其作品也經(jīng)歷四種境界: · 可以運(yùn)行的程序 · 健壯、高效的程序 · 結(jié)構(gòu)優(yōu)美的程序 · 思想深邃的程序 程序員的必經(jīng)第一個(gè)階段都是編寫(xiě)可以運(yùn)行的程序。很多人的編程生涯是從“Hello World”開(kāi)始,當(dāng)?shù)谝淮伟凑战炭茣?shū)上的步驟,將源文件編輯完后,編譯、連接、運(yùn)行,在 屏幕上顯示出“Hello World”時(shí),心中的激動(dòng)一點(diǎn)也不亞于阿里巴巴打開(kāi)了寶庫(kù)的大門(mén)。 初級(jí)程序員的目標(biāo)一般是讓程序能運(yùn)行起來(lái),他們迷惑于庫(kù)函數(shù)的眾多,不知道該用哪一 個(gè),他們還要學(xué)習(xí)基本的語(yǔ)法,以使程序編譯通過(guò)。初級(jí)程序員一般不會(huì)考慮設(shè)計(jì)模式、軟 件結(jié)構(gòu)等問(wèn)題。記得本人編寫(xiě)的第一個(gè)較大的程序是本人的本科畢業(yè)論文題目--一個(gè)計(jì)算 機(jī)輔助實(shí)驗(yàn)系統(tǒng),開(kāi)發(fā)工具為T(mén)urbo C,在DOS下開(kāi)發(fā)(那個(gè)時(shí)候Windows還不太流行,怎么 樣,年代夠久遠(yuǎn)吧),整個(gè)軟件大約7000行代碼,在當(dāng)時(shí)已經(jīng)能干不少事,在DOS下也能顯示 不少花里胡哨的圖形界面,支持中文,支持鼠標(biāo)操作(那時(shí)候在DOS下需要自己處理鼠標(biāo)事件 中斷),當(dāng)時(shí)還頗受好評(píng)??墒墙裉煸僦匦聹亓?xí)過(guò)去的作品,真有點(diǎn)摻不忍睹,整個(gè)軟件毫 無(wú)結(jié)構(gòu)可言,一共分成兩個(gè)源文件還是由于編譯器不支持一個(gè)太大的源文件而被迫分開(kāi),整 個(gè)系統(tǒng)就是源代碼的簡(jiǎn)單堆砌。相信每個(gè)程序員都需要經(jīng)歷這個(gè)階段,它是程序員職業(yè)生涯 的開(kāi)始,沒(méi)有捷徑可以跨越,只有不斷的實(shí)踐、學(xué)習(xí)和總結(jié)。 第二階段的程序員已積累了不少的編程經(jīng)驗(yàn),語(yǔ)法和庫(kù)函數(shù)不再是障礙,他們已不再滿 足于程序正確運(yùn)行、功能實(shí)現(xiàn)無(wú)誤。他們需要了解程序背后發(fā)生的事情,需要了解操作系統(tǒng) 的原理和調(diào)度機(jī)制,內(nèi)存管理,文件系統(tǒng)組織等;了解開(kāi)發(fā)工具的細(xì)節(jié),如C的函數(shù)調(diào)用機(jī) 制,參數(shù)的傳送機(jī)制、堆棧的建立過(guò)程等;了解C++的封裝、繼承和多態(tài)性背后的機(jī)制,虛 函數(shù)實(shí)現(xiàn)機(jī)理等。他們不僅知道程序應(yīng)該如何運(yùn)行,還知道它為什么這樣運(yùn)行,能編寫(xiě)高 效、魯棒的程序。 第三階段的程序員能構(gòu)建結(jié)構(gòu)優(yōu)美的軟件系統(tǒng),軟件系統(tǒng)結(jié)構(gòu)的合理性、可擴(kuò)展性、可 維護(hù)性、可測(cè)試性是系統(tǒng)程序員考慮的重點(diǎn),結(jié)構(gòu)優(yōu)美的軟件系統(tǒng)同一棟完美的建筑群一 樣,每個(gè)部分各司其職,搭配合理。本人一直認(rèn)為,一個(gè)好的軟件系統(tǒng)應(yīng)當(dāng)具有美學(xué)特征, 如簡(jiǎn)潔、和諧、層次感等,一個(gè)好的軟件系統(tǒng)應(yīng)當(dāng)是簡(jiǎn)潔的,易于理解的;應(yīng)當(dāng)是和諧的, 每個(gè)部分高內(nèi)聚、低耦合,既分工又合作;應(yīng)當(dāng)是層次分明,易于維護(hù)和移植。所以,本人 建議那些進(jìn)行軟件系統(tǒng)設(shè)計(jì)的程序員,當(dāng)你設(shè)計(jì)完一個(gè)系統(tǒng)后,需要問(wèn)問(wèn)自己:"它美 嗎?",如果答案是否定的,那么我建議你需要重新考慮系統(tǒng)的設(shè)計(jì),如果答案是肯定的, 那么,恭喜你,你已經(jīng)達(dá)到一個(gè)相當(dāng)高的水平。 最后一級(jí)也許是每個(gè)程序員夢(mèng)想達(dá)到的頂峰,程序設(shè)計(jì)不再是簡(jiǎn)單的工具,而是大師們 改變世界的魔杖,從C到C++,再到COM和COBRA,再到XML和WEB SERVICES,每次改變,不是 軟件語(yǔ)法和開(kāi)發(fā)工具的升級(jí),而是用軟件構(gòu)建現(xiàn)實(shí)世界模型的改變,是一種軟件思想的革 命,軟件具有了靈魂和智能。如果沒(méi)有理解這一點(diǎn),認(rèn)為C++只是更好的C,COM只是更好的 C++話,你就沒(méi)有了解它們的精髓和思想性。 “程序員之路漫漫兮,吾將上下而求索”,希望與所有的程序員共勉。 |
聯(lián)系客服