程序員的高潮

jopen 10年前發布 | 8K 次閱讀 程序員

程序員的高潮

        英文原文:Coder’s High——Programming is just like drugs, except the dealer pays you.

編程就像嗑藥,交易者支付你薪水除外

        這些天我寫作多于寫代碼,但是關于編程我失去的一件東西就是程序員的高潮:那些時間里,連續數個小時,我將視野鎖定在電腦屏幕上,專注起來,通 過同事和我正在建立的實際結構變成了一臺人機混合的拼接體。當我開始盯著屏幕,思考和敲鍵盤時,饑餓、口渴、困倦、甚至痛苦都消退了,直到我達到疲勞的極 限,被它壓垮。

        這對我也是有好處的。寫代碼對我的心靈有撫平、鎮靜的效果,我猜想如果你掌握了思考,它對你也是有用的。神經學家 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”列的最后一行徒勞地拷問我的大腦時,我看著我的程序員朋友,在專注的著迷中敲著代碼,我感到了對往事的懷念,還有嫉妒。

                    <span id="shareA4" class="fl">                            
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!