1. 程式人生 > >《你的燈亮著嗎》

《你的燈亮著嗎》

走出問題的烏托邦

——-代序

也許你是一名普通的程式設計師或者一個底層的職員,你的工作就是保質保量地完成上級交給你的任務,你有時會困惑為什麼你努力的工作始終得不到上級的賞識和提拔。也許你是一名軟體開發小組的負責人或者領導著數十名員工的經理人,你的工作就是按部就班地將你接到的任務分成小塊之後分排給你的下屬,我猜你一定常常會頭痛於上級變化無常的要求和下級死魚一般的反饋。也許你站在了系統分析和首席設計師的位置,或者你是麾下聚集了一大批精兵強將的企業家,你一定會為你的那些莫名其妙的下屬不明就裡的行為搞得頭昏腦
脹,你會在一個人的時候大聲地抱怨:真搞不明白這幫傢伙腦子裡在想些什麼!

那麼,你知道自己在考慮的是什麼?自己在做的又是什麼嗎?或者說,你的所做究竟是解決了什麼問題?解決了誰的問題?是否真正解決了她的問題?或者說,你的所想究竟是基於什麼需求?滿足了誰的願望?是否真正達到了人們的需要?

面對諸如此類的追問,你會有什麼樣的回答呢?

在這一刻,您,作為我的一個讀者;我,有理由相信您的判斷,相信您是一個希望解決真正問題的人,相信您並不甘於碌碌,相信您有能力也願意去理解這一本書的初衷;如此,就讓我們開始這一段並不漫長的閱讀。

這原本是一本寫給計算機程式設計師們的通俗書,原作者溫伯格宣稱,寫作它的目的是為了幫助程式設計師們搞清楚自己所面臨的問題的真正所在,以便能夠找到一種最為合適的方法來解決它們。本書在1982 年發行了它的初版,令人吃驚的是,它出版之後立刻成為了風靡一時的傑作。“問題的真正所在”成為了當時最流行的術語;而在問題解決領域也迅速被人們奉為經典。把本書一次又一次推上排行榜首的讀者們發現,書中所指出的問題大多是他們所困惑的。

是什麼,讓這本薄薄的小冊子具有如此的魔力?又是什麼,讓身為軟體界泰斗巨葩的老先生傾力寫作這樣的通俗小品?

從本書的一些介紹中,我們看到書中似乎在真切地關注諸如:人們如何思考?人們在遇到棘手的難題時會怎麼思考並處理?對於某一個特定的問題,人們會用什麼樣的角度去思考?等等之類的問題。然而這些,都不是這本書中能給你解決的問題,甚至可以說,這本書不能給你解決任何問題。

在我們幼年的時候,我們對世界充滿了憧憬;在我們青年的時候,我們心中滿懷著理想;在我們壯年的時候,我們認為自己已經堅定地將地球踩在腳下;而在我們老年的時候,我們發現突然間有了足夠的時間來後悔以前所作的一切。

我們在世間生存,各各尋找自己的生存方式。

但這世間並不常常如願,我們的生活被各種各樣的小節所糾纏,我們的事業被各行各業的敵友所阻攔,我們的愛情因對方瞬息萬變的要求而蹣跚。然後,我們忙碌於柴米油鹽醬醋茶,我們奔波於甲乙丙丁你我他,我們搞不清愛人從何處收集了那麼多淚花。

是的,我們彷徨,苦悶;在被人問及我們自己的需要的時候,我們苦笑。

不識廬山真面目,只緣身在此山中。如果我們無法跳出作為個人的境地,還停留在不斷地接受問題、不斷地“發現問題”、不斷地“解決問題”的怪圈中,我們永遠無法知道自己“需要什麼”和“正在幹些什麼”。面對變化多端的世界,面對錯綜複雜的問題,我們一籌莫展,一腳踏進焦油坑不知前路茫茫。

一位少年去拜訪智者。他問:我如何才能快樂地解決我所遇到的問題呢?智者告訴他四句話:把自己當成別人;把別人當成自己;把別人當成別人;把自己當成自己。智者的話道出了看待事物的最重要的立場問題。

而這,正是本書首先提出的主題:1)動手去解決問題之前,好好想想問題的來源;2)如何站在各個角度來看待面臨的問題,以能夠知道其真正所在;如何去嘗試那個最能解決真正問題的方法,並且時刻保持警惕心;3)為什麼不要把人們的解決方法誤認為是問題的定義,更不要把某個問題的解決方法誤認為是問題的定義,特別是這個解決方法是你自己所使用的;4)永遠都不要肯定自己已經有了一個正確的定義,即使是在問題好像已經解決之後。

可能很多人會問:“那麼這本書最終將給我帶來什麼?它能幫助我解決什麼問題?”

如前所述,現在我們努力尋找問題的真正所在,我們可能已經列出了一系列的可能的問題定義,我們總該開始解決問題了吧。

結論並不樂觀,本書認為:5)每一種解決方法都會帶來新的問題;6)問題最難以處理的部分恰恰是去意識到它們的存在;7)在理解問題之前,至少要做好準備接受三種可能的出錯情況;8)或許還可以改變問題的表述來獲得不同的解決方法;9)當你沉迷於尋找問題定義和解決方法時,不要忘記隨時都回頭看看,看看自己是不是已經迷路了⋯⋯

隨著對問題的逐步深入,我們發現世界並不如原來所想那麼確定。那麼,我們是否已經迷路了?

本書的兩位作者都是ACM 的資深教師,他們的職業生涯中從來沒有停止過與“計算機程式設計師”的對話。以往,在人們的眼中,計算機需要處理的問題就是一個有著明確的定義的問題,通過涇渭分明的“0”和“1”的種種組合、運算,最終給出明確的答覆。隨著經驗的增長,作者發現“如果在對技術的使用和構建過程中沒有賦予足夠的人文方面的重視,技術將毫無價值,甚至是危險的(technology is worthless - even dangerous - if we don’t pay attention to the human aspects of both its use and its construction)”。

與世界上的其他動物相比,人類恐怕是最為多變的了;可惜的是,我們所遇到的絕大多數問題都離不開這種多變的動物,甚至往往都是源自於這種動物。他們不止多變,還多疑、自私、自以為是。

在這個時候,大師提醒我們:10)當別人能夠很好地解決自己問題的時候,千萬不要越俎代庖;11)如果某人能夠解決這個問題,但是他本人卻並不會遇到這一問題時,那麼你首先要做的就是讓他也感受到這一問題;12)不管看上去如何,人們很少知道他們要什麼,直到你給了他們所需要的東西;13)甚至,事實上,並沒有多少人真的希望他們的問題被解決。

如果說這是一冊教科書,那一定是我太偏愛了故事;如果說這是一束小品文,那一定是我太沉迷於思考;如果說這是程式設計師解決問題的指南,那一定是我忽略了問題的普遍性;如果說這將改變你的生活,那一定是你洞察了其中的奧祕。

誠如作者所說,“問題其實就是你的期望和你的感受之間的差別,而且不管看上去如何,人們很少知道他們要什麼⋯⋯直到⋯⋯你給了他們所需要的東西”。那麼,讀者朋友,你是否為此感到了差別?你是否已經找到你所需要的東西?

或者,您在這一刻已然豁然,這世間並不存在解決一切問題的奧義,將希望寄託在某種思想和方法僅僅是欺騙自己的麻醉劑;那麼,作者會說:在出門的時候,您家的燈亮著麼?

或者,您在這一刻決然行動,解決問題之路終歸需要我們自己的步履,在這裡惶惶而談無疑是浪費智者的生命;那麼,也許,書中的某一個故事,將給您一段生活的經歷。

在我的孩提時代,有一個美好而遙遠的遐想,我想這人間的一切,必然有它存在的道理,總有一天,我會找到這種道理,於是我就通曉了世界。隨著年齡的增長,我學到和發現了越來越多的規律和定理,卻常常在紛繁的事務中迷失自我,我的世界逐漸走向真實,兒時的夢想成為了永不能實現的烏托邦。

於是我不再寄希望於那些虛無縹緲的新發明和新技術,只想默默地投身於傳統的產業,希望用經驗和汗水來成就一方事業。

於是作者也並不寄希望於能通過這個小冊子給您帶來問題解決的飛躍,只是輕輕地提醒您一聲:真正的問題所在可能並不是您現在的所想,換個角度分析,或許您已經找到了問題的真諦。

章柏幸 於清華園
2003 年4 月