10個編程提示,讓你在實踐中更高效、更具創造性
不知你有沒有注意到,編程並沒有非常好的自學書籍。當然,有很多片段的解釋能從理論上指導各種編程語言。但是程序員們的實際行為方式呢?如果你追 Silicon Valley 這個(美國)電視節目,你就會知道,程序員也會像作家一樣在工作中受到阻礙:理查德不再睡覺,穿著衣服走進一個游泳池。但一定會有更好的辦法。
其實,作家知道程序員遇到障礙的秘密。如果你是一個程序員(無論新手還是專家),這十個寫作提示將幫助你成為一個更有效率、更具創造性和更自信的程序員。
這些提示來自哪裡?為了在教師訪談期間緩解我去年關於博士學位的內疚感,我讀了很多關於飛機寫作的書(參見末尾的閱讀清單)。我發現許多書中,都有適用於編程的見解和方法。
當然,這個清單是從零開始的。
Tip 0
程序優先
把編程安排在重點位置,畢竟人們整天都很忙。具體該怎麼做呢?我們早上時是最有創意的,所以讓你每天早晨的第一個小時變得神聖不可侵犯。不安排會議,不要檢查你的電子郵件或社交平台。如果你早晨在家,甚至不要刷牙。對我來說,喝杯咖啡很有必要。但此後,只需要讓你自己坐在椅子上(有人說,作家最有用的工具是膠水)。
把這段時間像一個會議一樣安排進你的日程表,並防止這段時間免受其他任何事件的影響。
Tip 1
不要害怕使用紙張
在打開電腦之前,先在腦海中勾畫出你的想法,列一個列表並在記事本上注釋。《在十五分鐘內撰寫論文》強調了達到零草稿的重要性,而概念模板早於初稿,你已經花了所有傍晚和晚上的時間去思考、產生想法,現在只需要將它們表現出來。
< Artist』s Way > 主張,自由的寫作能幫你成為一個更好的程序員(或者雕塑家、投資銀行家)。所以什麼方式對你編程有效,就用什麼方式。
Tip 2
建立編程計劃
人類是具有「習慣性」的生物。因此,使編程成為你計劃的一部分,為它設定合理的目標。這個理念來自於< Writing Down the Bones >。一段時間後當你形成習慣,如果某天沒有編程,你就會覺得好像忘了什麼事。
Tip 3
跟蹤想法以及bug
建立一個記錄想法和問題的日誌,當你受到阻礙或想要尋找其他事的解決方法,可以返回查找。建立編程計劃(Tip 2)是第一步。但創造力並不總是遵循著計劃走,或者你可能正在忙於其他事情。所以,儘可能地記住你的靈光乍現。
有人說寫作會鼓勵人更多的去寫作。所以編程越多,你就會對編程產生越多的想法。我平時總是隨身攜帶一本筆記本,以隨時記錄自己的想法。
Tip 4
交朋友
保持責任心會讓我們做得更好。在你設定目標的周期內保持每周自查,與大家討論編程中遇到的問題,共享資源和策略。
例如,我在CMU做計算機視覺的朋友每個星期一早上都會在校園咖啡廳做15分鐘的常規會議。這樣的交流能親自去現場參加最好,如果不能去,還可以用在線論壇。當你向人們請教代碼問題,他們可能會迫不及待的和你分享。
Tip 5
借鑒他人
就像把事情分開一般往往是把事情放在一起,程序員可以通過閱讀和修改他人代碼來為代碼開發一個「耳朵」。在< The Sense of Style >中,Stephen Pinker強調「好的作家是狂熱的讀者」。
與寫作(借鑒被認為是抄襲)不同,程序員將已有的庫和樣本用來支撐自己的項目是非常被鼓勵的。你可以參考這些代碼的來源,但是當已有人弄清楚一個問題時,沒有必要重新發明輪子。
Tip 6
認真沉思
創造的過程,就是將你腦海中的代碼進行結構化,體現到實際中並用它們解決某個問題。想像一下,在辦公室里有兩個書桌,一個用於寫作(此Tip),一個用於編輯(Tip 7)。從書桌能望向窗外,你可以異想天開、開放思考,像追逐蝴蝶一樣追逐你腦海中的想法。
不要害怕散步,或者害怕嘗試可能是,也可能不是最好的最終解決方案。我最有生產能力的實習生之一,當想弄清楚她代碼下一步該怎樣寫,她喜歡在CMU的走廊上走路。編程就像寫作一樣,不僅僅是在屏幕上打字,更重要的是你腦中想的東西。所以在種植前,先為土壤施肥而慶祝,然後再澆水。
Tip 7
無情(但非卑鄙)
如果你處於編輯階段,你經常會「殺死你的親愛的」。這句話已經被許多作家,包括史蒂芬·金所推崇。這是關於消除多餘的代碼。
例如,你可能花了很多時間讓一個代碼塊工作,但現在你有更好的方式來取代它。如果你真的不能忍受它,那就消除它。 Google 為員工提供了失敗獎金,用於一些永遠無法解決的項目(引自< How Google Works >)。所以,從你的代碼存在的根本價值出發,而不是從自己的感情出發。
Tip 8
對知識局限性保持警惕
我們通常不會用彙編語言編程的原因之一是它不容易被人讀取。較高級別的編程語言讓我們覺得抽象,所以我們應該選擇有意義的抽象語言。調用一些變數1和變數2對於任何其他使用你的代碼的人(特別是你自己)會事倍功半,尤其是這些代碼之後還會被刪改。
寫作最大的挑戰之一是確保讀者能順利跟上。使用空格、評論你的代碼、花時間去創造能被理解的抽象和結構。如果人們不能理解的話,你的文章(或者代碼)有多麼優秀並不重要。
Tip 9
停在一個向下的滑坡
每天早上應該從前一天開始,每天將最後10%的時間用於準備第二天的工作。你可以為下一個代碼塊的結構做注釋,也可以做一個事項列表。
我曾駕駛一輛換乘車,通過並停在一個向下的斜坡上,我知道即使車的電池一夜之間耗完,我也能利用山的潛力來啟動引擎。這就像在前一天晚上放好你的運動服。第二天,你只要直接走就好。
將以上10點視為程序員的自學列表。編程是一個創造性的過程,就像寫作一樣,我相信這10個提示可以讓你更有創意、更有成就、更不容易陷入困境。
閱讀清單
Writing Your Dissertation in Fifteen Minutes a Day. Joan Bolker.
The Artist』s Way. Julia Cameron.
Writing Down the Bones. Natalie Goldberg.
On Writing: A Memoir of the Craft. Stephen King.
The Sense of Style. Steven Pinker.
How to Write a Lot: A Practical Guide to Productive Academic Writing. Paul J. Silvia.
If You Want to Write. Brenda Ueland.
On Writing Well: The Classic Guide to Writing Nonfiction. William Zinsser.
51CTO學院4周年慶來啦!
4年風雨相伴,感恩一路有你!
各種活動接踵而至,更有N波驚喜大獎助興!
※程序員的深夜食堂
※五分鐘教程:如何在Docker當中運行平行測試
※你相信嗎?這些互聯網大佬們以前都是程序員
※態牛-Tech Neo 5月刊:深度學習
TAG:51CTO |
※最適合鍛煉編碼技能的10個最佳編程遊戲!
※81歲自學編程的開發者:阻礙你實現夢想的,從來就不是年齡
※鍾超:基因編程時代已來臨?它如何改造微生物,創造新材料
※谷歌 CEO 表示:比編程能力更重要的是持續學習
※谷歌CEO:比編程能力更重要的是持續學習
※81歲自學編程,蘋果最高齡iOS開發者:阻礙你實現夢想的,從來就不是年齡
※製造業透過快速編程迎戰彈性製造
※10個值得推薦的學習編程的網站
※學編程開始前就該知道的工具集,提升五倍學習效率
※谷歌CEO:比編程能力更重要的是持續學習!
※為了讓孩子學習更主動,MIT創建了一個AR可視化編程平台
※少兒編程,為更好的世界
※其實學編程不難,難的是心中的那個本我
※2018,編程語言與開源的趨勢發生了哪些有趣變化?
※對於編程學習,什麼才是最重要的?
※其實我也很害怕編程
※編程,讓大腦更靈活,讓生活更美好
※展望2018:為什麼都說編程是有史以來最好的工作?
※11種最佳編程字體中的哪款適合你?
※32行代碼輕鬆搞定很酷的C語言窗口抖動,10分鐘愛上編程