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