蹲在馬桶上程式設計
5點鐘了。這段程式碼我已經研究了好幾個小時,半天寫出一行。這真是一種折磨。有些天裡,程式碼會不由自主的從腦子裡溜到我的指尖。可今天不是。
我的任務是往一個類裡新增一個新功能。“Easy”,我想。“我寫的這個類,現在去擴充套件它,怎麼也不應該太難。”於是,在飽飽的午餐後,我就開始坐下來程式設計。
開始一切都很順利——我有個不錯的主意,知道如何將這個新功能放進這個類裡。然而,越往細裡分析,我開始發現我的妙主意並不是那麼好。這個功能需要的資料在這裡無法獲取到。我嘗試了各種激進的方法,使得這個類混亂不堪,bug橫生。修改後的程式碼的單元測試幾乎沒有成功透過過。
接下來的幾個小時裡我感覺就像是在兔子洞裡越掉越深,最後完全認不出自己寫的程式碼。我反覆的對比修改後的程式碼和修改前的原始程式碼,試圖能清楚什麼地方出了問題。我的腦子已經無法理解這段程式碼為什麼能執行起來。已經不知道我要把它改成什麼樣。情況很快變成了我和計算機之間的一場拳擊。“編譯呀,該死的,趕快編譯!”
於是到了現在,5點鐘了——一個小時後就是下班時間。我幾乎放棄今天完成這個功能的計劃。“不可能了,”我想。“光把這些亂糟糟的程式碼理清楚就需要1個小時。”
我沮喪的站起來,耷拉著頭,慢慢往衛生間走去。我坐在馬桶上,深呼吸——就在這時,靈感來了!
靈感女神的寶座
忽然間,我想清楚了一切。程式碼一下子在湧進了我的腦海。我想清楚了這個類,它的所有功能,它的使用場景。我想清楚瞭如何把我的功能程式碼加進去。我想清楚了一切!
解決完生理問題後(洗了手),我跑回辦公桌前,開始一陣狂敲程式碼。我敲鍵盤的速度趕不上那些不斷湧進我腦海的程式碼的速度。在我的手指的重敲下,鍵盤看起來要散架。電腦和我不再是敵人,我們是最親密的戰友,是為了一個共同的目標走到一起來。
30分鐘後,程式碼編譯成功。所有的單元測試都順利透過。我完整的按著新功能的需求跑了一遍,所有功能點都按預期執行。“我搞定了這無法完成的任務,我成功了!”
當編碼的興奮勁慢慢消退後,我意識到了一個無法迴避的事實:我最高效的程式設計不是坐在計算機前,而是蹲在馬桶上。
退一步海闊天空(From Your Code)
現在,我並不是說馬桶具有神奇的程式碼設計的魔法(雖然我承認它是一個偉大的發明)。然而,我要說的是,不論你是要完成多麼重大或多麼微不足道的程式設計任務,從電腦前走開,從一個更高的層面思考問題,你的效率至少會提高10倍。不論是去衛生間,還是去公園走一走,或在辦公室休息區休息一會兒,遠離你的電腦螢幕,這能清醒你的大腦,讓你推開樹木看到森林。
很多程式設計師捨不得離開他們的電腦桌。他們認為時間沒有花在IDE上都是浪費,擔心被別人說不努力工作。“為什麼你不在工位上編碼!?等著扣薪水吧,”專案經理會這樣說。
我認為,這種邏輯是愚蠢的,是反效率的。程式設計師不是僱來坐在桌邊的,或僱來盯著螢幕的,甚至僱來寫程式碼的。這些只是程式設計師達到他們最終目的的過程,而真正的目標是:為終端使用者開發功能。如果我們要是能在遠離電腦桌的情況下可以更快速更高效的開發出這些功能,那何樂而不為呢?
總之,在程式設計時別忘了充分利用馬桶。
[英文原文:Programming on the Toilet ]
via: http://www.vaikan.com/programming-on-toilet/
相關文章
- 黑馬程式設計師程式設計師
- Spark 程式設計模型(上)Spark程式設計模型
- 黑馬程式設計師前端學習之路程式設計師前端
- 類程式設計的WAF(上)程式設計
- 老程式設計師被新程式設計師拍在沙灘上?程式設計師
- 匹馬行天下之思維決定高度篇——教你如何愛上“程式設計妹子”程式設計
- 黑馬程式設計師第七天程式設計師
- 小馬哥講Spring核心程式設計思想01Spring程式設計
- 併發程式設計基礎(上)程式設計
- 智慧馬桶蓋不合格:央視曝光抽檢智慧馬桶蓋近四成不合格
- 匿名社交APP馬桶MT初體驗APP
- day17-網路程式設計(上)程式設計
- 天池 線上程式設計 最小振幅(排序)程式設計排序
- 華為程式設計師面試要改:網上程式設計 90 分鐘,現場程式設計 30 分鐘程式設計師面試
- 【黑馬程式設計師濟南中心】代理模式-Cglib代理程式設計師模式CGLib
- 幽默:優秀程式設計師過馬路看兩邊程式設計師
- java程式與設計大作業-馬拉松管理系統Java
- 馬峰視覺設計視覺
- 好程式設計師大資料學習路線分享hive分割槽和分桶程式設計師大資料Hive
- [python網路程式設計]檔案上傳Python程式設計
- 【Java程式設計】Java上機實驗(三)Java程式設計
- 程式設計師如何在VsCode上看基金?程式設計師VSCode
- 【黑馬程式設計師濟南中心】java基礎-陣列程式設計師Java陣列
- 方案分享:智慧馬桶C位出道的秘訣
- 京東大資料研究院:2021智慧馬桶線上消費趨勢報告大資料
- Java 網路程式設計(TCP程式設計 和 UDP程式設計)Java程式設計TCPUDP
- Toolfk.com 程式設計師工具網上線程式設計師
- 原創:oracle PL/SQL程式設計基礎 上OracleSQL程式設計
- 讓程式設計師不再苦逼的神器(上)程式設計師
- 程式設計師該怎麼“討好”上級程式設計師
- 深度!程式設計師生涯的垃圾時間(上)程式設計師
- 線上資料庫設計工具-toolfk程式設計師線上工具網資料庫程式設計師
- 程式設計思想 面向切面程式設計程式設計
- 2019黑馬程式設計師vue.js專案實戰全套程式設計師Vue.js
- 黑馬程式設計師Android實戰影片教程等,超過30程式設計師Android
- 太省心!使用固源集團智慧馬桶,真的"香"!
- 風變程式設計讓你在遊戲中一步步愛上程式設計程式設計遊戲
- 「程式設計羽錄」上線,程式設計師必備的這些技能你能get到嘛?程式設計師
- 黑馬程式設計師匠心之作|C++教程從0到1入門程式設計--結構體定義和使用程式設計師C++結構體