程式碼之美:重新擦亮思考的火花

china-pub發表於2008-12-24

重新擦亮思考的火花 
                                                                                               ——孟巖



  《程式碼之美》這本書已經成為經典。關於它本身的讚美之辭已經不少了,不過到底從這本書裡該讀些什麼東西,我倒是有些思考。

  上世紀九十年代初期,當時正在加州大學埃爾文分校攻讀博士學位的Douglas Schmidt在觀察了他所參與的軟體專案開發實踐之後,得出一個結論,即未來的軟體開發將越來越多地體現為整合(integration),而不是傳統意義上的程式設計(programming)。換言之,被稱為 “軟體開發者” 的這個人群,將越來越明顯地分化:一部分人開發核心構件和基礎平臺,而更多地人將主要是配置和整合現有構件以滿足客戶的需求,類似現代汽車、機床和家用電器製造業的產業格局即將到來。面對這一前景,博士生Schmidt一方面寫文章對於其進步意義大加讚揚,另一方面毫不猶豫地投入到核心構件及平臺的開發陣營中去。他很清楚,在這樣一種分工體系中,由於軟體整合產業很難出現壟斷局面,因此大多數利潤總是被截留在上游,人當然要往高處走,整合是好事,但他老兄寧可讓別人來做這個好事。

  事實上,軟體產業中大多數看上去挺靠譜的預測都被歷史的發展無情地拋到垃圾堆裡了,然而Schmidt博士生的這個預測卻驚人的準確,其後十幾年軟體工業的發展完美地印證了他當年的判斷。因此,他本人基於這一預測所選擇的人生道路也一帆風順。如今已經是教授的Douglas Schmidt先後創造了ACE、TAO、CIAO等一系列分散式計算基礎件,先後主導了美國學界和國防領域內若干重大科研與實際開發專案,稱為世人公認的分散式計算架構領導者。

  拋開他個人的輝煌不說,“整合化”趨勢實際上已經深刻地改變了世界軟體工業的面貌,從而也影響了身為晚進者的我們的命運。如今大部分的程式設計師實際上是在整合與配置現有資源以滿足需求,而不是真正意義上的“程式設計”。這當然是一件好事,整合同樣需要深刻的洞察力和創新精神,優秀的整合者與天才的程式設計師一樣不可多得,甚至更加罕見。然而我們也不能不承認,大多數整合性的工作是機械的,簡單的,重複的,欠缺創意的,深入的思考往往不必要。因此,在這個整合為王的時代裡,思考的精神在鈍化。更有甚者,網際網路和搜尋引擎的出現大大加速了這種鈍化,幾乎所有的問題都有人解決並且張貼在網際網路上了,因此獨自思考和解決問題已經成了不必要的、降低效率的行為,不但不時髦,而且不經濟。軟體開發迅速成為一個強調搜尋和短期記憶力的技能,我想這是50年前第一代程式設計師們做夢也沒有想到的。

  老實講,就整體而言,我仍然認為這是一種進步。任何一個產業的成熟,無不伴隨著分工的明晰、技能的簡化和從業門檻的降低。與少數人享受思考樂趣的需求相比,大多數人享受便宜而無處不在的軟體服務的需求顯然遠為重要。但是,對於身處軟體行業中的個體來說,思考力的削弱和喪失卻是不折不扣的悲劇。這一點不必過多解釋,正在苦苦尋找自己核心競爭力的開發者們都知道我說的是什麼意思。幾年來對中國開發者社群的近距離觀察使我確信,儘管作為一個產業,中國軟體一直享受著比較快的成長,但是總體而言,中國的軟體開發者越來越迷惘、焦躁和不自信。這一情況當然是由多種原因導致的,但開發者們每念及此,多抱怨體制、產業、市場等身外之物,實在也有失偏頗。評心而論,這幾年中國軟體技術界的生存環境還是有了很大改善,對於那些真正出類拔萃的程式設計師來說,過上一種充實自信的生活並不困難。擺在每一個個體面前的主要問題還是在於能否出類拔萃,而這就需要我們重新找回思考的能力。具備強悍思考能力的人,也就具備強悍的解決問題的能力,而這樣的開發者永遠都是產業中的稀缺資源。

  我認為這正是《程式碼之美》這本書的一個重要價值。合作的諸位大師級作者,給我們一個很好的機會,讓我們能夠一邊閱讀,一邊思考,找回深思熟慮的智慧火花。這本書裡所講的每一個問題,可以說都是程式設計師在工作中會遇到或者至少會擦邊的問題,既沒有故弄玄虛的文字遊戲,也沒有攜帶了領域知識的私貨,只有樸實而實際的一個個問題。雖然不是以提問的方式給出,但在整個閱讀的過程中,我們還是能夠找到很多機會與大師互動,不斷地發現問題和解決問題。我在閱讀中經常感到,看上去一個很簡單的問題,卻被這些大師們一層一層挖掘的如此深入,到最後階段不由得令人感到戰慄和震撼。看著這些智慧的光芒,我們不但可以領略大師之所謂稱為大師的秘密,而且也認識到思考的真諦。因此,千萬不要想看小說一樣一帶而過,那樣會錯過本書95%的價值!我們不是要閱讀這些文字,而是要與文字背後的作者交流學習,一點一點把自己的心得記下來,對於作者提出的新問題,先自己思考,直接寫程式嘗試,爭取跟上大師的思路,甚至可能需要反覆幾遍,才能真正讀通這本書。這樣的精力不會是白費的,讀者應當認識到,當我們擁有這本書的時候,我們獲得了怎樣寶貴的機會,可以在相對比較短的時間裡有效地提升自己的思考能力。這是一個機會,也是一次考驗,我絕對相信,透過了這次考驗的讀者,會在思考和解決問題的能力上有一個大的進步。

  我希望自己能夠以這樣的態度讀這本了不起的書,以此文與其他讀者朋友共勉之。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16566727/viewspace-521133/,如需轉載,請註明出處,否則將追究法律責任。

相關文章