程序員從入門到精通

之前寫了篇 《程序員、技術(shù)主管和架構(gòu)師》,有讀者留言說:“希望能寫寫前期階段程序員的發(fā)展經(jīng)歷?!?收到這個問題后確實引發(fā)了我的一些回憶和思考,回想如果讓我再重走一遍過來的路,在哪些方面還需要去改善呢?

另一篇文章 《程序員的成長階梯和級別定義》 描述了程序員的成長發(fā)展階段,這篇回答了 What,但并沒有提及如何去做才能更好更快的發(fā)展成長,所以本篇借用了一個大家耳熟能詳?shù)拿Q模式,從一個稍微高一層的抽象維度來回答 How 的問題。

定位

還記得當(dāng)初為什么選擇程序員這個職業(yè)么?如今程序員所在的行業(yè)處于發(fā)展上升期,薪酬待遇整體高于傳統(tǒng)行業(yè),所以各類程序員培訓(xùn)機(jī)構(gòu)如雨后春筍,流水線般的為各類只差程序員的公司批量供應(yīng),這樣的批量生產(chǎn)似乎有點把程序員當(dāng)成了工廠的工人。

而程序員的工作實際更貼近于工匠,既有創(chuàng)造性的工藝性工作,也有模式化的工程性工作。想清楚自己成為程序員的初衷是什么?只是為了進(jìn)入一個相對高薪的行業(yè),得到一份工資高于平均水準(zhǔn)的工作?這樣終究是走不了太遠(yuǎn)的。

很多入門程序員都是剛從學(xué)校畢業(yè)的,曾記得在吳多益(@nwind)的一篇工程師成長分享的材料上,如是說:

從小到大的教育,我們習(xí)慣性被安排:“課后作業(yè)是 X1、X2,后天必須交”,“本學(xué)期的必修課有 XX、YY,必選的選修課有 ZZ、WW”
十幾年來你都是這樣度過的,但現(xiàn)在你已經(jīng)不在學(xué)校了,你要安排你的未來。

剛?cè)肼殘龅某绦騿T依然保持這個習(xí)慣,等著主管安排,工作就是完成主管安排的任務(wù)嗎?好吧,這只是工作的一部分。如果你每天的工作就只是完成被安排好的任務(wù),那么你自己的成長就會非常的慢,因為主管安排任務(wù)并沒有那么多的精力來考慮任務(wù)是否適合個人的成長發(fā)展。這些任務(wù)是組織發(fā)展的需要,而不一定適合個人的發(fā)展,但組織是付了薪酬來讓你完成任務(wù)的,所以這是工作的必需部分。

自己才是職業(yè)生涯的管理者,想清楚自己的發(fā)展路徑:遠(yuǎn)期的理想是什么?近期的規(guī)劃是什么?而今日的任務(wù)和功課又是什么?今日之任務(wù)或功課哪些有助于近期之規(guī)劃的實現(xiàn),而近期之規(guī)劃是否有利于遠(yuǎn)期之理想?

今日除了任務(wù)為什么還有功課?功課是學(xué)校里的概念,職場里沒有。所以離開學(xué)校進(jìn)入職場的功課都是自己給自己安排的。任務(wù)來自主管的安排,功課來自自己的安排。很多時候我們只去完成任務(wù)卻從未給自己安排功課,而等著被安排和主動安排,在未來將產(chǎn)生巨大的差別。

一開始我們可能只有模糊的遠(yuǎn)期理想,也沒那么清晰的近期規(guī)劃,但一定要有足夠清晰明確的今日任務(wù)和功課,即使在你的主管因為各種原因沒給你安排的情況