“無劍勝有劍”軟件大師之路的一點探索(一)


@Dreamcode“無劍勝有劍”軟件大師之路的一點探索(一)




本人並非什麼武林高手,更不是編程大師, 但是我很仰慕他們,希望有朝一日也可以達到他們的境界,我很幸運能夠從事自己喜歡的工作,但是一直以來總覺得自己還是太嫩,每每看到希望,走過去才發現自己依然膚淺。以下所寫是我對通往大師之路的一些探索,不當之處請您指正,希望與大家一起探討。

簡單是一種力量 

“工慾善其事必先利其器”而這裏所說的“簡單” ,並非是使用什麼開發利器來提高開發效率,恰好相反我建議大家儘可能使用簡單的開發環境,擺脫對可視化環境的依賴。

    作爲一個引子在後文中我將分別介紹Windows 、Linux 、Cygwin (Windows 下Linux 模擬器)下J2EE Web 項目的開發、編譯和部署的簡單開發環境,希望能對大家有所幫助。

   “重劍無鋒,大巧不工”出自 《神鵰俠侶》對武林神話獨孤求敗的一段描述 。《笑傲江湖》中令狐沖所使的“獨孤九劍”便由其所創。 獨孤求敗一生用過五種不同的劍,分別爲無名利劍、紫薇軟劍、玄鐵重劍、木劍乃至無劍。這五種不同的劍, 事實上代表了獨孤求敗劍學的五個不同境界, 依稀有王國維所謂“ 昨夜西風凋碧樹” ,“ 衣帶漸寬終不悔” ,“ 驀然回首” 三種學問境界之意,但更爲細緻精確,更能傳神,寫出了高手的心路歷程。

重劍無鋒,大巧不工

    “大道至簡,道生一,一生二,三生無窮”, 據說金庸大俠筆下的獨孤求敗就是通過觀察草地上兩條大蛇的爭鬥,悟出了武學的道理。同樣我們也能通過生活中樸實的道理領悟出不斷提高軟件開發水平的正確方法。

“ 獨孤求敗年輕時曾看到兩條大蛇相鬥,它們相互纏繞,扭來滾去,極盡柔滑曲張之能事,旁邊的樹木草花無亦不被摧,他先是看的呆了,然後看這兩條蛇鬥了好久好久,再目睹周圍之萬事萬物,突然感到神明空靈,似乎觸到了什麼,這時在他而言,那兩條蛇的動作就好像武學中的招式,旁邊的一草一木似乎都可以當作武器,順手拈來即可傷敵,同時那蛇的彎曲弓張,纏綿不絕,騰挪起伏彷彿都很符合自然變化的奧妙,招式總是有限的,而有些東西似乎是無限的,縱然極盡變化之能事,到頭來亦不免爲敵所傷…… 據說獨孤求敗經過那驚心動目的兩蛇之戰,自此悟通武學境界,不以巧取勝終歸自然。” 獨孤求敗最終達到“無劍勝有劍”的境界,生平求一敵手而不可得,無可奈何,惟隱居深谷,以雕爲友。

    多年之後 《神鵰俠侶》 中的楊過誤打誤撞,居然找到了獨孤求敗的劍冢,埋藏了獨孤求敗在人生的不同階段使用的“寶劍”, 獨孤求敗一生用過五種不同的劍,分別爲無名利劍、紫薇軟劍、玄鐵重劍、木劍乃至無劍。這五種不同的劍, 事實上代表了獨孤求敗劍學的五個不同境界, 依稀有王國維所謂“ 昨夜西風凋碧樹” ,“ 衣帶漸寬終不悔” ,“ 驀然回首” 三種學問境界之意,但更爲細緻精確,更能傳神,寫出了高手的心路歷程。

    第一柄劍“無名利劍”,長四尺,鋒利無比,劍下石片上寫着:剛猛凌烈,無堅不摧,弱冠前與河朔羣雄爭鋒。 “ 弱冠前” 即二十歲以前,獨孤求敗仰仗這把“利劍”,所向無敵。如同我們基本掌握了一種開發語言以後,仰仗某個開發工具,如VC++ 、VB ,可以輕易地開發出一個軟件,這時候我們會感到似乎編程也不過這麼回事,好像“我們什麼都可以做只是時間問題”。

    第二片石片前沒有劍,石片上面寫着:紫薇軟劍,三十歲前用,誤傷義士不詳,乃棄之深谷。軟劍比利劍更加鋒利,也更加靈活多變, 然而凡事有利亦有弊,劍過於快了往往就難以收發自如, 以至於常常失去控制,而誤傷義士,獨孤求敗心生內疚,將軟劍棄於深谷。如同我們使用了更加“高級”的開發工具如 .NET 等,這時我們的開發效率進一步提高了,功能的開發不過是控件的拖曳,以及針對控件的編程(大多數時侯幾句話便可搞定),如同練劍的人所有的功夫也都圍繞着劍來展開,實際上我們幾乎所有的思維也同時被綁定到這些工具上,而忽略了技術背後的本質,和所蘊含的思想,同時由於工具本身的複雜,如同獨孤求敗的軟劍過於靈活而失去控制,我們往往會遇到工具使用不當而帶來的錯誤,如忘記添加某個Lib 等等,表面上看我們是疏忽了,其實更深層的是我們對開發理解的膚淺,同時每每當我們遇到較底層或較抽象的問題又會感到素手無策,如效率,安全性,穩定性,擴展性等等,於是我們不得不依賴於另一個更偉大的工具“Internet ”,賭博似的希望Internet 這次可以幫助我們度過難關。漸漸的我們發現自己已經停步不前,“感覺自己已經變成了做事可以不用多想的熟練工”,實際我們已經逐漸淪爲會使用工具的工具。聰明的人會學習獨孤前輩將“軟劍棄於深谷”不再過多的依賴工具。其實“棄於深谷的不單是誤傷義士的軟劍,還有少年人不顧一切、不可一世的銳氣”,然而更多的人卻發現自己已深陷工具的陷阱,無法自拔。

放棄“軟劍”這一劍學“歧途”之後,獨孤求敗的 第三把劍竟是凝重的鈍劍。石片上寫的是:重劍無鋒,大巧不工,四十歲之前持之橫行天下。這段充滿了自信與豪氣的題字,說明正當壯年之時創立了“重劍級”劍學的獨孤求敗在當時實已無敵於天下了。

《神鵰俠侶》中對楊過初練玄鐵重劍的情形有如下一段描寫:

“如此練劍數日,楊過提著重劍時手上已不如先前沉重,擊刺揮掠,漸感得心應手。同時越來越覺以前所學劍術變化太繁,花巧太多,想到獨孤求敗在青石上所留‘重劍無鋒,大巧不工’八字,其中境界,遠勝世上諸般最巧妙的劍招。他一面和神鵰搏擊,一面凝思劍招的去勢迴路, 但覺越是平平無奇的劍招,對方越難抗禦。比如挺劍直刺,只要勁力強猛,威力遠比玉女劍法等變幻奇妙的劍招更大。”

所謂“越是平平無奇的劍招,對方越難抗禦”事實上正是“無招”境界的自然體現。

玄鐵劍重近七十斤如何才能戰勝鋒利輕盈的銳劍和軟劍呢? 方法只有一個:提高自身的內力,當我們放棄對高級工具的依賴而改使用簡單的工具,自然會去探究事物的本質,而這些本質正是那些高級工具背後所做的事。這樣的例子在生活中比比皆是,當我們沒有汽車,我們不得不騎車或是走路,無形中腿力得到增強,當我們沒有計算器,我們不得不心算或是研究更好的計算方法,腦力因此得到增強。提高軟件水平,必須瞭解軟件的本質,探究本質必須親力親爲,放棄對工具的依賴。

而能對本質掌握多深,就在於能對工具放棄的有多徹底,設想一下假如你沒有現成的虛擬機可用,有哪些事需要做(即虛擬機的功能),如何做,如果你能做出來或者至少研究明白,你一定對Java 有了更加透徹的理解。

獨孤求敗就是按照這樣的辦法,一步步的放棄對工具的依賴 “自此精修,漸進於無劍勝有劍之境。”最終達到了“不滯於物,草木竹石均可爲劍”的境界。

不依賴於工具並不是說讓我們倒退到刀耕火種的時代,當我們可以不依賴於工具,深刻的瞭解了事物的本質,我們就能更好的駕馭工具,爲我所用。



@Dreamcode“無劍勝有劍”軟件大師之路的一點探索(一)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章