1. 程式人生 > >jQuery 之父:每天寫程式碼

jQuery 之父:每天寫程式碼

去年秋天我的支線程式碼專案 遇到了一些問題,專案進展不足,而且我沒法找到一個完成更多程式碼的方法(在不影響我在Khan Academy方面的工作的前提下)。

我主要在週末進行我的支線,當然有時候也在晚上進行。這個方法對我而言效果不佳。我的壓力太重了,我需要在週末努力完成儘可能多的工作(如果沒做 到,我會為此感到挫敗)。還有一個問題是我無法保證每個週末都有空,而且我也不想把週末所有的時間都花在程式設計上(失去一切放鬆娛樂的機會)。

此外,每隔一週進行編碼的話,間隙太長了。太容易忘記你正在做什麼,或者你還需要做什麼了(即使你有筆記)。如果你錯過了一個週末的話,問題就更嚴重了,間隔一下子變成兩週了。多周的上下文切換可能是致命的(我有很多支線專案因為這類注意力缺乏而死亡了)。

Jennifer Dewalt 去年通過在 180 天建立 180 個網站的方式來自學程式設計,她的做法啟發了我。我決定採用一個簡單的策略:每天編碼。

我決定為自己定下一些規則:

  1. 每天必須寫程式碼。我可以寫文件、寫部落格或者寫其他東西,但是這些不能代替寫程式碼。

  2. 程式碼必須是實際起作用的。調整縮排、重新排版不算。如果有可能,重構也不算。(可以進行這些事情,但這些不能是一天唯一的編碼。)

  3. 所有程式碼必須在午夜之前完成。

  4. 程式碼必須是開源的,放在Github上。

有些規則比較武斷。比如程式碼其實不用在午夜前寫完的。但我擔心熬夜導致程式碼質量下降。同樣,程式碼也不用開源,或者放在GitHub上。我這麼做是想強迫自己寫程式碼的時候上點心(考慮可讀性,同時較早地考慮模組化)。

到目前為止這個策略很有效。我基本保持了20周的連續工作。我之所以寫這篇部落格,正是因為它完全改變了我編寫程式碼的方式,更重要的是影響了我生活和心智。

這個習慣的改變產生了一些有趣的結果:

最小可行的編碼。 我強迫自己每天花不少於半個小時來寫程式碼(如果少於這個時間就很難寫出有價值的程式碼了,特別是回憶前一天寫了什麼還要花一點時間)。工作日的時候我有時寫得多一點(一般不超過一個小時),週末我有時整天寫程式碼。

寫程式碼成為習慣。 值得一提的是我並不是特別在乎上面的Github圖形。我覺得這是這個實驗最值得借鑑的一點:這是你為自己做的一個改變,而不是為了滿足別人對你工作的評價。節食和鍛鍊也是一個道理:如果你不在乎提升自己,那麼你永遠都不會取得成功。

與焦慮作鬥爭。 在開始這個實驗之前,我時常為沒有完成足夠的工作或取得足夠進展而感到焦慮(工作和進展都難以量化,因為我的支線專案沒有死限)。我意識到,感覺到進展和 實際推進工作同樣重要。這令我大開眼界。一旦我每天持續地推進專案,我的焦慮就開始消散了。我對自己的工作量很心安,我再也沒有那種難以承受的渴望,想要 疾風驟雨式地推進專案的渴望。

週末。 以前,在週末完成工作絕對是前進的關鍵動力(因為通常而言這是我唯一大量推進支線專案工作的機會。)現在情況不一樣了——這是件好事。期望在一個週末完成 一週的所有工作只會讓我失望。我極少很完成工作,因此為了完成更多工作而拒絕了其他喜歡的週末活動(例如吃 dim sum,參觀博物館,去公園遊玩,陪伴我的伴侶等)。我深深地感到,雖然支線專案是非常重要的,但是它們不應該是生活的全部。

後臺處理。 每天編寫支線專案程式碼的一個有趣的副作用是你當前的任務時常在你大腦的後臺執行。因此當我去散步或沐浴的時候,或者進行其他不費腦的活動的時候,我在思考 我接下來將做哪些編碼,尋找解決問題的好方法。我以前一週或兩週編碼一次的時候可不是這樣。當時時間被花費在思考其他一些事情上,通常是在為沒法完成任何 支線專案而感到焦慮。

上下文切換。 拾起支線專案工作的時候總會有上下文開銷的。很不幸,重拾整整一週前的思考是極其困難的。每天做一點對此很有幫助,因為間隔時間大大縮短了,讓我很容易想起在做什麼。

平衡工作。 這個改變最重要的方面之一是我已經簡單地學會了如何更好地平衡工作、生活和支線專案。我知道自己每天都要做支線專案,因此我需要更好地管理時間。如果我計 劃晚上出去,並且很晚才能回家,那麼我需要在早上為支線專案工作,在開始為我主業Khan Academy工作之前。同樣的,如果我在外面,而我還沒有完成我的工作,時間已經很晚了,那麼我需要儘快趕回家去完成工作(以免錯過一天)。我需要指出 的是我發現自己把更少的時間花在愛好上了(例如木版畫),但是這是一個合理的代價,我得接受這個。

對外溝通。 跟外界溝通自己的新習慣是很有好處的。我的伴侶理解每都必須完成工作,因此有活動安排有時需要據此作出調整。這樣我就可以很方便地說:“是的,我們可以出去/看個電影/等等。但是我之後需要寫程式碼。”我的伴侶會理解我,並在安排活動時考慮到這點。

我寫了多少程式碼? 我很難相信自己在過去的幾個月寫了這麼多的程式碼。我新建了幾個網站,重寫了一些框架,並建立了大量node模組。我寫了如此之多的程式碼以至於我有時我都忘記自己做了寫什麼——幾周前的工作感覺是很久遠的記憶。我非常非常高興自己能寫這麼多程式碼。

我認為這個習慣的改變是一個巨大的成功。我希望自己能持續保持這個習慣。同時,我盡力向其他希望能完成大量的支線專案的人推薦這個策略。告訴我這個策略對你而言是有效還是無效。我很希望能從你那裡聽到一些有意思的東西。

關於作者

相關推薦

jQuery 每天程式碼

去年秋天我的支線程式碼專案 遇到了一些問題,專案進展不足,而且我沒法找到一個完成更多程式碼的方法(在不影響我在Khan Academy方面的工作的前提下)。我主要在週末進行我的支線,當然有時候也在晚上進行。這個方法對我而言效果不佳。我的壓力太重了,我需要在週末努力完成儘可能多的工作(如果沒做 到,我會為此感到

Java22年前的一段程式碼,你見過嗎?

Java之父高斯林是一位加拿大的計算機天才。 他創造了偉大的程式語言——Java,在TIOBE排行榜上,Java常年排名第一。 現在這位63歲高齡的祖師爺依然戰鬥在程式設計最前線,寶刀不老。 1、Java之父找不到工作? 之算是Java之父,也難逃中老年危機。 高斯林曾在Facebook上

MLSVM基於Js程式碼利用SVM演算法的實現根據Kaggle資料集預測泰坦尼克號生存人員

ML之SVM:基於Js程式碼利用SVM演算法的實現根據Kaggle資料集預測泰坦尼克號生存人員 實驗資料 設計思路   實現程式碼(部分程式碼) /** js程式碼實現SVM演算法 */ //ML之SVM:基於Js程式碼利用SVM演算法的實現根據Kagg

習慣9每天英語真實溝通

    大家好,英語寫作是一個不可缺少的技能,而那個英語寫作是怎樣練出來的,跟說話一樣可以經過建立習慣慢慢把這個能力培養出來,所以第九個習慣是每天用英語寫作,跟別人進行真實的溝通,我說寫英語不是拿筆然後把英語單詞寫下來,來背單詞的。我的意思是你有朋友,你有英語家長,你就是開始

知識點13程式碼-倒轉連結串列的c語言實現

寫在前面的廢話:筆記本壞掉了,一插入8g的記憶體卡就開不了機,而不插入的話可以開機,但是又啟動不了AS。不知道是記憶體卡的問題還是電腦介面的問題,想哭。這段時間要等同學帶他的電腦過來幫我測試,所以關於Android的內容暫時是寫不了的了~ 然後,秋招火爆到來,這段時間除了一邊繼續學習嵌

某程式設計師入職三個月沒提交過一行程式碼渴望程式碼,創造價值!

如果你是一名程式設計師,由於某種原因,長期不能寫程式碼,你是一種什麼樣的感受呢?是不是感覺很失落,我想大部分程式設計師都會有這種感覺吧,由於公司的專案情況,有的時候可能是研究一些技術,看一些程式碼什麼的,部分程式設計師就不願意幹這樣的事情,感覺還是自己寫程式碼爽,最近就有一名華為員工經歷了這樣一種情

Hadoop 開發者應將開源納入職業規劃

   據福布斯報道,Hadoop 之父 Doug Cutting 在近日的 Oracle Code One 大會(原 JavaOne ) 上,獲得了“開拓者獎”(Groundbreaker Award)。Doug Cutting

What-If 工具無需程式碼,即可測試機器學習模型

文 / Google AI 軟體工程師 James Wexler 來源 | TensorFlow 公眾號 構建有效的機器學習 (ML) 系統需要提出許多問題。僅僅訓練一個模型,然後放任不管,是遠遠不夠的。而優秀的開發者就像偵探一樣,總是不斷探索,試圖更好地理解自

華為程式設計師入職三個月沒提交過一行程式碼渴望程式碼,創造價值!

如果你是一名程式設計師,由於某種原因,長期不能寫程式碼,你是一種什麼樣的感受呢?是不是感覺很失落,我想大部分程式設計師都會有這種感覺吧,由於公司的專案情況,有的時候可能是研究一些技術,看一些程式碼什麼的,部分程式設計師就不願意幹這樣的事情,感覺還是自己寫程式碼爽,最近就有一名

程式設計練習u601迄今的最多的分支

例題描述: 編寫一個程式,讀取鍵盤輸入,直到遇到@符號為止,並回顯輸入(數字除外),同時將大寫字母轉換為小寫,將小寫字母轉換為大寫(使用cctype)。 實現如下: #include<iostream> #include<string>/

#程式設計師吐槽工資和Bug數量掛鉤!網友程式碼就能最高績效

相信大家都知道,每一個專案是否能夠上線都是又Bug大小和數量來決定的,Bug多了會影響使用者的體驗,到時候不僅會給公司帶來經濟損失,對公司的名聲也會有一定的影響,而到最後背鍋的還是測試人員和開發人員。所以有的公司為了防止出現這種狀況,會要求專案的Bug數量儘量少! 這位程式設計師的公司就實

程式設計師吐槽工資和Bug數量掛鉤!網友程式碼就能最高績效

相信大家都知道,每一個專案是否能夠上線都是又Bug大小和數量來決定的,Bug多了會影響使用者的體驗,到時候不僅會給公司帶來經濟損失,對公司的名聲也會有一定的影響,而到最後背鍋的還是測試人員和開發人員。所以有的公司為了防止出現這種狀況,會要求專案的Bug數量儘量少! 這位程式設計師的公司就實

Qt總結檔案操作

  一、簡介        通過QFile、QDir、QFileInfo和QFileSystemWatcher類簡單介紹對檔案和目錄的一些操作。對文字流和資料流沒有太多的介紹,還有一些Qt資源、統一資源定位符、緩衝區可以在以後應用中加上。

Appium初始化設定程式碼連線手機、appium-desktop連線手機

一、包名獲取的三種方式1)找開發要2)mac使用命令:adb logcat | grep START win使用命令:adb logcat | findstr START  檢視包名和入口如下:   3)通過aapt命令檢視   cmd到你的android-sdk-windows\bu

增長黑客千萬別忘記這個殺手級動作

✦ 好公司由增長型的思維方式驅動,確保你的產品和市場匹配,然後就要不斷試驗。 ——Sean Ellis 授課老師|肖恩·艾利斯(Sean Ellis)“增長黑客之父”、《增長黑客》作者 在美國,有一些非常成功的公司,比如沃爾瑪、迪士尼、21世紀福克斯公司等,

“GAN當初為了深度學習買GPU,現在後悔沒多挖點比特幣

翻譯 | shawn 編輯 | 阿司匹林 出品 | 人工智慧頭條(公眾號ID:AI_Thinker) Ian Goodfellow 是谷歌大腦團隊的一名研究科學家,他帶領的研究團隊負責研究 AI 領域中的對抗技術。他是生成式對抗網路(GANs)之父,《

Linux 林納斯·託瓦茲(Linus Torvalds)

林納斯目前受聘于開放原始碼開發實驗室(OSDL,Open Source Development Labs),全身心的開發Linux核心。 主要成就 顛覆世界的“自由主義教皇”林納斯 “有些人生來就具有統率百萬人的領袖風範;另一些人則是為寫出顛覆世界的軟

Openshift的網路SDN master程式碼分析

一、前言Openshift基於OVS SDN的CNI網路方案具有一個以etcd key-value store為中心master節點和若干worker節點,Openshift SDN master在etcd維護一個worker節點和SDN網路相關的資料庫。master主要的責

Python為什麼Python陣列下標從0開始

曾經有人在Twitter上問我為什麼Python使用以0為首位的陣列索引法(0-based),並且還給我了一個相關優秀文章的連結。這讓我想起許多往事:Python的前身之一,ABC語言使用的是以1為首位的陣列索引方式(1-based),而對Python有著巨大影響的C語言

GAN全方位解讀生成對抗網路的原理及未來

GANIan Goodfellow 在 NIPS 2016 上的 tutorial 演講依舊是聊他的代表作生成對抗網路(GAN/Generative Adversarial Networks),畢竟 Ian 就是「對抗生成網路之父」。這兩年,他每到大會就會講 GAN,並且每次