Re: [請益] 接手外包商的code沒交接也沒人可以問

看板Soft_Job作者 (飛梭之影)時間1年前 (2022/07/14 07:21), 編輯推噓62(6209)
留言71則, 67人參與, 1年前最新討論串2/2 (看更多)
※ 引述《sbbty018 (charlie)》之銘言: : 各位大神好 : 我是最近剛從資策會(java)畢業找到目前這間台中的類博弈公司(40k) : 面試的時候沒問目前團隊的狀態 : 上班第一天才發現原來我是第一個RD。MIS則是大概有六位 : 公司目前的code都是之前中國外包廠商寫的 : 然後一兩個月前公司決定要自己組台灣的RD團隊就跟中國廠商停止合作 : 所以我這個菜鳥一進來就得自己慢慢看code然後debug : 另外他們還有用到redis跟rabbitMQ也是我在資策會沒學到的讓我感到有些負荷不來 : 請問這種情況在業界很常見嗎? (超菜junior接手別人的code然後沒有人能夠請教) 我的第一份跟第二份工作都是這個樣子,一開始你會像麻痺的人,給你幾個建議 1. 掌握啟動前的入口 - 大部分程式語言都會有一個從作業系統下命令開始執行 的進入點,可能會載入 config、環境變數、命令參數這些東西,你要先清楚 這些東西的配置意義是什麼。 2. 掌握啟動後的入口 - 如果是 server 或常駐程式,在執行階段就會有監聽行為。 可能來自於 http API、socket、message hook、Redis subscribe .... 你就要找到這些呼叫點的 function,嘗試插 log 或 print,追蹤一些上下游關係 然後學習用工具打約定好的通訊格式測試,像 postman 或去 redis 丟 pub 3. 嘗試動動手腳 - 掌握入口後你就知道哪邊會像大腦發出命令,而你要讓程式神經 將命令傳達到該去的地方。所以你要先假定一個起點跟終點,比如 rabbitMQ 收到 訊息經過邏輯運算會將結果存進 redis 某個 key 值,那你就去追 function 的 資料流向以及中途被包裝成什麼樣的資料結構最後又轉成什麼樣的字串存 redis 4. 起身連續動作 - 獨立的資料處理都掌握的差不多後就要看系統 state machine 跟 life cycle 結構的運作模型,自己去新增一些狀態、設計一些複雜的腳本看看 程式運作的結果跟你想要的是否相同。配合前面三點,自己去修改 config 丟不同 參數、自己開發一個測試的入口,然後呼叫已知的 function 卻在邏輯中判斷命令 夾帶自定義的 config 參數並達成某些狀態條件時要引導至自己另外寫的 function 印 log,這樣你就有辦法介入原有程式並增加新功能 5. 外部工具先學有用到的部分 - 例如 redis 寫資料有很多命令,set, hset, rpush .. 每個的用法和適合的場景不同,照理說科班教育會讓你全部學懂避免誤用才去實作 但你接手別人程式面對陌生工具時你其實是要反過來根據程式的資料結構去搞清楚 這個指令的用法就好。先別浪費時間知道他們存在 redis 內有何差別,你要看的 只是在程式內從介面定義讀回來的資料長什麼樣子。除非你很有興趣,否則訓練自己 在 code 內看到對 redis 呼叫的指令能快速從文件中找到用法說明更重要 6. 一知半解下的行車紀錄 - 到這階段差不多你就可以開發新需求,但會有很長一段時間 你覺得自己是在一知半解下做出新功能的。很多時候你是從 try error 發現一條可以 正確執行完的路就走了,然後不知道狀態或資料變了會產生 side effect。別慌,在 你不懂的地方加註解,給個編號,然後在自己的文件中寫上編號並紀錄起來。當 side effect 發生時,你有機會從文件中判斷可能與哪幾條有關,去 code 搜尋註解所在 檔案有助縮小判斷的範圍。 7. 不要改壞勝過不要怕改壞 - 有些人會說你就是要放膽去改不要怕壞,從零開發是如此 因為那是你自己寫的,掌握度高,又沒有曾經穩定運作的印象,壞就壞了再修就好。 但今天你是在很多東西沒摸熟不懂的情況下接一個已架構好的系統, 維持運作穩定才不會給自己找加班的麻煩,老闆對你的新人印象才會好。 一堆需求進來先挑自己有把握的並告訴 PM 她想先上但你會花超過預期時間的東西 大多專案管理者會同意完成一個不起眼的功能勝過引人注目卻花超久時間還搞不定 在穩定中累積經驗也累積自信,再慢慢往可能改壞的功能開發 8. 換輪胎 - 過一陣子你可能突然發現好多新功能你其實重複造了輪子,只是當初看不 出來某個 function 跟你寫的目的相同。研究對方寫法,你會柳暗花明又一村;這 時候你的思考邏輯會漸漸與原作者同化,突然開竅了,看懂很多東西了,這才是你 可以開始不要怕改壞準備對模組重構或大展身手的階段。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.59.75 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1657754514.A.AE1.html

07/14 07:49, 1年前 , 1F
07/14 07:49, 1F

07/14 07:52, 1年前 , 2F
推,這些都是接手不熟悉專案時的基本動作
07/14 07:52, 2F

07/14 08:43, 1年前 , 3F
這是programmer的常識吧
07/14 08:43, 3F

07/14 08:44, 1年前 , 4F
07/14 08:44, 4F

07/14 08:56, 1年前 , 5F
能把流程寫的出來給推~ 這不是用"常識"就可以解釋的
07/14 08:56, 5F

07/14 09:14, 1年前 , 6F
推一個好文
07/14 09:14, 6F

07/14 09:30, 1年前 , 7F
07/14 09:30, 7F

07/14 09:36, 1年前 , 8F
先學會並習慣備份還原所有東西,以後你會感激我
07/14 09:36, 8F

07/14 09:45, 1年前 , 9F
詳細推
07/14 09:45, 9F

07/14 09:56, 1年前 , 10F
07/14 09:56, 10F

07/14 10:06, 1年前 , 11F
好文
07/14 10:06, 11F

07/14 10:13, 1年前 , 12F
先懂業務邏輯再反過來看程式才是比較快的
07/14 10:13, 12F

07/14 10:15, 1年前 , 13F
有些演算法寫得很爛或很神,都會讓你看不懂
07/14 10:15, 13F

07/14 10:20, 1年前 , 14F
推!能把這流程講清楚讓新手可以理解不容易
07/14 10:20, 14F

07/14 10:23, 1年前 , 15F
可以 推
07/14 10:23, 15F

07/14 10:28, 1年前 , 16F
推一個
07/14 10:28, 16F

07/14 10:40, 1年前 , 17F
推推
07/14 10:40, 17F

07/14 10:42, 1年前 , 18F
先學會git的reset、revert相關指令XD
07/14 10:42, 18F

07/14 10:43, 1年前 , 19F
我自己是習慣先操作一遍 弄懂業務邏輯 再看DB儲存結構
07/14 10:43, 19F

07/14 10:43, 1年前 , 20F
再開始追程式流程 這樣會比較好懂系統架構
07/14 10:43, 20F

07/14 11:03, 1年前 , 21F
專業的令人心疼
07/14 11:03, 21F

07/14 12:05, 1年前 , 22F
你不要那麼專業QQ
07/14 12:05, 22F

07/14 12:54, 1年前 , 23F
推推
07/14 12:54, 23F

07/14 12:56, 1年前 , 24F
推!!
07/14 12:56, 24F

07/14 13:05, 1年前 , 25F
這篇真的把新手上路的過程寫得很傳神易懂,推
07/14 13:05, 25F

07/14 13:33, 1年前 , 26F
07/14 13:33, 26F

07/14 14:35, 1年前 , 27F
推!
07/14 14:35, 27F

07/14 14:36, 1年前 , 28F
插入log/print重得很重要,有時候就會不知道bug咋發生。
07/14 14:36, 28F

07/14 14:45, 1年前 , 29F
推我收藏了
07/14 14:45, 29F

07/14 14:48, 1年前 , 30F
07/14 14:48, 30F

07/14 16:01, 1年前 , 31F
收藏
07/14 16:01, 31F

07/14 16:42, 1年前 , 32F
第一步學會備份 第二步學會生出測試環境 第三步在測試
07/14 16:42, 32F

07/14 16:42, 1年前 , 33F
環境浪!
07/14 16:42, 33F

07/14 17:08, 1年前 , 34F
人真好
07/14 17:08, 34F

07/14 17:48, 1年前 , 35F
認真文,推
07/14 17:48, 35F

07/14 18:08, 1年前 , 36F
謝謝大大
07/14 18:08, 36F

07/14 18:36, 1年前 , 37F
暗潮中的一盞明燈
07/14 18:36, 37F

07/14 18:49, 1年前 , 38F
07/14 18:49, 38F

07/14 19:04, 1年前 , 39F
07/14 19:04, 39F

07/14 19:14, 1年前 , 40F
推詳細 很有節奏感的流程
07/14 19:14, 40F

07/14 19:23, 1年前 , 41F
我都把每一行給cout出來看是啥
07/14 19:23, 41F

07/14 19:49, 1年前 , 42F
推推
07/14 19:49, 42F

07/14 20:08, 1年前 , 43F
覺得實用又清楚
07/14 20:08, 43F

07/14 20:40, 1年前 , 44F
這一定要推! 有畫面耶! 有以前當新人時的既視感~
07/14 20:40, 44F

07/14 21:17, 1年前 , 45F
哦哦哦哦哦!!!
07/14 21:17, 45F

07/14 22:22, 1年前 , 46F
07/14 22:22, 46F

07/14 22:51, 1年前 , 47F
07/14 22:51, 47F

07/14 23:28, 1年前 , 48F
07/14 23:28, 48F

07/15 00:01, 1年前 , 49F
很受用,感謝~
07/15 00:01, 49F

07/15 00:14, 1年前 , 50F
07/15 00:14, 50F

07/15 00:34, 1年前 , 51F
認真的經驗談推
07/15 00:34, 51F

07/15 00:37, 1年前 , 52F
哇塞 字字珠璣
07/15 00:37, 52F

07/15 07:39, 1年前 , 53F
推佛心文章
07/15 07:39, 53F

07/15 09:20, 1年前 , 54F
好文推
07/15 09:20, 54F

07/15 11:09, 1年前 , 55F
很寶貴的經驗分享 感謝!
07/15 11:09, 55F

07/15 11:32, 1年前 , 56F
07/15 11:32, 56F

07/15 14:26, 1年前 , 57F
07/15 14:26, 57F

07/15 15:32, 1年前 , 58F
好人 推
07/15 15:32, 58F

07/15 15:39, 1年前 , 59F
07/15 15:39, 59F

07/15 15:58, 1年前 , 60F
推實用
07/15 15:58, 60F

07/15 16:51, 1年前 , 61F
能把工程師技能抽象化 絕非等閒之輩
07/15 16:51, 61F

07/15 17:29, 1年前 , 62F
推 好文
07/15 17:29, 62F

07/15 19:22, 1年前 , 63F
07/15 19:22, 63F

07/15 20:07, 1年前 , 64F
推好文
07/15 20:07, 64F

07/15 21:15, 1年前 , 65F
用心推
07/15 21:15, 65F

07/16 00:25, 1年前 , 66F
這教學也太認真
07/16 00:25, 66F

07/16 11:16, 1年前 , 67F
07/16 11:16, 67F

07/16 18:31, 1年前 , 68F
推。
07/16 18:31, 68F

07/17 10:23, 1年前 , 69F
這篇真的很用心xdd 推一個
07/17 10:23, 69F

07/17 20:42, 1年前 , 70F
說的真好,推
07/17 20:42, 70F

07/17 20:58, 1年前 , 71F
07/17 20:58, 71F
文章代碼(AID): #1YprEIhX (Soft_Job)
文章代碼(AID): #1YprEIhX (Soft_Job)