作者 | 唐志龍(鯤龍) 阿里巴巴高階開發工程師
開發人員經常會面臨下面一些場景:
這樣的場景多了,就需要去梳理常見問題以及應對方法,方便後續遇到類似場景可以快速應對。
業務學習就是從業務角度去學習系統,我們需要了解系統的客戶是誰、使用人是誰、帶來了什麼價值,系統提供了哪些功能等。
不清楚業務,就等於不知道系統在幹什麼。技術是為業務落地而服務,清楚了業務才知道怎樣用技術更好地服務業務,所以業務學習是熟悉乙個系統的首要任務。這塊主要的學習方式有跟產品、運營、開發溝通,學習產品設計文件文件、prd、自己使用系統,還有一些常見圖,如產品功能架構圖、業務流程圖、功能樹,用例圖等。
常見問題:
技術學習主要學習系統的架構、如何實現、系統的運維等。描述乙個系統的架構有五檢視方**。
五檢視分別是:
1. 邏輯架構
邏輯架構著重考慮功能需求,系統應當向使用者提供什麼樣的服務,關注點主要是行為或職責的劃分。
常用表達圖形,靜態圖有包圖、類圖、物件圖;動態圖有序列圖、協作圖、狀態圖、活**。邏輯架構的核心設計任務是模組劃分、介面定義、領域模型細化。
常見問題:
2. 開發架構
開發架構關主要關注系統源**、第三方sdk
、使用的框架、中介軟體、工具包。
常見問題:
**在哪?
3. 執行架構
執行架構的著重考慮執行期質量屬性,關注點是系統的併發、同步、通訊等問題,這勢必涉及到程序、執行緒、物件等執行時概念,以及相關的併發、同步、通訊等。
常見問題:
4. 物理架構
物理架構的設計著重考慮安裝和部署需求,關注點是目標程式及其依賴的執行庫和系統軟體最終如何安裝或部署到物理機器,以及如何部署機器和網路來配合軟體系統的可靠性、可伸縮性、持續可用性、效能和安全性等要求。
常見問題:
5. 資料架構
資料架構的設計著重考慮資料需求,關注點是持久化資料的儲存方案,不僅包括實體及實體關係資料儲存格式,還可能包括資料傳遞、資料複製、資料同步等策略。
常見問題:
6. 系統運維
系統運維重點關注什麼時候會出問題,出了問題怎麼解決。
常見問題:
熟悉了系統的業務和技術後,就要實戰了,通過實戰進一步加深對系統的熟悉程度。實踐可以通過做需求、修bug
、重構等方式,親自動手編碼、除錯、測試、上線。
已有系統通常經歷了從 0 到 n 的建設過程,熟悉系統其實是乙個逆向推導過程,也是乙個學習架構、閱讀原始碼的過程。
在學習的過程中最好能帶上思考,比如為什麼要這麼設計?為什麼要用這個中介軟體?是否有更好的編碼方式?哪些地方可以優化等,以此達到乙個深入熟悉的過程。
思維導圖資源位址
如何熟悉乙個完全陌生的系統
作為工程師,在職業生涯中不可避免的會遇到以下場景 1.入職新公司或者轉崗到新部門,如何有條不紊地熟悉已有系統?2.支援陌生系統的迭代開發或者維護,如何快速上手?3.所在團隊同事離職或轉崗,需要你接手相關系統,如何盡快進入角色?面對上述場景,梳理一套方 從而有序 高效地應對十分必要。筆者結合自身經驗和...
如何熟悉乙個開源專案?
如何熟悉乙個開源專案?你去了解某個東西。怎麼下手呢?如何開始呢?我的習慣是這樣 1.首先,查詢和閱讀該項目的部落格和資料,通過google你能找到某個專案大體介紹的部落格,快速閱讀一下就能對專案的目的 功能 基本使用有個大概的了解。2.閱讀專案的文件,重點關注類似 getting started e...
如何熟悉乙個開源專案?
你有個任務,需要用到某個開源專案 或者老大交代你乙個事情,讓你去了解某個東西。怎麼下手呢?如何開始呢?我的習慣是這樣 1.首先,查詢和閱讀該項目的部落格和資料,通過google你能找到某個專案大體介紹的部落格,快速閱讀一下就能對專案的目的 功能 基本使用有個大概的了解。4.執行了第乙個example...