2019年快來了,送給每位程序員一份新年計劃清單

點擊關注加星標,江湖要事早知道css

一日之計在於晨,一年之計在於春,對於程序員來說,挑戰自我很重要。有創造力的以及技術性的休整是可行的。給本身的新年列個計劃清單,一塊兒在新的一年更好地成長吧!前端

 

進入真實生活程序員

 

程序員們過度沉迷於數碼設備,在數碼設備以外也別有一番天地。正則表達式

 

所以,在真實生活中的投資會帶來相對多的回報。算法

 

這裏有一個起步表,表中是真實生活中可供嘗試的活動。對於每一項活動,若是你真心付出一個月,你就再也不是一個新手(而是一個富有經驗的初學者):shell

 

  • 作飯編程

  • 遠足vim

  • 滑雪安全

  • 天文學服務器

  • 慢跑

  • 舉重

  • 木工

  • 武術

  • 跳舞

 

保持健康

 

程序員每每過着久坐不動的生活,所以咱們面臨着咱們職業帶來的特有健康挑戰。

咱們每每會忽視這些挑戰。

 

每一年,花一整月的時間,調整你的鍛鍊、飲食以及環境,來培養持久的健康習慣。

每一年去一次診所,測量血壓、膽固醇以及血糖。觀察這些數值是怎樣隨時間而變化的。

 

若是你的手腕開始疼痛或者已經疼了一段時間了,如今就停下來,採起措施,預防重複性勞損(RSI)。

 

把目標放在改進姿式上,重點關注肩膀和脖子。我使用姿式糾正帶:

 

 

(對,它對男人也適用)

 

跟蹤體重、卡路里攝入以及卡路里消耗。若是必要的話,改變生活方式,來培養更健康的飲食和減肥方法。

 

若是你原本就很健康,就考慮一年的結協力量和肌肉的實驗吧。

在過去的幾個月,我一直在試着使用能夠將桌子改造爲站立式辦公桌的附件,我不只在心靈上,並且在身體上都有新鮮感。

 

 

我估計我站一天能多消耗360卡路里,然而我以爲它的做用還不止這些。由於站立讓我整體上活動得更多了。我發現,相比於坐着,個人注意力在站着時更加集中。

 

跳出溫馨區

 

從我 20 歲出頭起,我觀察比我年長的同伴,嘗試發現爲何有些人停滯不前,而另一部分人一直精力充沛。

 

答案是溫馨。

 

溫馨致使技術僵化。

 

一個系統,它能正常爲咱們服務,並且咱們一直在堅持使用它。

 

可是,技術在進步,那些侷限於溫馨的人絕對認識不到這些進步的益處。

 

慣例之因此變爲溫馨的,是由於它原來就是不溫馨的。

 

清單中的事情,可能讓你在剛開始感到不舒服:

 

  • 換成德沃夏克鍵盤。

  • 從 emacs 編輯器轉化到 vim 編輯器或者反過來。

  • 中止使用鼠標。

  • 使用不一樣的窗口管理器。

  • 從奶油和糖轉變爲不加牛奶的咖啡或者不通過調味的茶。

  • 花一整個月的時間試試『流行新垃圾』。

  • 每週關掉手機一天。

  • 學習使用單手輸入設備。

  • 嘗試使用不一樣的操做系統。

  • 對於一個小項目,嘗試不一樣的版本控制系統。

  • 每週強制斷網一天。

  • 試試飲食上的約束:純素食主義、素食主義、不含奶類等等。

  • 天天吃一種你不喜歡的食物。

  • 少用有利手臂(dominant arm)。

  • 學習用非利手(non-dominant hand)寫字。

  • 開始寫博客。

  • 報名參加公衆演講。

  • 聽一種你並不喜歡的音樂一個月。

  • 在醫院或退休之家作志願服務。

  • 一週禁食一次。

  • 去一個用不一樣語言或者有不一樣文化的國家。

  • 從你不喜歡的種類裏選讀一本廣受歡迎的小說。

  • 從你不喜歡的種類裏選觀一部備受推崇的電影或片子。

  • 學會開手動檔汽車。

  • 質疑一些你相信的事。

 

作一些不同的事情,一個月以後,決定是否想繼續這樣作,或者看看能不能找到這樣的方法,能把新事物和舊事物最好的東西融合起來。

 

舉個例子,當用了 10 年的 emacs 轉用 vim 時,在插入模式下,我設置了 emacs 風格的快捷鍵,可是我用的編輯器是 vim 。

 

更新:讀者 Shae Erisson 爲欣然接受不溫馨續寫了『3 的規則』:當已經有3我的推薦你嘗試同樣東西的話,你必須嘗試一下。

 

他還給出了一個『 15 分鐘規則』:給某個東西(好比一部電影或電視節目) 15 分鐘的評判時間。若是你在 15 分鐘以後不想繼續下去了,就放棄它。

 

這兩條規則我都喜歡。

 

學習一門新的編程語言

 

編程語言起起落落。

 

只懂一門語言的程序員,他們解決問題的能力和事業前景會受侷限。

 

用它寫一個不大的程序。

 

這裏有一些非主流的可供學習的語言:

 

  • Racket.

  • Haskell.

  • Rust.

  • Scala.

  • Erlang.

  • Clojure.

  • SML/NJ.

  • OCaml.

  • Squeak.

  • Prolog.

  • Datalog.

  • miniKanren.

 

若是你有足夠勇氣,試一試依賴類型(dependently-typed)編程語言或者定理證實系統(theorem-proving systems):

 

  • Agda.

  • Coq.

  • Idris.

 

若是你沒有編程語言能夠去學了,本身發明一個。

 

自動化

 

程序員具有的最有力而未被利用的技能就是,使虛擬和現實自動化的能力。

 

若是你歷來沒作過機器人的話,作一個吧。

 

至少玩玩樂高頭腦風暴機器人吧:

 

 

或者玩玩 Arduino 板或樹莓派:

觀察你作的平常活動,而後決定哪些能所有或者部分自動化。

 

家庭自動化技術很是發達,藉助 DIY 系統,例如 Insteon,不少東西都成爲可能。

花一個月的時間來作一個自動化的項目:

 

  • 調優你的郵件過濾器或者安裝 procmail。

  • 設置 shell 腳本,自動化常常性的操做。

  • 新建一個 shell 腳原本幫助你寫做。

  • 學習怎樣使用 cron 工具。

  • 把壁櫥的燈和運動檢測器鏈接在一塊兒。

  • 在可能的地方用無線代替有線。

  • 中止手動同步:把它移到雲端。

  • 安裝遠程聲控系統。

  • 用你的服務器來控制你的恆溫器。

  • 安裝數碼安全攝像頭。

  • 作一個內線通話系統或者嬰兒監視器。

  • 讓你的咖啡機自動打開。

  • 爲寵物安裝自動加水的盤子。

  • 作傳感器控制的寵物門。

  • 破解 Roomba,讓它成爲快遞員。

 

多學點數學

 

計算機科學是一門與數學相關的學科。

 

成爲好的程序員的前提是成爲好的數學家。

 

不要讓你的數學才能消失。

 

考慮每一年花一個月時間溫習這些主題中的一個:

 

  • 邏輯學。

  • 離散數學。

  • 微積分。

  • 機率論。

  • 統計學。

  • 抽象代數。

  • 數論。

  • 範疇論。

  • 序理論。

 

專一於安全

 

極少數的程序員有好的安全習慣。

 

若是你在乎本身的電子信息安全,你將會更在乎本身代碼的安全性。

 

檢查一下,在每一個網站上,你是否在用獨特、複雜的密碼?

 

用加密的密碼管理器管理你的密碼,例如 PasswordSafe 或者 KeePassX。

 

若是你還沒習慣全盤加密,那麼抽出時間作一下。(在 Mac 機上,設置它不難。)

每一年,研究一下過去12個月的高危漏洞。他們是怎樣發生的?什麼樣的編程習慣可以防止這些問題在你的代碼中出現?

 

這裏是你能夠嘗試的其餘安全任務:

 

  • 學習 SSH 還能作什麼。

  • 在 Apache 上安裝 SSL 安全證書。

  • 實現一個加密系統,例如 RSA 或者 AES。

  • 嘗試破解你的無線網絡的密鑰。

  • 用 WireShark 嗅探你的網絡交通。

  • 設置無需密碼、基於密鑰的 ssh 登陸。

  • 本身運行 nmap。配置你的防火牆。

  • 設置端口敲門(port-knocking)。

  • 作一個加密的 U 盤。

  • 安裝日誌文件監視器。

  • 設置 cron 做業(cronjob)來規律地更新軟件包。

 

 

備份你的數據

 

每一年,花時間來反思你的備份策略。

 

用一個月的時間,最小化作備份的成本。

 

(我最近把個人不少工做文件放到了 Copy 裏,它是一個靈巧的類 DropBox 應用,有比 DropBox 更多的免費存儲空間。經過這個推薦連接來獲得多餘的 5 GB。)

 

選擇容災方案:爲每臺電腦指派單獨硬盤,藉助像 Time Machine 的工具,打開自動備份。

 

用版本控制來管理關鍵文件,將他們存儲在異地服務器中。

 

多學點理論

 

計算機科學有着豐富的理論結構。

 

跟上新進展,複習你已經掌握的經典理論。

 

每一年花一個月,學習相似下面的理論:

 

  • 形式語言。

  • 自動機和可計算性理論。

  • 複雜度理論。

  • 形式化方法。

  • 語義學。

  • 算法和數據結構。

 

對於初學者,你可能想看看這些帖子:

 

  • 用 Haskell 語言寫 CEK 形式的(或者語義學上的)解釋器。

  • 用推導來進行語法分析。

  • 被遺忘的方法:怎樣從 Okasaki 的紅黑樹中刪除元素。

  • 用推導的方法,使用 Scheme 語言對正則表達式進行模式匹配。

  • 將正則表達式轉化爲非肯定有限狀態自動機(NFA)。

 

對藝術和人文學科有所涉獵

 

工程師每每輕視藝術。

 

工程師沒有意識到的是,藝術和人文成就了卓越的技術。

 

史蒂文 · 喬布斯喜歡指出聯繫技術和人文的重要性,並且真的是這樣。

 

不要對這些理論一無所知。

 

藝術和人文訓練直覺,而且使其變得敏銳。這個過程是以一種很難量化的方式進行的。然而這種直覺對於在量化領域中工做的咱們來講,是必要的。

 

工程師須要學習怎樣度量他們不能計算的東西,而不是隻計算他們能度量的東西。

每一年至少花一個月,多學學相似下面的理論:

 

  • 工業設計。

  • 哲學。

  • 攝影。

  • 繪畫。

  • 寫生。

  • 音樂和音樂理論。

  • 電影。

  • 文學。

 

社會科學也對計算機科學有不少貢獻。具體來講的話,試試經濟學和心理學。

 

學習新軟件

 

要爲你本身的軟件得到靈感,一個好的方法就是,學習一個或一類新應用。

舉個例子,若是你歷來沒有用過 3D 建模工具,試試 Blender。

 

或者,若是你歷來沒學過 LaTeX,真心地付諸一試。

 

在你學習的過程當中,把你喜歡的和不喜歡的東西都記錄下來。

 

捫心自問,這些觀察是否反映到了你創造的軟件中?

 

在你本身的做品中指出壞毛病很難,但給別人的做品挑毛病就很容易。

 

每一對父母的孩子都是漂亮的。

 

學會認識本身醜陋的小孩。

 

完成一個我的項目

 

若是你成天老是爲別人寫代碼,就要記住,程序員之因此成爲程序員,是由於他爲本身寫程序。

 

每一年把一個月的時間花在你本身選擇的項目上。

 

實現那個項目的核心部分。

 

使其開源,將它發佈到世界。

 

 

 

 

 

 

 

 

 

往期精彩回顧

從Java小白到收穫BAT等offer,分享我這兩年的經驗和感悟

GitHub 上四萬 Star 大佬的求職回憶

程序員依然是這個時代,貧寒學子翻身的不二選擇


 程序員江湖裏有什麼?

1.做者是收穫BAT頭條等大廠研發offer求職老司機,後臺回覆「少俠」能夠得到個人微信,歡迎和我交流技術學習和求職心得。

 

2.天天早上九點分享一篇關於程序員成長與生活的文章,包括但不限於:求職攻略、學習方法、技術乾貨、成長感悟等方面的內容。

 

3.後臺回覆「資料」便可得到3T海量學習資料,資料涵蓋各個技術方向,包括Java、C++、前端、大數據、移動開發等方向。對於每一個方向,都包含了基礎、進階、求職等部份內容。

相關文章
相關標籤/搜索