程式設計就像嗑藥,交易者支付你薪水除外這些天我寫作多於寫程式碼,但是關於程式設計我失去的一件東西就是程式設計師的高潮:那些時間裡,連續數個小時,我將視野鎖定在電腦螢幕上,專注起來,通過同事和我正在建立的實際結構變成了一臺人機混合的拼接體。當我開始盯著螢幕,思考和敲鍵盤時,飢餓、口渴、睏倦、甚至痛苦都消退了,直到我達到疲勞的極限,被它壓垮。
這對我也是有好處的。寫程式碼對我的心靈有撫平、鎮靜的效果,我猜想如果你掌握了思考,它對你也是有用的。神經學家 James H. Austin 的研究作品《禪和大腦》提到一個人的專注是如何進入“最清晰的虛無,完全脫離了物理本身的空間”。我不清楚程式設計師是否都到達過這個境界,但是他們有能力與世界脫離而只關注工作。我和一個朋友在一個同事後面大聲講話,而她正沉浸在編碼當中,她不僅不受打擾,她還不知道我們在她後面,對她自己的名字也沒有反應。這是對於感知反應的某種嚴肅的壓制。
有一些程式設計師,他們可以連續十多個小時保持這種入迷。我從來沒有這種耐力,但是有無數個像遊戲程式設計師 John Harris 的例子,他因 Steven Levy 在 1984 年的神祕大作《Hackers》而名聲鵲起。Harris 在 80 年代早期致力於雅利達 8 位機上的 Drogger,他說,“我的手像粘到了鍵盤上。”有一天下午 3 點以後他開始程式設計,沉浸在了工作中。等他再次從螢幕上抬起頭,他吃驚地發現燈已經關掉了,因為他認為他已經工作到深夜了。實際上,已經是第二天早上了。
關於這種類似“漲潮”狀態的完全專注,已經有很多討論了。我堅信它們不都一模一樣,對於我來說,程式設計師的高潮本質上不同於我所體驗過的。書、電影、遊戲、甚至寫作有時候也會讓我專注到那種程度,但那是不同的感受。它不是真實的,不是著迷的,不是完美的。當然,它沒有完美的承諾(尤其是它沒有寫作),因為這種著迷把你帶入了一個完美的、有序的演算法和程式碼的世界,這個世界的最終結果從來都不是匹配的——使用者已經非常瞭解了。
我從沒聽過一個大師描述這種符合標準的著迷。或許它們根本無法用語言表達,但是有創造力的著迷更像是藥物誘發的恍惚,在這種狀態下,事情當時好像是清晰的,但通常是模糊的熾熱之夢——對於每一個“忽必烈汗”【注1】,就有一千首因這些熾熱之夢而產生的詩歌和繪畫,除了創作人員,對於每個人都缺乏意義。程式碼可能有 bug,隨後可能需要徹底大修,但是它編譯了,它就可以執行(或多或少),著迷之外與著迷之中是一樣的。在一個低階的寫作著迷之後,我通常說,“這需要一些認真的編輯。”在一次編碼入迷之後,我會說,“真棒!這必定很有生產力!”
我曾經聽過的來自於一個不寫程式碼的人對於程式設計師高潮的最接近的描述是源於一個象棋選手。他描述了在他的精力集中的最清楚時刻,他突然能夠看到整個比賽在他面前攤開了,包括所有策略的可能性以及很多優勢和劣勢。它就像精神層面的圖畫或電影,因為它比線性方式展示的資訊要多得多。它好像是線性的,他的意識的知覺屬性被分解了,最終他一次能夠訪問大腦的大量並行處理。(當然最令人沮喪的時刻是當我意識到我不得不在五個檔案中五個地方修改程式碼時,而不得不等待我的手指一次修改一處。)我也聽到過數學家用類似的方式描述思考和領悟的時刻,他們著迷的深度能夠達到一個點,就是整個邏輯系統至少呈現在了他們面前,足以讓他們最終把兩到三個小塊組合在一起,併產生一個新視角。
但是編碼通過將著迷連結到一個進行中的生產過程和目標為指導的成就來調節著迷。或許那是最扣人心絃的品質之一。不僅僅你擁有完全專注的短暫高潮,而且它還伴隨著一系列的令人激動的探索智力,其中一個探索在捕捉著完美。“編碼”不僅僅是坐下來,大量生產程式碼。數量龐大,但是它也連帶著不計其數的測試和除錯,你把程式碼接通它的節奏,看看哪裡中斷了,然後找到出錯的線索。有時候你在這個週期的這個或那個階段花了很長時間,不過,尤其是當你快要完成時,週期收緊了,變得更加讓人上癮。你受到了這個收緊的程式碼、編譯、測試和除錯反饋週期的促進,每個階段都強烈要求下個階段不要延期。你寫了一個功能,你想看看是否好使。測試,中斷了。它中斷了,你想修復它。你修復了,然後,你想構建下一個。如此往復後,也許會有一段完美的程式碼在遠處向你招手。
最好情況下,我在一定程度上能夠從鍵盤上帶走這種著迷。有一次,我全情投入一小段狡猾的伺服器程式碼,在夢裡我定位到了程式碼裡的一個種類條件(一個非常低階的 bug)。在夢裡我感到了恐慌,我強迫自己醒來並做了檢查。我夢中的大腦是正確的;這個 bug 是真實的。(我想象得出程式碼天才每1~2 週會遇到一次,但它對於我而言只會出現一次。)
沉浸在程式碼的虛擬世界之後,真實世界相對變得令人討厭了。程式碼或許用費解的行為讓你煩惱、對你嘲諷,但總是公平的;總是有一些說明。總有美麗和優雅,至少在狡猾的命令和糟糕的維護把垃圾放在你程式碼之前是這樣的。二戰時,數學家 Godfrey Harold Hardy 寫道,“當世界瘋狂的時候,數學家或許在數學領域找到一個無敵的安慰劑。”無論計算機的實際應用如何,編碼也會是非常地遙遠。資料和計算把真實世界裡的真實的人聯絡起來的訊號總是很少。資料的意思對於其他人來說是一種物質;你只能告訴計算機如何處理,而不管它是偉哥的垃圾郵件,還是 James Joyce 寫的《Ulysses》。你總是能夠忽略內容,內容是好的,因為前者比後者要多得多。
那麼為什麼我不再做全職編碼了?我仍然時常問自己問題。精疲力盡是一個簡單的理由,也是健康的理由(這表明進化沒有使人類連續數小時可以坐在計算機前面),高潮的程度也在衰落,專注不再如此多了。但它仍然和以前一樣強大,持續的構建和測試周期也開始提升,更多地像是一遍又一遍地把一個鵝卵石推到山頂。儘管如此,當我面對搜尋“le mot juste”列的最後一行徒勞地拷問我的大腦時,我看著我的程式設計師朋友,在專注的著迷中敲著程式碼,我感到了對往事的懷念,還有嫉妒。
本文轉載自;labazhou.net
相關閱讀
評論(0)