發表時間: 2007-04-29 23:56:12作者:
國學大師王國維先生認為古今成大事業、大學問者,必經過三種境界,第一種境界:「昨夜西風凋碧樹。獨上高樓,望盡天涯路」;第二種境界:「衣帶漸寬終不悔,為伊消得人憔悴」,第三種境界:「眾裡尋他千百度,驀然回首,那人卻在燈火闌珊處」。一代宗師真是體察入微,寥寥數語,道盡了求道者的心路歷程,將一個人由淺嘗、迷茫到徹悟的過程盡數概括,可謂入木三分。
IT 行業可謂現在的熱門行業,程序員也是很多人羨慕的工作。薪水高,不用東跑西顛,敲敲鍵盤,看看屏幕,一切工作全都搞定,輕鬆而方便。果真如此嗎?不盡然,實際上,程序員的職業生涯也是一個求道的過程,需要不斷的提高和學習,IT行業知識更新之快,常讓程序員們有隨時掉隊的危險,無一日不戰戰兢兢,不敢稍有懈怠。
程序員的職業生涯也可分為四個階段,初級程序員(菜鳥)、高級程序員(熟練工)、系統程序員(高手)、軟體大師(大師),其作品也經歷四種境界:
· 可以運行的程序
· 健壯、高效的程序
· 結構優美的程序
· 思想深邃的程序
程序員的必經第一個階段都是編寫可以運行的程序。很多人的編程生涯是從「Hello World」開始,當第一次按照教科書上的步驟,將源文件編輯完後,編譯、連接、運行,在屏幕上顯示出「Hello World」時,心中的激動一點也不亞於阿里巴巴打開了寶庫的大門。初級程序員的目標一般是讓程序能運行起來,他們迷惑於庫函數的眾多,不知道該用那一個,他們還要學習基本的語法,以使程序編譯通過。初級程序員一般不會考慮設計模式、軟體結構等問題。我的第一個程序是給公司寫一卡通,知道今天,歷經數次升級和改版,卻發現了越來越多的不足,從界面的追求到代碼的完善,再到架構的改進,每一次都是一次煉獄,每一次都得到了提升,是一種境界上的提升。相信每個程序員都需要經歷這個階段,它是程序員職業生涯的開始,沒有捷徑可以跨越,只有不斷的實踐、學習和總結。
第二階段的程序員已積累了不少的編程經驗,語法和庫函數不再是障礙,他們已不再滿足於程序正確運行、功能實現無誤。他們需要瞭解程序背後發生的事情,需要瞭解操作系統的原理和調度機制,內存管理,文件系統組織等;瞭解開發工具的細節,如C的函數調用機制,參數的傳送機制、堆棧的建立過程等;瞭解C ++的封裝、繼承和多態性背後的機制,虛函數實現機理等。他們不僅知道程序應該如何運行,還知道它為什麼這樣運行,能編寫高效、健壯的程序。
第三階段的程序員能構建結構優美的軟體系統,軟體系統結構的合理性、可擴展性、可維護性、可測試性是系統程序員考慮的重點,結構優美的軟體系統同一棟完美的建築群一樣,每個部分各司其職,搭配合理。本人一直認為,一個好的軟體系統應當具有美學特徵,如簡潔、和諧、層次感等,一個好的軟體系統應當是簡潔的,易於理解的;應當是和諧的,每個部分高內聚、低耦合,既分工又合作;應當是層次分明,易於維護和移植。所以,本人建議那些進行軟體系統設計的程序員,當你設計完一個系統後,需要問問自己:"它美嗎?",如果答案是否定的,那麼我建議你需要重新考慮系統的設計,如果答案是肯定的,那麼,恭喜你,你已經達到一個相當高的水平。
最後一級也許是每個程序員夢想達到的頂峰,程序設計不再是簡單的工具,而是大師們改變世界的魔杖,從C到C++,再到 COM和COBRA,再到 XML和WEB SERVICES,每次改變,不是軟體語法和開發工具的升級,而是用軟體構建現實世界模型的改變,是一種軟體思想的革命,軟體具有了靈魂和智能。如果沒有理解這一點,認為C++只是更好的C,COM只是更好的C++話,你就沒有瞭解它們的精髓和思想性。
「程序員之路漫漫兮,吾將上下而求索」,希望與所有的程序員共勉。
【八闋】一個勞動人民群眾喜聞樂見的好地方:http://www.popyard.org
IT 行業可謂現在的熱門行業,程序員也是很多人羨慕的工作。薪水高,不用東跑西顛,敲敲鍵盤,看看屏幕,一切工作全都搞定,輕鬆而方便。果真如此嗎?不盡然,實際上,程序員的職業生涯也是一個求道的過程,需要不斷的提高和學習,IT行業知識更新之快,常讓程序員們有隨時掉隊的危險,無一日不戰戰兢兢,不敢稍有懈怠。
程序員的職業生涯也可分為四個階段,初級程序員(菜鳥)、高級程序員(熟練工)、系統程序員(高手)、軟體大師(大師),其作品也經歷四種境界:
· 可以運行的程序
· 健壯、高效的程序
· 結構優美的程序
· 思想深邃的程序
程序員的必經第一個階段都是編寫可以運行的程序。很多人的編程生涯是從「Hello World」開始,當第一次按照教科書上的步驟,將源文件編輯完後,編譯、連接、運行,在屏幕上顯示出「Hello World」時,心中的激動一點也不亞於阿里巴巴打開了寶庫的大門。初級程序員的目標一般是讓程序能運行起來,他們迷惑於庫函數的眾多,不知道該用那一個,他們還要學習基本的語法,以使程序編譯通過。初級程序員一般不會考慮設計模式、軟體結構等問題。我的第一個程序是給公司寫一卡通,知道今天,歷經數次升級和改版,卻發現了越來越多的不足,從界面的追求到代碼的完善,再到架構的改進,每一次都是一次煉獄,每一次都得到了提升,是一種境界上的提升。相信每個程序員都需要經歷這個階段,它是程序員職業生涯的開始,沒有捷徑可以跨越,只有不斷的實踐、學習和總結。
第二階段的程序員已積累了不少的編程經驗,語法和庫函數不再是障礙,他們已不再滿足於程序正確運行、功能實現無誤。他們需要瞭解程序背後發生的事情,需要瞭解操作系統的原理和調度機制,內存管理,文件系統組織等;瞭解開發工具的細節,如C的函數調用機制,參數的傳送機制、堆棧的建立過程等;瞭解C ++的封裝、繼承和多態性背後的機制,虛函數實現機理等。他們不僅知道程序應該如何運行,還知道它為什麼這樣運行,能編寫高效、健壯的程序。
第三階段的程序員能構建結構優美的軟體系統,軟體系統結構的合理性、可擴展性、可維護性、可測試性是系統程序員考慮的重點,結構優美的軟體系統同一棟完美的建築群一樣,每個部分各司其職,搭配合理。本人一直認為,一個好的軟體系統應當具有美學特徵,如簡潔、和諧、層次感等,一個好的軟體系統應當是簡潔的,易於理解的;應當是和諧的,每個部分高內聚、低耦合,既分工又合作;應當是層次分明,易於維護和移植。所以,本人建議那些進行軟體系統設計的程序員,當你設計完一個系統後,需要問問自己:"它美嗎?",如果答案是否定的,那麼我建議你需要重新考慮系統的設計,如果答案是肯定的,那麼,恭喜你,你已經達到一個相當高的水平。
最後一級也許是每個程序員夢想達到的頂峰,程序設計不再是簡單的工具,而是大師們改變世界的魔杖,從C到C++,再到 COM和COBRA,再到 XML和WEB SERVICES,每次改變,不是軟體語法和開發工具的升級,而是用軟體構建現實世界模型的改變,是一種軟體思想的革命,軟體具有了靈魂和智能。如果沒有理解這一點,認為C++只是更好的C,COM只是更好的C++話,你就沒有瞭解它們的精髓和思想性。
「程序員之路漫漫兮,吾將上下而求索」,希望與所有的程序員共勉。
【八闋】一個勞動人民群眾喜聞樂見的好地方:http://www.popyard.org