[Book] 學徒模式

Category Book

apprenticeship-patterns

學徒模式是由數十個在不同情境下可以用的模式所組成
每個模式都會分為情境、問題、解決方案、行動四個部分
模式之間彼此可能有一些關聯,但並非順序性的
所以這本書並沒有必要照著順序閱讀

讀起來的感覺跟 The Clean Coder 有點像
在職涯的不同階段閱讀都可能有很不同的感受

前言

  • 有些讀者發現需要讀本書兩次
    • 第一次快速瀏覽,在腦中建構所有內容的印象
    • 第二次建立各模式間的互相連結

我覺得我自己就是幾乎什麼書都得讀兩次的人 XD

Ch2 - 倒空杯子

你的第一個語言

  • 選一個語言,精通
    1. 和專家一起工作
    2. 參加該語言愛好者舉辦的本地聚會(或網路論壇),評估自己是不是願意屬於這個社群
    3. 盡快閱讀如 Effective Perl Programming, Effective Java 這類書籍,加速學習並減少犯下常見錯誤的機會
  • 但不應該與任何特定的技術白頭到老,應該尋求廣泛而足夠的基礎知識與經驗,才能針對任何特殊的狀況挑選合適的方案

具體技能

  • 「如果我今天雇用你,下星期一你能對團隊帶來什麼好處?」
    • 對第一個語言的深入了解能幫你建立可靠度,證明對團隊的幫助
    • 變成工匠後,聲望、過去的工作經驗,以及對團隊帶來更深層的影響將更為重要
      • 到這個時間點之前,你必須盡可能地擁有更多技能
  • 收集你嚮往的人的履歷資料,從每份履歷中挑出五個不同的技能,評估是是否夠用在你想加入的團隊中,利用挑選出來的技能建立一個能夠展現你擁有這些技能的小專案
  • 養成定期維護個人履歷的習慣,將具體技能獨立為個別的清單

Ch3 - 走在漫漫長路

量身繪製地圖

  • 列出三個目前工作之後可以做的工作,之後再為每個工作列出三個後續的工作
    • 思考這些是否包含接下來幾年你生命中期望的職務

Ch4 - 正確的自我認知

成為菜鳥

  • 問題: 學習的機會慢慢減少
  • 解決方案: 讓自己被比自己優秀的開發人員圍繞
  • 行動
    • 列出所有你知道的團隊(e.g., 開放原始碼專案、其他部分、以及其他公司)
    • 將這些團隊一技術能力好壞排列,然後找出其中正在找尋新成員加入的團隊
      • 可能得加入好幾個 mailing list ,向許多人詢問才能弄清楚這些團隊彼此的技術能力

打掃地面

  • 問題: 不確定自己在團隊中的位置,團隊對你的認識也不多,你希望找到為團隊貢獻的方式,獲得團隊的信任,並成長成工匠
  • 解決方案
    • 自願去做簡單、枯燥、又非做不可的工作
    • 初期為團隊的成功做出貢獻,展現出即使在小事上也能維持高品質的成果

Ch5 - 終身學習

拓展你的頻寬

  • 在 Twitter 上追蹤一些傑出軟體人員,持續關注他們在進行的工作
  • 訂閱高流量的 mailing list ,重新產生他人詢問的問題,並試著回答他們
  • 加入新成立、以最新科技為主題的本地使用者群組,向負責人自我介紹,並提供需要的幫助
  • 每讀完一本書,寄信給作者表達謝意與提問
    • 作者、講者與傑出人員也許看起來很嚇人或忙碌,但他們通常很樂意與讀者互動

邊工作邊反省

  • 情境
    • 有足夠能力的人,都會在幾年後爬上升職的階梯。如果你不為那個晉升準備,你會發現自己成為「彼得原理」的受害者,被晉升到不能勝任的位置
  • 解決方案

分享個人所學

  • 這對初學者可能是不容易跨過的心理障礙,但正因為知道的不多,你的解釋會最簡單、直接,而不需要其他知識,這會讓他們成為更好的解釋
  • 行動: 回想你上次學到重要知識的過程,寫一篇相關的文章,提供你當初希望已經存在的訊息

建立回饋迴路

  • 情境: 你無法知道自己是否限於 unconscious incompetence
  • 解決方案
    • 定期取得關於自身表現的外部客觀資料
    • 學徒也許不該太早致力於減少錯誤,而是致力於如何辨認自己犯的錯

Ch6 - 安排自我課程

閱讀清單

  • 問題: 你需要閱讀的書籍大量增加,遠遠超過你的閱讀速度
  • 解決方案
    • 維護閱讀清單,紀錄你計畫要讀跟已經讀完的書
      • 考慮將閱讀清單公開出來,這能讓其他人也從你的學習受益 (Ref: BookShelved)
      • 反省過去的學習習慣
      • 你可能會發現有些書持續出現在參考書目中,應該將這些書移到前方
        • 閱讀清單應該要是一個 priority queue