從畢業到現在,嚴格的算起來,已經做了快5年的程式員了;程式早已不再單純的是我的工作,而已經滲透到了我的生活,甚至言行中了;我或許稱不上優秀的程式員,但是每當用QQ發訊息,習慣性的以分號(“;”)結尾的時候,我便會有一種強烈的身份歸屬感;我是個程式員。
編寫程式是程式員的本分,編寫一份漂亮的程式是程式員的榮耀;然而,一直有個問題困擾著我,即使我今天得到答案,我還是會一直困擾下去;什麼樣的程式算作漂亮的。上大學的第一堂電腦導論課,老師講“程式=資料結構+演算法”;那麼漂亮的程式便應該是藝術的資料結構加上精妙的演算法;也就因為如此,我整個大學的學業都癡迷於唯美的資料結構和巧妙的演算法學習之中;甚至還曾嘗試著去構建一種新的結構,設計一種新的演算法,結果發現自我的渺小與無知,所以我寄希望於未來的時間,實踐的磨礪,伴隨著這種期盼,我畢業了,我工作了。
似乎每個剛畢業的人都是輕狂的,然而很快我便懊惱於自我知識的匱乏,和對前人成果的嫉妒;因為我的工作不是電腦科學,而是程式員。即便如此,我仍然抵觸他人的智慧;爭取一切對自我編寫程式的控制權;當有程式調試不通的時候,我甚至還會懷疑編譯環境在轉換指令集時除了問題,而並非是我程式的問題;呵呵,還好,我始終信任寄存器從儲存空間中提取資料的品質;回想起來,每一次需要掌握新技術,我都會先抵觸一段,然後幹一些造輪子的事情;jsp(bean、servlet)我想過去改造tomcat(當然沒有實施),jdbc我選擇自己封裝資料庫連接池,當應用hibernate的時候我極力反對(因為我覺得失去了對資料的控制權),ejb3.0(這麼臃腫的技術運行在臃腫的jboss上,實踐證明它不適合我們的應用),jstl(可能到現在還覺得它存在著很多bug),jsf(一套不怎麼實用的標準),Spring(剛接觸就讓我臣服的架構),Struts2(摒棄它的標籤,只用其Action的機制,但總覺得對webwork有所愧疚),Freemarker(當我對錶現層失望的時候,它出現在了我的眼前),jQuery(讓我不再覺得javascript的文法混亂);還有數不清的環境、工具、組件、外掛程式、配置;應用得越多,讓我覺得自己越無知;逐漸的我開始重新思考我作為一名程式員的本質和使命;
我是做應用開發的,或許成本應該是我選擇技術的首要條件,時間成本、開發成本、維護成本、學習成本、研究成本、運行成本、普及成本、交流成本等等;對於我來講,軟體開發不是電腦科學,而是軟體工程學,甚至可以說是軟體技術及人員組織構建學(呵呵,這當然或許還成不上“學”);我得承認,我屈服了,一段漂亮的代碼,已經很難再打動我的內心;即使再巧妙的設計似乎也成了浮雲;取而代之的是一套恰當的項目構建解決方案;真是一種諷刺,我逝去了作為程式員的驕傲,卻得以實現我作為程式員的價值;再巧妙的演算法也不及兩行組件調用來得實際,因為我認為學習它,配置它的成本要比自己寫出來的演算法更節約;因為我相信他還會持續的完善,而我只會看著程式自我感覺良好。
或許做一個職業性更負責的程式員,才是更具有職業道德的程式員吧。
註:感謝那些我曾經應用(即使已經摒棄)過的開源技術,淮安摜蛋 是你們成就了我這個程式員,雖然卑微,卻很堅定。