1. 程式人生 > >工程師成長之路:工作1-3年工程師如何突破瓶頸期?

工程師成長之路:工作1-3年工程師如何突破瓶頸期?

因為當年CSDN仍然具有較大的影響力, 所以, 這篇文章及專訪, 當時比較熱門. 有非常多的評論, 截止目前(2016.09.28), 兩個連結下, 總共有1262條評論.

有很多支援的朋友, 有很多反對的朋友, 也有很多隻看到”薪資”的朋友, 我並沒有做過正面的迴應, 因為, 我相信, 那篇文章, 一定會幫助到一些人, 使他們找到正確的方向.

現在, 我工作滿7年. 原本的計劃, 是在工作滿10年的時候, 有更多積累之後, 再來寫一些能夠幫助剛入行的年輕工程師的東西.

不過, 在今年04月29日和09月08日, 我在CSDN私信中收到了兩條感謝的私信.
三年前的這篇文章, 幫助兩位年輕的工程師堅定了在這一行繼續努力的信念, 三年後的他們有所成, 建立起了屬於自己的自信, 給我發私信表示感謝.

我深受感觸.

正好, 最近一年多時間中, 我主要的工作精力放在團隊構建上, 更多的我是從工程師成長角度思考這個問題.
在這方面, 有一些收穫. 所以, 就想把這方面的感悟, 分享出來, 希望可以幫助到更多的人.

Ps. 我覺得, 這篇文章也應該適合其他職業的職業發展參考, 但因為不瞭解其他職業, 所以, 僅以工程師職業發展命題.

工程師職業發展的四個階段

在我看來, 一個工程師的養成, 可以分為四個階段:
新人期
* 硬技能: 理論轉化實踐
* 軟素質: 養成基本的職業觀
成熟期
* 硬技能: 積累業務知識, 積累技術知識
* 軟素質: 固化職業觀
發展期
* 硬技能: 明確細化的職業發展方向, 深入研究[可能技術, 可能管理, 可能兩者兼具]
* 軟素質: 逐步總結並形成自己的方法論
事業期
* 硬技能: 釋放自己, 創造價值
* 軟素質: 輸出方法論, 影響其他人

我自己目前徘徊在發展期, 能看到的問題有限. 另一方面, 俗話說”三歲看大, 七歲看老”, 很大程度上, 職業發展的前面兩個階段, 已經決定了未來的職業發展路徑.

所以, 這篇文章, 我主要針對新人期/成熟期的一些問題, 進行闡述分析.

現象: 成長越來越慢

在我接觸過的工程師中, 這是一個非常普遍的現象. 並且, 這個現象多發於工作3年以上的同學身上.

職業發展模型
這張圖, 是我理解的職業發展模型.

首先, 職業發展過程, 是階梯式的, 一個臺階一個臺階往上走, 而不是線性提升.
其次, 職業發展前期, 上臺階所需時間更短, 即: 成長速度更快.

是什麼造就了這種現象?

我認為, 造成這種現象, 主要有兩方面的原因:
隨著職業等級的提升, 所需的基本素質越來越抽象
沒有及時從”積累具體知識”調整到”提升抽象思維”
隨著職業等級的提升, 所需的驅動力, 越來越轉向內在
沒有及時從”被動成長”調整到”主動成長”

首先, 沒有及時從”積累具體指示”調整到”提升抽象思維”

回到職業發展的四個階段, 看看各階段職級都在做什麼樣的事情:

新人期: 完成一項具體的任務.
成熟期: 完成一個專案的整體把控.
發展期: 引領一個專業方向的發展.
事業期: 引領一個或多個專業方向的團隊, 將技能轉化為實際生產力.

很容易看出, 隨著職業的發展, 我們需要具備的基本素質越來越抽象.

結合上面的職業發展模型圖, 一個人的成長, 分為兩個方向:
一方面是橫向的同級別的知識/經驗積累
另一方面, 是更高層級的抽象思考

我認為, 這就是造成這個現象的第一個關鍵點.
很多人都只關注了同級別的知識積累, 而一個人能Hold的同級別知識總量是有限的.

所以, 工作兩三年後, 相關的東西就積累的差不多了, 你很難找到一些自己”不會”的東西.

那麼, 問題就來了:
感覺成長越來越慢了
不知道該學什麼了
是不是該考慮做做管理了
……

建議: 提前用下一個職業等級的思路(或者說超越當下的視角), 去思考問題.

其次, 沒有及時從”被動成長”調整到”主動成長”

還是從職業發展的四個階段來看, 每個階段是什麼在驅動你做事情?

新人期: 按照領導的安排, 1, 2, 3個步驟, 完成一件事情.
成熟期: 按照領導的安排, 把一件大的事情, 拆解到具體的事情, 獨立完成, 或者和其他人合作完成.
發展期: 在完成領導安排的既定事務的同時, 還要從專業角度主動的發現並解決問題.
事業期: 需要自主的從公司或產品戰略出發, 全方位找到要解決的問題.

可以看出, 隨著職業發展, 驅動力越來越收斂到自身.

前兩個階段, 更多的是公司的事情驅動著你的前進, 通過公司的驅動力, 被動的獲取成長.
後兩個階段, 更多則需要自己主動的驅動事情往前走, 通過這種方式, 主動的獲取成長.

所以, 從這個角度講, 一個人要想獲得更好的職業發展, 一定要很好的去培養自己的主動性, 一方面主動獲取成長, 另一方面, 還要在公司中, 主動的承擔更多的問題, 這樣才能夠獲取到更多思考的機會.

如何避免走向平庸?

上面所提的現象, 如果不注意去克服, 就很容易走向平庸.
在上面的分析中, 有一些建議, 這裡, 要分享的是3點具體的總結.

學習方法

我對學習方法有一個抽象的總結, 是在閱讀了<如何閱讀一本書>這本書之後, 在一次和團隊成員的OneOnOne中總結出來的.

知識傳遞模型

我認為, 知識的傳遞, 和網路通訊模型有異曲同工之妙.

從知識的分享者角度來看, 比如, 一本結構良好的書, 應該有幾個明確的, 抽象的基本觀點. 其他所有的內容, 都是圍繞著這些基本觀點, 一層一層的將問題具象化, 幫助讀者逐層的理解最終那幾個抽象的觀點.
(Ps. 並不適用所有書籍, 比如小說類書籍, 可能抽象程度更高, 更加隱晦)

從讀者角度來看, 一定是先理解了那些具體的例項, 然後才能逐步的Get到原作者想要表達的抽象觀點. 通過這個過程, 吸取原作者分享的知識.

所以, 在技術領域的學習方面, 我覺得有兩點特別關鍵:
從實踐出發, 因為有效的資訊傳遞大部分都是通過這層完成. 所以, 大量的實踐才能讓你Get到原作者直接傳遞的更多資訊.
以抽象的思想為目標, 所有實踐的目的, 都是為了儘可能多的Get到原作者表達的抽象思想, 只有理解了抽象的思想, 才能用它指導自己解決大量同類問題, 甚至對原作者提出的概念進行延伸, 形成自己的方法論.

工作方法

從工作的角度去看一個問題, 我認為分3個階段:
接收需求
執行需求
完成需求

我見過相當一部分工程師, 其實只有”執行”這一個階段.

拿到一個需求, 草草看幾眼MRD, 然後就開始編碼, 這是對自己不負責, 對公司不負責, 對其他同事不負責.

對一個系統的設計和實現之間的權衡, 我有這樣一個觀點: 思考1-3年的變數, 設計6-12月的架構, 只實現當下需要的.

所以, 我認為, 作為一名優秀的工程師, 接到一份需求的時候, 首先應該做的就是認真的閱讀需求, 從產品角度思考這個需求背後的邏輯. 只有真正理解一個需求之後, 才能夠考慮到未來1-3年可能存在的變數, 才可能設計出符合6-12月業務發展所需的架構.

再來看經常被忽視的”完成需求”階段. 通常, 工程師在整個專案的研發過程中, 只是其中一環, 要使得整個流程能夠順暢的運轉起來, 每一環就必須都及時的通知到下一個環節.

上面這是站在公司角度考慮的.

另一方面, 站在個人角度而言. 對自己做過的事情, 覆盤總結, 往往是最佳的成長機會. 因為, 當你完成一件事情之後, 你就對事情的全盤有了瞭解. 這個時候, 回過頭去看這件事情, 就是現成的”站在更高視角看問題”的機會.

技能是什麼?

技能 = 技術 + 能力.

技術, 是由你的知識體系, 外加你的經驗構成的. 它能夠通過量的積累直接獲得提升. 不過, 它只能用來解決已知的問題.

能力, 是由你的抽象思維能力, 你已有的方法論構成的. 它不能直接通過量的積累獲得. 一方面, 它會由天生的智商情商等決定一部分; 另一方面, 要在量化積累的基礎上, 經過深度的思考, 找尋問題的本質, 引發質變才能獲得. 能力可以被用來解決未知問題.

技術和能力是相輔相成的. 分享這一點, 是因為在我看來, 如果能夠認清兩者的區別, 對兩方面的應用和提升就會更加得心應手.

新人期常見問題分析

下面列舉三個在我平時和團隊成員OneOnOne過程中, 經常碰到的軟素質方面的問題, 以及我認為比較好的解決方案, 供參考.

如何處理並行任務?

有沒有碰到過你的Leader在你上一件事情沒有完成的時候, 給你就分配了下一件事情的情況? 同時, 又來了幾個來自其他同事的需求.

在新人期的工程師, 主動性方面通常並不會差, 他們希望快點把所有問題解決, 但又無法同時都解決掉.

所以, “好煩啊”, 焦慮感就產生了.

一般而言, 很多新人都會使用下面兩種方式之一進行處理:
FIFO: 誰先找我, 就先把誰的問題處理完, 然後再去看後面的事情.
LIFO: 誰現在來找我, 我就處理誰的問題.

哪種方式好呢? 都不好!

首選方案, 是建議大家查閱時間管理相關的資料, 找到適合自己的解決方案.

下面是我建議的一種解決方案(GTD工作法):
全身心投入當下正在處理的事情
如果有新的需求過來, 2分鐘內, 判斷出這件事情的重要性.
重要且十萬火急的事情, 立即處理
否則, 扔進自己的TODO List, 設定一個時間提醒自己再進行關注.
完成手頭的事情後, 從你的TODO List整理, 找出下一件最重要的事情.
如果有多項重要緊急的事情, 無法獨自完成, 將問題暴露給Leader.
每天早晨看看自己的TODO List, 對當天一定要處理的事情有明確的認知.
每週review回顧自己做過的事情.

看看上面方法的核心是什麼? 讓所有的事情, 掌握在你的TODO List中, 對它們形成一種明確的管理. 當一切都瞭然於胸的時候, 你自然知道該怎麼為這些事情分配自己的時間片.

無法找到當下最重要的事情?

上一個問題的建議方案中提到, 我們需要找到最重要的事情.

那如何找到最重要的事情呢?

從我以往的經驗來看, 在新人期和成熟期碰到的事情中, 只需要問一個問題, 就能夠判斷大部分事情是否重要.

“如果這件事現在不做, 會有什麼後果?”

比如:
會導致這個版本不能如期釋出
會導致線上服務故障

不過, 通常我們得到的答案都是”沒什麼影響”.

新人很容易陷入無法判斷優先順序的困境, 這是人類天性的弱點. 我們會對未知產生恐懼, 進而產生焦慮, 進入一個惡性的迴圈狀態.

解除這種狀態的思路, 就是讓未知變成已知.

如何準確評估排期?

經理安排下來一個專案, 詢問排期, 這個時候, 新人很容易慌亂, 不知道該如何評估.

這個問題的產生, 和上面兩個問題, 是一樣的. 因為對新人而言, 並不瞭解一個專案到底需要多少時間才能完成.

那就束手無策了嗎?

試想, “讀完<鋼鐵是怎樣煉成的>需要多少時間?”, 面對這個問題, 你怎麼解答?

思路是不是這樣?
看這本書有多少頁
經驗告訴自己, 讀一頁需要3分鐘.
然後計算出需要的總時間.

軟體開發的排期預估, 是同樣的思想.

大事化小.

大事是不明確的, 無法直接給出工作量預估, 那麼, 把它拆解到你能預估的小的事情, 就可以了.

同時, 在你評估過工作量的事情, 最終完成之後, 去覆盤, 看自己的評估是否準確, 如果有偏差, 思考問題出在哪裡, 長此以往, 一些大事, 你也就可以直接評估出工作量了.

總結

通過上面三個問題, 可以看出一些共性, 三個問題, 都是通過把抽象的, 不明確的事務, 拆分成具體的, 明確的事務, 使我們心裡更加有譜.

如果你有這三個問題之外的其他問題, 不妨也試試這種思路.

成熟期常見問題分析

成熟期, 是工程師成長中的一個關鍵時期, 邁過去這個坎兒, 更多需要的是精神層面的東西. 所以, 這裡提到的成熟期的三個常見問題, 都和”心”有關.

如何保持高速成長?

首先, 請再思考下”現象: 成長越來越慢”中, 提到的造成這個現象的原因:
沒有及時從”積累具體知識”調整到”提升抽象思維”;
沒有及時從”被動成長”調整到”主動成長”

仔細研究這兩個原因, 都可以看做是在沒有挑戰性的狀態, 形成了舒適區造成的.

對大部分工程師而言, 參加工作, 是第一次正式的和社會接觸, 基本正式脫離了”學習壓力”所帶來的約束. 而新人期又可以”輕鬆的”(主要指心裡壓力方面)通過公司獲取被動性的成長.

溫水煮青蛙. 大部分人都會被煮熟的.

請思考一個問題, “是不是你所學的20%就足以解決工作中80%的問題”.
請再思考一個問題, “是不是工作中剩下20%的問題, Google和諮詢別人可以全部解決”.

進入成熟期後, 很快, 工作就很少, 甚至不能給你的成長產生驅動力了.

剩下的, 就得靠自己. 告訴自己兩件事, “主動提升”, “主動思考下一職級的問題”.

我想通過這篇文章傳遞的核心價值, 就是這一點, 希望能幫助一些工程師(尤其工作3年內的), 意識到舒適區, 並跳出舒適區.

如何使自己更自信?

這個問題, 源自一週前和一位團隊成員的溝通.

我仔細的思考了自信的來源, 然後我認為, 自信是成就感驅動的.

那成就感來自哪裡呢? 我認為可以從內部/外部兩個角度去看:
內部: 來自自己的認可
自己的技術或能力得到提升, 讓自己覺得自己牛逼
將技術或能力, 應用到實際專案中, 讓自己相信自己真牛逼
外部: 來自別人的認可
將自己的實踐, 講出來讓別人認可, 讓別人覺得自己牛逼
將自己的實踐, 抽象總結出來, 幫助別人變得牛逼

每個人因為性格的不同, 成就感獲取的主要渠道可能不盡相同, 但結合自己的情況, 找到適合自己的成就感獲取渠道, 通過成就感建立自信, 是一種有效的方法.

不過, 自信和自大一線之隔, 謹慎.

XX同學已經月薪30K了, 趕緊跳槽求加薪吧

現實的誘惑, 也是容易讓人迷茫的一個點. 不過, 如果對一些基本面有正確的認識, 可以幫助我們做出更加合理的決定.

首先, 一個人的薪資, 是由專業能力, 軟素質, 行業經驗, 公司內經驗, 稀缺度, 人脈, 運氣等等方方面面的因素共同決定的.

千萬不要因為薪資的攀比而魯莽的跳槽.

跳槽的確會大概率增加薪資. 因為, 總有一些公司, 是到非常著急用人的時候才去招人的, 他們被迫給出更高的工資. 同時, 你上一家公司的薪水, 會給你提供一定的背書. 所以, 如果溝通表達能力好, 理論上短期是可以通過跳槽, 拿到超出當前能力的薪資水平.

但是, 頻繁跳槽會讓阻礙工程師的長線發展. 一般而言, 公司是不會把核心職位交給剛入職半年一年的人的. 如果你頻繁跳槽, 就註定長期處於一線. 現在的市場行情下, 天花板也就是20多K不超過30K.

且不說錢的天花板, 關鍵在於長期處於一線, 你的鬥志就會被消磨殆盡, 從而縮短你的職業生涯.

因而, 從長線發展來看, 通過跳槽加薪, 並不是一種可取的選擇.

如果你想要高薪, 首先讓自己變得優秀, 那麼就應該靜下心來, 在一家公司, 給自己定幾個目標, 達成之後再去考慮離開的事情. 這樣, 對大家都好.

總結

成熟期是整個職業生涯中, 最關鍵的時期. 快的, 可能一兩年就能走過去, 慢的, 可能整個職業生涯都定格在成熟期.

從上面分析中, 可以看到, 這些問題, 最終都和”心”相關:
要想高速成長, 就得克服掉溫水中的舒適.
要想提高自信, 還得思考成就感獲取渠道這麼虛頭巴腦的問題.
幹這麼多, 還不能跳槽加薪迎娶白富美.

所以, 要想邁過去這個坎兒, 必須有一顆非常強大的內心.

後記

最後, 希望看到這篇分享的同學們, 能夠幫助你們延長奮鬥的激情, 在這條路上, 走的更遠.

最後的最後.
感謝和我一起進行各種管理實踐的我的團隊.
感謝在我管理能力發展中給我幫助的Alex, 瀚哥, 海儀姐, 寧姐.
感謝一如既往支援我的家人.