10年學到的程式設計經驗總結

2016-04-18    分類:推薦閱讀、程式設計師人生、首頁精華2人評論發表於2016-04-18

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

我作為一個web開發者的旅程始於2000年,那時我還只有21歲,我依然可以清楚地記得那些日子裡激盪在我內心的感覺。如果一定要找一個詞來形容的話,我覺得那是——愉悅。

我不需要擔憂時間、最後期限和輕重緩急,也不需要擔心生產力。我所要關心的只有一件事,那就是學習,儘可能多和儘可能快地學習。

我急急忙忙地前進不是因為時間期限這些事情,僅僅是因為這讓我感覺良好,讓我覺得有趣。學習如何構建東西,發現一個全新的世界讓我由衷地興奮不已。

一晃幾年過去了,時間來到了2006年左右,我開始認真對待程式設計。我開始作為一名web開發人員參與到專業的工作中。也許你會認為這樣做毀掉了我所有的樂趣,我不怪你。這無疑是一種截然不同的體驗。

回首過往,我作為專業的web開發人員的旅程一點也不糟糕,雖然過程並不總是一帆風順。對於我們許多人來說,工作是為了生活,但如果你願意的話,工作並不會阻礙你感到快樂。

下面我要分享我在這旅程中收穫的可以改進工作/生活平衡,並讓工作趣味盎然的一些內容。

讓堆疊滾吧!

熱愛你每天使用的工具自然是好的,特別是如果你已經使用了很長一段時間。總是搜尋讓自己感到舒服的東西是一種天性。但事實是,你現在正在使用的堆疊,並沒有你想象得那麼重要,下面我會告訴你原因。

大多數新的程式設計工具被構建來解決前人未能解決的具體問題。顯然,隨著時間的推移,我們試圖解決的問題會發生變化,從而使得工具生態系統很可能也發生變化,就像不斷進化的生命體會努力適應新的環境一樣。

我必須承認,我也很慚愧於忽略鋪天蓋地的宣傳,只願意舒舒服服地使用我久經沙場的工具。我也傾向於認為讓別人花時間經歷所有的痛苦一步一步往上爬地到達新技術,才能更有效地學習,然後當在未來的某個時候,如果新技術被證明是好的,那麼我自己採取的策略是快速掌握它。

雖然這些做法是完全可以理解的,但我在這裡要告訴你的是,這是愚蠢的做法。事實上,你應該做截然相反的事情。

我鼓勵你花時間去學習又新又閃亮的語言、框架、模式,不管什麼都好,因為那是你成長的方式。那也是你擴充知識的方式,也是使得工作變得令人愉快的地方。

因此,你應該堅持的一個非常重要的事情,是學習。挑戰自我去探索新的東西,正是這些使得生活和工作有了樂趣。

擁抱不舒服的狀態!

可能只是想想你需要搞定那麼一大堆的工作事務以跟上大家的節奏,你就已經覺得不舒服了。但其實,你不應該這樣想。

走出舒適區,進入未知領域是迄今為止最好的學習方法。堅持老一套不會教你很多你所不知道的內容。

你需要從不同的角度思考,你需要用不同的工具解決不同的問題,你需要擴充套件你的知識領域,你會享受於其中的每一分鐘。相信我。

不惜一切代價遠離壓力!

像那樣處於一種不舒服的狀態並試圖緊跟行業發展的速度,是有負作用的,因為每一天都會有數量龐大的新資訊洶湧而至。你常常會覺得白天沒有足夠的時間去做你想要做的一切事情。沒錯,這樣的確會讓你沒有充裕的時間做事。

不過真實的情況是這樣的,只有屈指可數的一些內容能夠在給定的任何時間激發你的熱情,並且如果你能集中注意力到那些事情上的話,那麼驟然之間,你會得到一個更易於管理的範圍。

我要與你分享的是我的範圍管理系統。這個系統基於GTD(Getting Things Done)方法和每日目標設定。

長期目標

我使用的主要的衡量單位是長期目標,這裡的長期目標指的是那些我想要在一段相當短的時間內完成的目標,時間範圍從幾天到幾周。

長期目標的一個例子是“閱讀《Javascript Pattens》”或“為UtmTag.com建立預訂系統”。這些都是長期的,因為很明顯你不可能一口氣做完。

如何定義長期目標的一個非常重要的方面是,有一種循序漸進的感覺。我的意思是每一個長期目標都有一個我可以明確的結束日期。

因此,長期目標不是“我要賺大錢”,因為沒有明確的方法來衡量這個過程和進展(我強烈建議閱讀David Allen寫的《Getting Things Done》這本書,如果你想要知道在實際中關於如何定義目標的話)。

在前面的例子中,我可以輕鬆地說,“好吧,這本書我已經看了有一半了,所以我完成了進度的X”,或者“我可以在一兩週內完成這個系統”。

在長期目標上取得進展是一個重要的激勵因素。因為如果不能衡量進度的話,我們很容易中途放棄。

每日目標

那些長期目標在展望巨集偉藍圖的時候很有用,但是除此之外,還有一個神奇的祕訣。要想每天都按照預先規劃前行,最重要的一個技巧是每天都有充足的動力去完成一部分長期目標。這就是為什麼我喜歡將長期目標聯合每日目標一起使用。

每日目標要小得多,正如其名,其範圍是一天。所以任何需要超過一天時間才能完成的任務都不是每日目標,不過可以通過再次細分使之成為每日目標。

如何定義每日目標甚至比定義長期目標更重要。你需要實際安排每天能完成的工作量,同時要考慮到一些你不能控制的事情,例如跑腿和其他事務。

我建議從很小的工作量開始(例如2H小時/天),看看自己能否在這個基礎上增加工作量而不會覺得不堪重負。

每日目標的一個例子是“在UtmTag.com上花2小時編碼”,其長期目標是“為UtmTag.com建立訂閱系統”,每日目標能夠使得我們靜下心來每天有一定的進展。

相比於長遠目標,這些每日目標似乎比較渺小,但是一點點累計起來並且當你再回過頭來看的時候,你會發現,咦,原來你的長期目標已經完成了一半。

自得其樂

曾經有段時間我希望時間能一直停留在週末,這樣我就不用回去上班了。也有一段時候,我迫不及待地數著假期結束,以便於回到工作崗位上。

那麼,為什麼會有兩種截然相反的心情呢?會出現第一種感受是因為你不得不做一些你不喜歡的事情,而第二種則是因為你興奮不已以致於沒有顧慮其他。

很明顯,第二種感情是我們大多數人所希望的,那麼我們可以做些什麼呢?我發現了興奮這種感情的一些特點,並且我正在試著融入我每一天的工作中。

什麼讓工作變得有樂趣?

在你考慮將樂趣融入到你的日常工作之前,你必須先定義對於你而言樂趣意味著什麼。

對我來說,樂趣是指通過完成我以前認為不可能的事情——歸咎於感知到的複雜——而實現的某種啟迪。

因此,挑戰自我去探索和學習新的東西,而不是工作於那些陳詞濫調的任務,使我更享受於我的工作。

這讓我明白了我應該少做那些沒有這種特點的工作,多做那些有這些特點的工作。

我享受的工作

當然,我享受的工作,別人可能會覺得難以苟同,這很正常。但是我依然想分享一些東西,這些東西讓我覺得自己像一隻快樂的小蜜蜂,你可以借鑑我的點子,製作出你自己的清單。

  • 工作於我自己的專案/思路
  • 工作於促使我學習的專案
  • 致力於開源
  • 探索新的程式設計技術
  • 探索新的程式語言
  • 磨礪我的編輯技巧
  • 擺弄我的編輯器配置

結論

請記住,你選擇做什麼樣的工作,其實就是選擇了什麼樣的生活和什麼樣的工作感受,這完全取決於你。所以,如果你想享受你的生活,那麼你酒應該喜歡上你的工作。

真心希望這篇文章能幫助你,並且我非常期待聽聽大家是如何改善工作/生活平衡的。

譯文連結:http://www.codeceo.com/article/10-years-of-programming.html
英文原文:Lessons Learned From 10 Years of Programming
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章