程式設計師如何快速上手一個自己不太熟悉的新專案?有什麼技巧?

NO IMAGE
不知道你有沒有經歷過一個五年或者更長工作年限的開發人員半路加入團隊的情況,可能第一兩個星期他會問一些業務或者技術問題,不過一兩個月他就可能在指導那些初級開發人員了。

什麼原因呢?因為他已經從過往經驗裡面總結出來一些套路了。

那麼套路是什麼呢?

1. 絕大部分業務系統,不管他後端是oracle、mysql、nosql還是記憶體資料庫,也不管他前端是web、h5、winform、android還是ios,它的核心功能都是由增刪改查組成然後通過通訊、運算和人機互動串起來的,系統的複雜度主要體現在系統規模、效能、穩定性、業務流程、通訊等方面。(部分工具類、基礎架構類系統可能不一樣)

2. 絕大部份系統,不管是基於Java、.NET、C 還是Nodejs技術,都是遵循某種或幾種設計模式分層進行開發的,最最常見的也就是MVC了。其他請參考一下設計模式教程。

那麼怎麼快速熟悉新的專案呢?同樣也是套路。

1. 先搞清楚新的系統是搞什麼的,就問簡單幾個問題,誰在用這個系統?用這個系統做什麼?然後自己根據這些問題去文件找答案。

2. 弄清楚系統是怎麼分層、分模組的,每層、每個模組都用到了什麼技術和框架,之間是怎麼通訊的。有架構設計文件的話學習一下最好,沒用過的技術先查查資料知道個大概。

3. 把開發環境搭起來,通過幾個典型的功能弄清楚系統裡面增刪改查、通訊、使用者互動是怎麼實現的。最簡單的方法是根據系統的分層,先從前端到資料庫把程式碼疏通一下,搞不清楚的話開啟debug模式一步一步走一下。

4. 經過上面三個步驟基本上就可以改幾個bug和照葫蘆畫瓢做個功能了。後面重點關注那些沒用過的技術和元件:先搞清它的目的、背景、實現原理和功能列表,再照著文件做幾個demo,平常工作時把它的文件建個快捷方式,隨手查詢學習一下。

5. 平常開發過程中如果遇到問題首先要相信:
1)絕大部分自己遇到的問題很多人已經遇到過並且解決了 。
2)絕大部分自己遇到的問題在當前系統裡面已經有了答案。
3)絕大部分自己遇到的問題在你用的框架和元件裡面都有現成的解決方案。

6. 對於規模比較大的系統或者系統集合,其實你平時工作接觸到的也就是其中的一個系統或者模組,先把自己接觸的部分搞定就行了。

新接手一個系統,如果你的目的是假設需要你排查一個問題,你就能快速定位程式碼位置這樣的要求即可的話,掌握系統的大體架構和核心流程即可。

大體手段都差不多,從全域性角度理解問題,拆開看細節實現。

1,弄明白系統是什麼(定位,以及對外提供的功能)
2,有文件就看系統的設計文件,弄明白系統的模組結構,理解系統是如何構成的。(如果沒文件只好看程式碼目錄結構了,然後試圖通過模組間的介面梳理清楚模組關係)
3,看一下核心功能實現,理解整個功能流程是如何走通。

至於後續如果需要你去優化系統關鍵流程,優化架構,就需要你對業務、對原理、對實現更深刻的理解了,這個沒有什麼捷徑可走,只能花時間思考和折騰。

僅從單個專案的角度而言,有兩個思路:
1. 按介面從上往下梳理
2. 按資料庫從下往上梳理

需要梳理的東西主要有兩個:
1. 類/方法/函式之間的呼叫關係
2. 引數傳遞與變化

通過上面的方法基本能整理出一套從介面到各處理類/方法/函式再到資料庫的邏輯鏈條,然後再具體看每個類/方法/函式的實現,基本就能快速上手了