技術成長是程式設計師職涯發展的核心。本章探討如何有效學習、實現技術變現,以及在快速變化的技術環境中保持持續成長的動力。

技術變現的核心思維#

程式設計師是「手藝人」,靠技術變現是天經地義的事。關鍵在於如何讓自己的「手藝」更值錢。

核心觀念:不是通過打工聽人安排而活著,而是反過來通過在公司工作提高自己的技能,讓自己可以更為獨立和自由地生活。

技術變現九大法則#

  1. 千里之行,積於跬步

    • 任何成功的大事,都是通過一個個小成功達成的
    • 讓身邊的人有求於你,建立正向循環
    • 一旦別人開始向你付費獲取幫助,你就會獲得更大的發展空間
  2. 關注有價值的東西

    • 價值受供需關係影響,供不應求才有價值
    • 關注市場需求:公司真正缺的是能解決技術難題、提高團隊人效的人
    • 關注技術趨勢:了解技術發展軌跡,判斷新技術是否順應趨勢
  3. 找到能體現價值的地方

    • 在高速發展的公司中,技術人員的價值可以最大化
    • 大公司:技術架構和業務已定型,穩定性優先於創新
    • 初創公司:業務還沒跑順,技術需求不高
    • 最佳路徑:先在大公司學習成功經驗,再到高速成長的公司實現價值
  4. 動手能力很重要

    • 程式碼裡全是細節,細節是魔鬼
    • 只有了解細節,才能提出靠譜且可落地的解決方案
  5. 關注技術付費點

    • 能幫別人「掙錢」的地方
    • 能幫別人「省錢」的地方
    • 越直接越好,而且最好是大多數人做不到的
  6. 提升自己的能力和經歷

    • 付費的前提是信任
    • 成為知名開源軟體的核心開發人員
    • 成為知名公司核心項目的核心開發人員
  7. 找到有價值的資訊源

    • 走到資訊的源頭去,用好 Google
    • 搜索 “XXX Best Practice”、“Best programming resource” 等
    • 不斷提升英文能力
  8. 輸出觀點和價值觀

    • 真正偉大的公司或產品都要輸出價值觀
    • 只有輸出了更先進的價值觀,才會獲得真正的影響力
  9. 朋友圈很重要

    • 優質朋友圈的特性:
      • 有想法、有觀點、經驗豐富
      • 涉獵面廣
      • 有成功經歷
      • 喜歡折騰、喜歡搞事
      • 對現狀有些不滿,想做改變
      • 有一定影響力

最宝贵的財富是時間,而非金錢。 錢不用還在那裡,時間不用就浪費了。把時間投資在有意義的地方,決定了你未來會走什麼樣的路。


學習方法與路徑#

學習的正確姿勢#

常見錯誤:還沒弄清楚森林長什麼樣子,就盯著樹葉看。

有效的學習順序:

  1. 看清全貌:先看官方文檔,了解有哪些模組、整體設計
  2. 動手實踐:跑一跑官網例子,用框架實現小系統
  3. 深入研究:在熟悉使用的基礎上,深入特定模組研究設計思路和源碼

保持學習興趣的兩個關鍵#

1. 帶著明確的目標去學習

  • 面試熱點:徹底理解和掌握,讓面試官刮目相看
  • 解決工作問題:不只掌握原理,更要能實際應用產生效果
  • 技術需要變現才有學習動力

2. 一定要動手實踐

  • 只有動手實踐才會對技術有最直觀的感受
  • 碰到問題並解決,這是難以忘記的寶貴經驗
  • 適當的動手實踐能樹立信心、培養興趣
學習 Spring 框架的經驗教訓

一開始就鑽進一個模組啃源碼,結果看不懂、不明白程式碼為什麼這麼「繞」。

問題根源:

  1. 還沒弄清楚森林長什麼樣子,就盯著樹葉看
  2. 還沒學會用 Spring,就開始研究它是如何設計的

正確做法:

  1. 先看官方文檔,了解全貌
  2. 動手跑官網例子,學會使用
  3. 再深入特定模組研究設計思路

技術深度與廣度的平衡#

「變」與「不變」#

不管從事什麼行業,要積累的東西都可以分為「變」與「不變」兩類。「不變」的是內功,「變」的是招式。

要善於發現、持續積累「不變」的能力,而非盲目追逐一直在「變」的招式。

編程能力的內涵#

編程能力是把「邏輯」翻譯成程式碼的能力。編程能力強,意味著:

  • 能編寫正確的程式碼
  • 編寫速度快
  • Bug 很少、效能很好、質量很高

編程能力的三大要素:

要素說明提升方法
編程語言熟練使用編程語言和開發類庫快速掌握,順帶考察
資料結構與演算法編寫高效程式碼刷 LeetCode
設計思想、原則和模式編寫高質量程式碼在日常開發中刻意練習

持續練習的方法#

資料結構和演算法:

  • 多刷 LeetCode
  • 刷題不只是為了面試,更是鍛鍊:
    • 邏輯思維能力
    • 寫出 bug free 程式碼的能力
    • 快速實現複雜邏輯的能力
    • 效能意識

設計思想和模式:

  • 拿到需求先思考如何設計,而非直接寫程式碼
  • 寫程式碼時思考是否遵循經典設計原則(SOLID、可讀性、可擴展性)
  • 寫完程式碼後思考是否有最佳化空間
  • Code Review 時學習他人的優秀程式碼

在平時開發中刻意進行跟程式碼質量、程式碼設計相關的思考訓練。時間長了,這種思考就能成為習慣和本能反應。


25~35 歲的黃金時光#

25~35 歲是每個人最寶貴的時光,應該用在刀刃上。

時間投資原則#

應該投入的方向:

  • 主流、高級、有挑戰性的技術
  • 保持技術和技能的領先
  • 保持對技術本質和趨勢的敏感度

應該避免的事情:

  • 功能性的軟體開發私活(無法成長,後期維護消耗時間)
  • 沒有技術含量的重複工作

提高工作效率的方法#

對於那些沒什麼技術含量的工作:

  • 提高程式碼的重用度
  • 能自動化的就自動化
  • 和需求人員談需求,簡化需求

這樣就有更多時間,去研究公司內外那些更核心、更有技術含量的技術。


經驗積累的方向#

三種主要經驗來源#

  1. 企業內訓

    • 可以了解各企業在做的事和遇到的技術痛點
    • 極大增加對社會的了解和認識
    • 鍛鍊語言組織和表達能力
  2. 技術分享和寫作

    • 要寫沒有人寫過的,或是別人寫過但你能寫得更好的
    • 最好的 SEO 就是獨一份
    • 技術和知識完全是可以變現的
  3. 在頂尖公司工作

    • 學習大公司的技術和成功經驗方法
    • 接觸不同的技術價值觀和思維方式
    • 豐富思考問題的角度

要去經歷大多數人經歷不到的,要把學習時間花在那些比較難的地方。