一個(gè)程序員的自我修養(yǎng)

最近讀一本神書(shū) 我編程,我快樂(lè),書(shū)名很土,內(nèi)容卻異常精彩。原書(shū)名 - The Passionate Programmer:Creating A Remarkable Career In Software Development ,或許叫 成為大師之路 應(yīng)該更賣(mài)座。能讀到如此良心的小書(shū),感覺(jué)分分鐘的收獲都是賺了幾百美金!

全書(shū)分為5大章

  1. 選擇市場(chǎng)
  2. 在產(chǎn)品上投資
  3. 執(zhí)行
  4. 推銷(xiāo)
  5. 保持技術(shù)領(lǐng)先

共53節(jié),每個(gè)小節(jié)都提出一個(gè)觀(guān)點(diǎn)或建議。最重要的是給出練習(xí)指導(dǎo),讓我們能動(dòng)手實(shí)踐、吸收觀(guān)點(diǎn)。所謂 知道了很多道理,卻依然過(guò)不好這一生。,最根本的原因就是 紙上得來(lái)終覺(jué)淺,絕知此事要躬行。

于是,我把53條總結(jié)成最重要的7條,指導(dǎo)以后的實(shí)踐。(為啥是7條呢,其實(shí)沒(méi)啥原因,我寫(xiě)個(gè)10條也可以。只不過(guò)寫(xiě)完7條,我就寫(xiě)不動(dòng)了)

1 - 練習(xí),練習(xí)再練習(xí)

刻意練習(xí) (豆瓣) 是最近特別火的概念。核心思想就是

  • 在極限處練習(xí),跳出舒適區(qū)。尋找不熟練的部分,不斷地練習(xí)練習(xí)再練習(xí)。
  • 重點(diǎn)聯(lián)系一個(gè)又一個(gè)的片段,而非重復(fù)哪些已經(jīng)掌握的部分或是整體。所以,如何練習(xí)也是刻意練習(xí)的重要一環(huán)。

一些小練習(xí):

  • 在github尋找一個(gè)感興趣的開(kāi)源庫(kù)??纯碩odo list、尋找bug、改善文檔等等,然后提交一個(gè)PR。這就是貢獻(xiàn)開(kāi)源庫(kù)的一個(gè)良好開(kāi)端。
  • 關(guān)注工作中的一個(gè)難點(diǎn),比如一個(gè)很難修的bug。記錄下自己是怎么處理的。然后精進(jìn)自己這方面的能力。
    • 我是怎么重現(xiàn)bug的?
    • 我是怎么定位bug所在的代碼?
    • 用了哪些工具,哪些工具好用,哪些我不熟練。
    • 遇到了什么困難?為什么會(huì)卡在那里?我又是如何解決的。
    • 什么時(shí)候我該尋求幫助了?尋求幫助的途徑又有哪些?
    • 下一次遇到了類(lèi)似的問(wèn)題我該怎么辦?可以如何改進(jìn)。
  • 編寫(xiě)一個(gè)很難卻又精巧的小程序。比如在 Topcoder 、Code Kata 。進(jìn)一步的挑戰(zhàn),可以把程序的行數(shù)限制在100,再看看能不能解決問(wèn)題。
  • 選擇一本軟件開(kāi)發(fā)方法論的書(shū)。研究這個(gè)方法例如這個(gè)方法論的優(yōu)劣,結(jié)合工作看看能不能運(yùn)用。例如 - 敏捷軟件開(kāi)發(fā) (豆瓣)
  • 選擇一個(gè)小項(xiàng)目,閱讀源碼。做好筆記,列出優(yōu)劣,寫(xiě)寫(xiě)想法。
  • 檢驗(yàn)學(xué)習(xí)成果最好的方法就是講給別人聽(tīng)。嘗試講給朋友聽(tīng)、嘗試當(dāng)眾演講、講給外行聽(tīng)。

2 - 學(xué)習(xí)技術(shù)

技術(shù)永遠(yuǎn)是程序員熱愛(ài)的話(huà)題,但技術(shù)是永遠(yuǎn)學(xué)不完的。如何運(yùn)用有限的時(shí)間,去學(xué)習(xí)無(wú)限的技術(shù)是個(gè)學(xué)問(wèn)。這也是以后是 rest and vest 還是繼續(xù)苦逼寫(xiě)代碼的問(wèn)題。

這里,我們可以做一個(gè)練習(xí)。拿出一張A4紙,從左往右列出最新到最老的技術(shù),觀(guān)察它們的關(guān)聯(lián)。標(biāo)記出自己擅長(zhǎng)的、不精通的、完全不知道的。然后去一些技術(shù)網(wǎng)站、招聘網(wǎng)站,看看現(xiàn)在需要的技術(shù)是哪些。列出這些技術(shù)的優(yōu)劣。選出想要學(xué)習(xí)的前幾門(mén)技術(shù),每周最少花2個(gè)小時(shí),大致去了解一下這門(mén)技術(shù)。

當(dāng)我們對(duì)這些技術(shù)有了大致的了解,就可以更理性、更有依據(jù)地去學(xué)習(xí)下一門(mén)技術(shù)。

另外,當(dāng)我們學(xué)習(xí)技術(shù)時(shí)。光使用是不夠的,我們應(yīng)該想想它的底層是怎么工作的。例如,當(dāng)用Java時(shí),了解Java的虛擬機(jī)是怎么運(yùn)行的;使用C++時(shí),了解程序是如何編譯、鏈接、運(yùn)行的;動(dòng)態(tài)語(yǔ)言和靜態(tài)語(yǔ)言的各自?xún)?yōu)劣;使用一個(gè)框架的時(shí)候,了解一下這個(gè)框架是如何運(yùn)作的,讀讀它的源碼。

3 - 了解你的公司,業(yè)務(wù)和行業(yè)

程序員不能只寫(xiě)代碼。代碼說(shuō)到底,只是一種工具、手段或者技術(shù)。它所要實(shí)現(xiàn)的目的才是關(guān)鍵。我們可以常常問(wèn)自己一些代碼以外的問(wèn)題,例如:

  • 我的公司是干什么的?
  • 競(jìng)爭(zhēng)對(duì)手有哪些?
  • 在行業(yè)的地位?
  • 公司的財(cái)務(wù)情況怎么樣?
  • 品牌形象
  • 盈利模式
  • 現(xiàn)在面臨的挑戰(zhàn)是什么?
  • 這個(gè)行業(yè)正在為什么目標(biāo)努力?
  • 有什么新鮮事最近在這個(gè)行業(yè)發(fā)生?
  • 有哪些可以提高公司的盈利、改善品牌形象、拓展新業(yè)務(wù)、改善流程等等
  • 除了程序員的工作模式。我了解 designer、data scientist、pm、manager是怎么工作的嗎?
  • 這里有一本不錯(cuò)的小書(shū),讓我們可以學(xué)習(xí)一下商業(yè)知識(shí) - Ten days’ MBA

4 - 計(jì)劃、記錄和反思

有沒(méi)有覺(jué)得一天不知不覺(jué)就過(guò)去了,也不知道時(shí)間用在哪里了。這里,引入了一個(gè) 三步走的工作方法:

計(jì)劃

每天早晨計(jì)劃一下今天要做的事,然后給每件事算一下要用多少時(shí)間,如果一件事大到要2個(gè)小時(shí)以上,那就可以把它分解為更小的任務(wù)。

人總是喜歡做更容易,更快能看到成果的事。這也就是為什么長(zhǎng)遠(yuǎn)而重要的事,我們總是不愿去做。并非我們不知道它的重要,只是它太過(guò)抽象、巨大,以至于我們體驗(yàn)不到能即刻做完之后的成就感。

所以,要盡量把大的目標(biāo)分解成小而容易的任務(wù)。這樣我們就更有動(dòng)力去完成。

記錄

對(duì)于時(shí)間的記錄,可以幫助我們?cè)谝惶斓淖詈笥行У胤此肌?duì)于時(shí)間的如實(shí)記錄很無(wú)聊,但也是最有效能看清時(shí)間去哪兒了。

曾經(jīng)有一個(gè)近乎變態(tài)的時(shí)間記錄者,一做就是一輩子。然而他記錄時(shí)間之精確讓人咋舌。 奇特的一生 (豆瓣)

反思

經(jīng)過(guò)一天,做一個(gè)快速的反思是對(duì)工作有效地復(fù)盤(pán)。想想這些問(wèn)題:

  • 今天我做了什么?這些任務(wù)的意義在哪里?
  • 有哪些可以改進(jìn)的?
  • 我把時(shí)間用在了哪里?明天可以改進(jìn)時(shí)間的使用效率嗎?
  • 有哪些完成了?有哪些沒(méi)有完成?為什么完成/沒(méi)有完成?我一天大概可以完成多少任務(wù)?
  • 我如何不斷改進(jìn)這個(gè)一天的流程?

如何計(jì)劃
這里有一個(gè)不錯(cuò)的時(shí)間管理方法 - 番茄工作法 其基本思想就是:

  • 把每個(gè)任務(wù)分成25分鐘,容易記錄。
  • 更容易讓人在番茄時(shí)間集中精力 - 這也間接完成了本書(shū)作者提倡的每天 8小時(shí)激情燃燒 理論

記錄的另一個(gè)好處
如何避免恐慌,應(yīng)對(duì)焦慮。這是個(gè)有意思的話(huà)題,其實(shí)或多或少現(xiàn)在的程序員或者工作的人都會(huì)有。對(duì)于未來(lái)的不確定、對(duì)于快節(jié)奏的恐慌、對(duì)于時(shí)間流逝的焦慮。

適當(dāng)?shù)膲毫徒箲]反而能讓人更有創(chuàng)造力、效率更高。那么如何去應(yīng)對(duì)呢?吳曉波(財(cái)經(jīng)作家)_百度百科 說(shuō)去工作,努力地工作!這是從高處給了答案。本書(shū)作者在給出了一個(gè)實(shí)用方法。記錄你的恐慌,或者叫恐慌/反思日記。

很多事情當(dāng)時(shí)看來(lái)是災(zāi)難性的,但過(guò)了些時(shí)候再回顧,不過(guò)就是人生中一個(gè)很小的漣漪。我們可以想想一周前那件讓我們恐慌和焦慮的事、一個(gè)月前呢、一年前呢。所以,大部分我們認(rèn)為的災(zāi)難并沒(méi)有那么糟。

那么,知道了這點(diǎn)就能克服恐慌了嗎?很抱歉,還是不能。因?yàn)槿瞬皇峭耆硇缘兀栽谖C(jī)來(lái)臨時(shí),我還是會(huì)照樣束手無(wú)措,因?yàn)槲宜麐屚松洗挝沂窃趺刺幚淼?、又或者每次恐慌都不一樣。我還是繼續(xù)恐慌和焦慮。

這時(shí),一個(gè)有效的辦法是記錄下自己的恐慌情緒、當(dāng)時(shí)的反應(yīng)和處理方式等等。然后過(guò)一天,一周,一個(gè)月,一年再去回顧、去反思、去復(fù)盤(pán)??纯次覀冇龅竭@種類(lèi)似的情況該怎么應(yīng)對(duì),從過(guò)去的經(jīng)驗(yàn)學(xué)習(xí)。當(dāng)我們抽離了當(dāng)時(shí)的恐慌情緒而直面問(wèn)題本身的時(shí)候,我們會(huì)怎么辦?再加上,有了未來(lái)(相對(duì)于過(guò)去的恐慌)的后驗(yàn)知識(shí),我們可以總結(jié)更好地應(yīng)對(duì)之法。慢慢地,我們發(fā)現(xiàn)其實(shí)和恐慌相處不會(huì)那么難了。

5 - 未雨綢繆

永遠(yuǎn)不要高枕無(wú)憂(yōu),跳出舒適區(qū)。

互聯(lián)網(wǎng)技術(shù)發(fā)展得太快了,所以沒(méi)有什么是永遠(yuǎn)存在的。今天用的技術(shù)可能過(guò)幾年就過(guò)時(shí)了,永遠(yuǎn)要保持學(xué)習(xí)之心、好奇之心。對(duì)于新技術(shù)要能明銳的感知,當(dāng)它來(lái)臨時(shí),努力成為開(kāi)拓者。比如最近的AI first潮流,很明顯 Google的 TensorFlow 已經(jīng)成為了一個(gè)準(zhǔn)未來(lái)AI框架。

同時(shí),想想如果明天就去面試,我現(xiàn)在做的事有多少競(jìng)爭(zhēng)力。

  • 我的項(xiàng)目的impact / metric 在哪里?
  • 我項(xiàng)目的挑戰(zhàn)在哪里?
  • 我在項(xiàng)目中起到了什么作用?
  • 我最近在成長(zhǎng)嗎?
  • 我準(zhǔn)備好隨時(shí)就能離開(kāi)現(xiàn)在的公司嗎?還是被公司的框架和工具困住了?
  • 我到底在為誰(shuí)工作?為公司嗎?還是為自己?
  • 不要只把自己放在一個(gè)公司去考慮問(wèn)題,要把自己放到一個(gè)行業(yè)里。想想自己在行業(yè)中,現(xiàn)在的競(jìng)爭(zhēng)力怎么樣?
  • 從更長(zhǎng)遠(yuǎn)來(lái)說(shuō),我要一輩子都為一家又一家的公司打工嗎?我的終極目標(biāo)是什么?為了這個(gè)終極目標(biāo),我該做什么?我又缺少什么?

6 - 推銷(xiāo)自己

走出你的項(xiàng)目組、你的公司。去推銷(xiāo)你自己。這在這個(gè)互聯(lián)網(wǎng)的時(shí)代變得異常容易:

  1. 把你的想法寫(xiě)出來(lái),發(fā)到網(wǎng)上去
  2. 參加聚會(huì)
  3. 演講

要變得卓越有兩種方法

  1. 成為你這個(gè)領(lǐng)域的top 1%
  2. 成為你這個(gè)領(lǐng)域的top 20%,然后在另外一個(gè)領(lǐng)域也是20%。之后你把兩個(gè)領(lǐng)域的技能結(jié)合起來(lái)。

而第2種方法要容易的多。

我發(fā)現(xiàn)對(duì)于程序員,寫(xiě)作和演講成為變得卓越屢試不爽的方法之一,而且成本低廉。池建強(qiáng) 、羅永浩(錘子科技創(chuàng)始人)_百度百科馮大輝_百度百科 都是很好的例子。

一周狀態(tài)報(bào)告,讓你的老板更了解你。我記得以前有個(gè)同事每周都給老板發(fā)一周工作總結(jié)。這樣老板清楚地知道了他在干什么,在寫(xiě)performance review的時(shí)候也有據(jù)可循。從此以后,我也就養(yǎng)成了這個(gè)習(xí)慣??赡苊恐芤嗷ò胄r(shí),但好處也是顯而易見(jiàn)的。

  • 對(duì)于自己工作的總結(jié)。不但對(duì)老板有交代,而且對(duì)自己干了什么也更清晰。
  • 沒(méi)有哪個(gè)老板會(huì)不讓你寫(xiě)吧。既然沒(méi)有壞處,好處呢就是 >= 0的。

這個(gè)總結(jié)報(bào)告,其實(shí)也是寫(xiě)作的一種??梢援?dāng)做一種寫(xiě)作的聯(lián)系。

在這個(gè)互聯(lián)網(wǎng)的時(shí)代,讓你的文字成為你的標(biāo)識(shí),讓你的名字成為你的品牌。

7 - 沒(méi)有終點(diǎn)的旅程

或者說(shuō)這趟旅程的終點(diǎn)就是到你死

李開(kāi)復(fù):人類(lèi)很多工作會(huì)被取代,只剩下兩類(lèi)-鳳凰國(guó)際智庫(kù) ,為了不被取代,最好的辦法就是 學(xué)習(xí)學(xué)習(xí)再學(xué)習(xí),思考思考再思考 。 保持危機(jī)感、保持好奇心、保持創(chuàng)造力。學(xué)習(xí)去跨界,把兩個(gè)領(lǐng)域的知識(shí)結(jié)合起來(lái)。

你我都身處這個(gè)時(shí)代的洪流之中,時(shí)代太快了,我們注定是回不到一生只夠愛(ài)一人的從前了。所以,要不就被時(shí)代所棄,要不就跑得比這個(gè)時(shí)代更快。

最后,引用 了不起的蓋茨 的結(jié)束語(yǔ):明天我們將跑得更快,手臂伸得更遠(yuǎn)。于是,我們奮力拼搏,好比逆水行舟,超越極限。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容