[架構師的修練] #1, 刻意練習 - 打好基礎
摘要提示
- 刻意練習: 用系統化的練習與回饋機制,主動創造實戰情境,加速知識轉化為能力。
- 基礎知識: 累積資料結構、作業系統、OOP/DBMS 等底層觀念,讓學習新技術更快、更能判斷關鍵。
- 學習方法: 先打內功再擇工具,至少精通一套端到端技術以便快速驗證想法。
- 抽象化思維: 以抽象化連結跨領域知識,從「點狀學習」進化為可遷移與組合的解題能力。
- 職涯規劃: 30+ 即應布局長期能力,40+ 要有不可輕易取代的價值,持續投入「重要不緊急」。
- 架構師能力: 技術決策、開地圖(知識版圖)、串接組織管理與工程實作,兼顧深度與廣度。
- 實作經驗: 從個人到團隊開發、從專案到產品演進,透過實作與轉型累積設計判斷力。
- 管理觀點: DevOps、CI/CD、SLO 等核心其實是管理問題的工程化,需以績效與資源視角思考。
- 練習步驟: 用 code 定義問題、設指標、抽象化方案、估理論極限、找同伴切磋形成正循環。
- 工作應用: 新技術先在 side project 打磨成熟再進生產,團隊以「練—用—重構」迭代提升。
全文重點
作者以二十年職涯回顧,提出「刻意練習」的系統化路徑:先打好基礎,再以實作與抽象化貫通知識,並以管理視角擴張影響力。他指出,工程師若要長期發展,不能只追新框架與語法,關鍵在於累積可遷移的底層知識(如計算機系統、OOP、DBMS)與抽象化能力;同時至少精通一套端到端技術堆疊,確保能快速驗證想法,避免工具成為阻礙。
面對專案知識在末期才加速累積的悖論,敏捷強調前移學習的節奏;作者進一步主張以「刻意」發現問題、設計回饋環境與評估指標來加速成長。其職涯從工程師、技術主管到 CTO,再轉向架構師,過程中透過大規模協作、COM/OLE 等跨語言元件模型、從 ASP 到 .NET/SQL 的技術決策與平順轉移,養成了在不確定中做選擇與為可演進性負責的能力。
作者亦強調,DevOps、CI/CD、SLO 的本質是管理議題,需要以「代碼/基礎設施/設定」職責切面、績效與資源視角來統整工程實踐。成為架構師,重點不在「樣樣精通」,而在「開地圖」,能判斷未知、界定邊界、調動專長、連結知識,做對技術決策。他提出可操作的練習流程:以 code 定義問題(POC)、建立量化指標、將方案抽象化便於迭代、推導理論極限以校準改善目標、邀同儕共同演化解法。工作上則以 side project 驗證,再回灌生產,以「練—用—重構」形成組織性學習循環。
結語提醒:能力無速成,應持續投入「重要不緊急」;與其追多,不如鑽深;每次練習不只挖深,也要建立連結。以此路徑,方能打造跨越年齡、難以替代的價值,走向架構師的專業。
段落重點
寫這系列文章的動機
作者從工程師到 CTO,再轉向架構師,體會到只會「把需求做出來」是代工思維,真正價值在研發與決策能力。他觀察 40+ 工程師價值需超越執行速度,必須打造不可取代的能力組合,並呼應時間管理的「重要不緊急」:在 30+ 明確方向後要有計畫地累積。系列文章因此聚焦「刻意練習」,將演講內容沉澱為系統化方法,協助讀者培養長期職涯韌性與成長力。
在進入正題之前…
引用多位前輩觀點指出「點狀學習」需靠連結轉為知識網。作者主張兩步:一是打好基礎、建立自我提升準備;二是以刻意練習提早取得重要知識。他強調:選一套熟悉的端到端技術堆疊並精通,以便快速驗證想法;用敏捷思維提升交付頻率並前移回饋;更要培養「知道自己不知道什麼」的能力,靠廣度基礎幫助搜尋、判斷資訊價值。最終目標是用抽象化連結多點知識,打造難以被單點高手取代的組合實力。
1, 打好基礎,做好能夠自我提升的準備
學習資源充沛,瓶頸在於運用與判斷。作者建議放棄「學完所有框架」的幻想,回到基礎與內功:夯實計算機與程式語言根柢,並至少精通一套從前端、後端到工具鏈的完整堆疊,讓創意能快速落地與驗證。同時建立抽象化能力與 MVP 思維,快速縮短從想法到回饋的距離,以此形成自我驅動的成長循環。
2, 刻意練習, 累積特定領域足夠的經驗與能力
軟體專案知識往往在末期才爆量累積,與初期需做關鍵決策形成落差。解法:提高交付頻率外,還要「刻意」創造回饋環境。方法包括:學會學(Learn how to learn)、辨識無知的無知、靠基礎知識找對關鍵字與判斷資訊、建立可快速驗證的練習場。配合抽象化與 MVP,能更早發現問題、定位缺口、系統化補齊,從而把知識點連成能解決真問題的網絡。
我自己的案例
作者以自身經歷拆解成三層:基礎知識、實作經驗與影響力。借由學生時代電機與資工交疊的訓練(CPU、組合語言、OS、OOP、DBMS),進入職場後在團隊協作、COM/OLE、Web 技術中精進實作;接著在新創負責產品,做長期技術決策與平滑遷移(ASP→.NET/SQL、COM 包 core、ORM 自研),最終形成面對大型系統與演進需求的架構判斷力,並在 CTO 時期融入管理視角。
1, 掌握資訊科學的基礎知識
從硬體邏輯到 CPU、組合語言、系統程式、作業系統的縱深學習,使作者能快速理解 CLR/VM、最佳化與語言運作原理。研究所專注 OOP 與 DBMS,閱讀 OODB 論文,讓他在面對 ORM、NoSQL 等新世代技術時,能以概念理解為先、操作為後,省下大量摸索成本。核心啟示:操作技能可速成但不耐換代,基礎知識能跨世代遷移並支撐準確決策。
2, 掌握基礎的開發能力
職涯初期從「一人寫」到「團隊寫」,學會可讀性、模組化、版控與協作。在 IE3/DHTML 時代嘗試線上影像處理,深入 COM 的 IUnknown 與二進位層級物件模型,理解跨語言可組合的本質。這些經驗使其後在分散式溝通、微服務邊界等設計議題上更游刃有餘,也奠定了「能把想法做出來」的關鍵能力,避免只停留在投影片層次。
3, 有計畫的累積設計與開發能力
在產品型團隊主導技術選型與演進,從 XML DB 到主流 RDBMS 的取捨、自己實作 XML→RDB 的 ORM、用 C# + CCW 封裝 COM、設計 ASP 與 ASP.NET 的共存與遷移策略,都是「為可維運與可演進性負責」的決策實踐。作者總結個人成長關鍵:基礎知識、可啟動練習的全端能力,以及抓關鍵、造場域、專注解題的能力循環。
4, 培養其他的經驗與能力
身兼 CTO 後,補上 HR 與管理知識,將其抽象為工程實踐:DevOps/CI-CD 的 code/infra/config 職責切面,SLO/KPI 與限制理論對系統績效治理的啟發,平行處理與人力調度的類比。強調技術問題常是管理問題的投影,抽象化讓管理與工程產生同構,提升系統級決策品質,並避免以新工具誤解決管理根因。
架構師 該累積什麼經驗與能力?
走向架構師的學習不需複製作者的技術清單,但要把握原則:累積資科基礎(演算法、OS 等)、軟體工程必備(TDD、DevOps、Cloud Native、安全)、基本管理能力、目標領域知識,並持續連結跨域知識。用職能等級(Lv0–Lv4)自評,至少達到能教人(Lv3)才算精通,才能跳出「不知不知」並形成連結能力,成為可做決策的「開地圖」型人才。
我該如何培養這樣的能力?
若缺乏實戰場,就自己創造場域:以部落格、Side Project 驗新技術,歷經多次平台遷移實踐「練—用—迭代」。提出實操流程:1) 用 code 定義問題(POC);2) 設定量化指標(如 TTFT、TTLT);3) 抽象化解法便於重構;4) 推導理論極限作為天花板;5) 找同伴共練、PR 觀摩。此法兼顧技能與理論,讓個人成長不再受制於外在條件。
我該如何用在工作上?
新技術先在 Side Project 驗證成熟,再進生產以控風險。團隊運作建議循環:以成熟技術推正式專案;萃取疑難成可重現的小題並設指標;在練習場多路求解找優雅方案;於下一版重構導入;持續滾動。透過這種「練習導向的工程化流程」,把個人學習內化為組織能力與產品可演進性。
給各位的建議
能力無速成,關鍵在長期刻意練習與連結。與其追多不如鑽深;每次練習不只挖理論與實作的深度,也要釐清與他技術的關聯,以廣度形成網絡。若缺題目可從作者的「架構面試題」與「後端必備」系列或 LeetCode 入手;最終目標是讓學習成為自驅動循環,從會用到能教、能決策,打造難以被取代的架構師價值。
資訊整理
知識架構圖
- 前置知識:學習本主題前需要掌握什麼?
- 基本電腦科學:資料結構、演算法、作業系統、計算機架構與組合語言概念
- 軟體工程基礎:版本控制、模組化與抽象化、OOP 基礎、基本網路協定
- 實作基礎:至少一套端到端(前後端或後端全棧)的語言/框架能獨立完成 MVP
- 學習方法:Learn how to learn、能建立自我練習環境、能定義與追蹤指標
- 核心概念:本文的 3-5 個核心概念及其關係
- 打好基礎(內功):以 CS 基礎與抽象化能力為底,讓技術學習更快更穩
- 刻意練習:主動定義問題、建立可驗證的練習與指標、循環改進
- 連結知識點:把「點狀知識」連成網,跨域類比(技術×管理)形成不可取代性
- 學會學習與自我迭代:從「無知的無知」走向能自我定位缺口與補強
- 技術決策與影響力:以廣闊知識地圖做判斷,兼顧團隊、產品與長期演進
- 技術依賴:相關技術之間的依賴關係
- 底層知識(CPU/記憶體/OS/網路)→ 語言/執行環境(VM/CLR/Runtime)→ 框架/庫(Web/ORM/MQ)→ 架構樣式(微服務、消息驅動、Cloud Native)
- OOP/抽象化 → 可維護設計/ORM/資料建模 → 可演進架構/資料庫選型(RDB vs NoSQL)
- DevOps/CI-CD → 可重複部署(Code/Infra/Config 三層分工)→ 服務營運指標(SLO)與限制理論(TOC)
- 實作能力(MVP/TDD/POC)→ 指標化(TTFT/TTLT/平均耗時)→ 持續重構與調參 → 接近理論極限
- 應用場景:適用於哪些實際場景?
- 個人職涯規劃:工程師轉架構師的長期能力建設
- 團隊技術升級:以 side project/POC 驅動新技術導入與風險控管
- 架構決策:資料庫/框架/佈署/微服務邊界等關鍵抉擇
- 效能/併行/批次與任務編排系統設計與調優
- 研發流程優化:DevOps、CI/CD、SLO、指標導向的改善循環
學習路徑建議
- 入門者路徑:零基礎如何開始?
- 建 CS 底:資料結構、演算法、OS、網路概論(能口述程式如何在機器上運行)
- 選一套技術線:後端語言(如 C#/Java/Go/Node)+ Web 基礎 + 一個 RDB
- 做出第一個 MVP:從需求到上線(版本控管、簡單部署與監控)
- 練習抽象化:以小題目(例如折扣規則)刻意切出介面與測試
- 養成學習機制:每題練習皆有測試、指標與復盤筆記
- 進階者路徑:已有基礎如何深化?
- 擴展知識網:ORM/交易一致性/訊息佇列/Microservices/Cloud Native 入門
- 併行與吞吐:Pipeline、Worker 模式、背壓、資源調度與理論上限思考
- DevOps 化:把 Code/Infra/Config 分層治理,建立 CI/CD 與環境一致性
- 指標化運維:導入 SLO/錯誤預算,將管理思維映射到系統 SLA
- 技術決策演練:以真實約束(招募/延續性/成本)做選型與演進路線圖
- 實戰路徑:如何應用到實際專案?
- 專案中挑出痛點 → 獨立成可重現的最小程式(可測、可跑、可比)
- 定義衡量指標(正確性/時間/資源/成本)→ 多解法 A/B 對照
- 形成可複製模板:把成功方案沉澱為腳手架、最佳實務、檢核表
- 以版本節點導入:灰度/雙軌/藍綠,避免一次性大遷移風險
- 團隊共練:讀書會/GitHub PR 觀摩,建立共用知識地圖與語彙
關鍵要點清單
- 打好內功:CS 基礎(資料結構/OS/計算機架構)是長期競爭力之源 (優先級: 高)
- 至少精通一套端到端技術棧:快速做 MVP 驗證想法 (優先級: 高)
- 抽象化能力:排除雜訊、抓核心、可演進設計的關鍵 (優先級: 高)
- 刻意練習流程:用 code 定義問題→指標→重構→對齊理論極限 (優先級: 高)
- 連結知識點:從「點」到「網」,打造不可替代的組合優勢 (優先級: 高)
- 無知的無知:能辨識自身盲區並規劃補強 (優先級: 高)
- 技術決策能力:趨勢、延續性、團隊上手度與招募成本的綜合判斷 (優先級: 高)
- DevOps 三層分工:Code/Infra/Config 分離與協作邊界 (優先級: 中)
- 指標導向思維:SLO/錯誤預算/TOC,將管理思維映射到系統 (優先級: 中)
- 併行與吞吐設計:Pipeline、Worker、背壓與資源調度 (優先級: 中)
- RDB 與 NoSQL 心智模型:物件/關聯/索引/Schema 演進取捨 (優先級: 中)
- POC/Side Project 機制:在安全環境中驗證新技術再進產線 (優先級: 高)
- 教學相長:達到能教他人(Lv3)後形成自我迭代循環 (優先級: 中)
- 知識地圖開圖:廣度覆蓋到能評估未知技術的風險與價值 (優先級: 高)
- 從管理學借力:績效/流程/約束思維提升系統設計與運營 (優先級: 中)