傳統印象中程序員就只會碼代碼,那么程序員需要學什么才能讓自己的生活充實豐富起來,一年之計在于春,對于程序員而言,自我挑戰很重要,有創造力、技術性的調整是可行的,給自己列個計劃清單,一起更好的成長吧!
進入真實生活
程序員們過分沉迷于數碼設備,在數碼設備之外也別有一番天地。因此,在真實生活中的投資會帶來相對多的回報。
這里有一個起步表,表中是真實生活中可供嘗試的活動。對于每一項活動,如果你真心付出一個月,你就不再是一個新手:
做飯
遠足
滑雪
天文學
慢跑
舉重
木工
武術
跳舞
保持健康
程序員往往過著久坐不動的生活,因此我們面臨著我們職業帶來的特有健康挑戰。我們往往會忽視這些挑戰:
每年,花一整月的時間,調整你的鍛煉、飲食以及環境,來培養持久的健康習慣;
每年去一次診所,測量血壓、膽固醇以及血糖。觀察這些數值是怎樣隨時間而變化的;
如果你的手腕開始疼痛或者已經疼了一段時間了,現在就停下來,采取措施,預防重復性勞損(RSI);
跟蹤體重、卡路里攝入以及卡路里消耗。如果必要的話,改變生活方式,來培養更健康的飲食和減肥方法。
跳出舒適區
從我 20 歲出頭起,我觀察比我年長的同伴,嘗試發現為什么有些人停滯不前,而另外一部分人一直精力充沛。
答案是舒適。舒適導致技術僵化。
一個系統,它能正常為我們服務,而且我們一直在堅持使用它。但是,技術在進步,那些局限于舒適的人絕對認識不到這些進步的益處。
清單中的事情,可能讓你在剛開始感到不舒服:
換成德沃夏克鍵盤。
從 emacs 編輯器轉化到 vim 編輯器或者反過來。
停止使用鼠標。
使用不同的窗口管理器。
從奶油和糖轉變為不加牛奶的咖啡或者不經過調味的茶。
花一整個月的時間試試『流行新垃圾』。
每周關掉手機一天。
學習使用單手輸入設備。
嘗試使用不同的操作系統。
對于一個小項目,嘗試不同的版本控制系統。
每周強制斷網一天。
試試飲食上的約束:純素食主義、素食主義、不含奶類等等。
每天吃一種你不喜歡的食物。
少用有利手臂(dominant arm)。
學習用非利手(non-dominant hand)寫字。
開始寫博客。
報名參加公眾演講。
聽一種你并不喜歡的音樂一個月。
在醫院或退休之家做志愿服務。
一周禁食一次。
去一個用不同語言或者有不同文化的國家。
從你不喜歡的種類里選讀一本廣受歡迎的小說。
從你不喜歡的種類里選觀一部備受推崇的電影或片子。
學會開手動檔汽車。
質疑一些你相信的事。
做一些不一樣的事情,一個月之后,決定是否想繼續這樣做,或者看看能不能找到這樣的方法,能把新事物和舊事物最好的東西融合起來。
程序員需要學什么?很多人認為還需要學習一門新的編程語言
編程語言起起落落。
只懂一門語言的程序員,他們解決問題的能力和事業前景會受局限。用它寫一個不大的程序。這里有一些非主流的可供學習的語言:
Racket.
Haskell.
Rust.
Scala.
Erlang.
Clojure.
SML/NJ.
OCaml.
Squeak.
Prolog.
Datalog.
miniKanren.
如果你沒有編程語言可以去學了,自己發明一個。
自動化
程序員具備的最有力而未被利用的技能就是,使虛擬和現實自動化的能力。
如果你從來沒做過機器人的話,做一個吧。
至少玩玩樂高頭腦風暴機器人吧:
或者玩玩 Arduino 板或樹莓派:
觀察你做的日常活動,然后決定哪些能全部或者部分自動化。
家庭自動化技術非常發達,借助 DIY 系統,例如 Insteon,很多東西都成為可能。
花一個月的時間來做一個自動化的項目。
多學點數學
計算機科學是一門與數學相關的學科。成為好的程序員的前提是成為好的數學家。不要讓你的數學才能消失。
考慮每年花一個月時間溫習這些主題中的一個:
邏輯學。
離散數學。
微積分。
概率論。
統計學。
抽象代數。
數論。
范疇論。
序理論。
備份你的數據
每年,花時間來反思你的備份策略。用一個月的時間,最小化做備份的成本。
選擇容災方案:為每臺電腦指派單獨硬盤,借助像 Time Machine 的工具,打開自動備份。
用版本控制來管理關鍵文件,將他們存儲在異地服務器中。
多學點理論
計算機科學有著豐富的理論結構。跟上新進展,復習你已經掌握的經典理論。
每年花一個月,學習類似下面的理論:
形式語言。
自動機和可計算性理論。
復雜度理論。
形式化方法。
語義學。
算法和數據結構。
對于初學者,你可能想看看這些帖子:
用 Haskell 語言寫 CEK 形式的(或者語義學上的)解釋器。
用推導來進行語法分析。
被遺忘的方法:怎樣從 Okasaki 的紅黑樹中刪除元素。
用推導的方法,使用 Scheme 語言對正則表達式進行模式匹配。
將正則表達式轉化為非確定有限狀態自動機(NFA)。
對藝術和人文學科有所涉獵
工程師往往輕視藝術。工程師沒有意識到的是,藝術和人文成就了卓越的技術。
藝術和人文訓練直覺,并且使其變得敏銳。這個過程是以一種很難量化的方式進行的。然而這種直覺對于在量化領域中工作的我們來說,是必要的。
每年至少花一個月,多學學類似下面的理論:
工業設計。
哲學。
攝影。
繪畫。
寫生。
音樂和音樂理論。
電影。
文學。
完成一個個人項目
如果你整天總是為別人寫代碼,就要記住,程序員之所以成為程序員,是因為他為自己寫程序。
每年把一個月的時間花在你自己選擇的項目上。實現那個項目的核心部分。使其開源,將它發布到世界。程序員需要學什么,看完相信大家會有一些新的感悟,學會了更多東西,程序員的人生會更加豐富多彩。