[心得] 進入陌生專案
這些討論實在是太無聊了, 繼續來開不同話題,
討論點有內涵的東西不是比較有意思嗎?
這篇來講講怎麼進入一個陌生專案,所謂的陌生專案有很多種形式,
但不管什麼形式, 這裡的前提都是 source code 還在,
source code 都不見的逆向模式特別複雜, 這裡先不論.
以下我把專案形式概略分為四類:
1. 棄嬰型: 所有以前的開發者已經不可考了, 目前無人主力維護
2. 孤島型: 專案本身跟其他專案連結性不高, 本來就已經有1-2人在主力維護.
3. 協作型: 專案本身有跟其他專案連結, 且各專案(包括當前專案)都有人維護.
4. 跳島型: 專案本身有跟其他專案連結, 但其他專案沒有固定人員維護,
可能就3-4人維護多個專案, 要不斷切換專案.
然後進入專案的身分我們先假設是一個工程師, (主管角度的有機會在寫)
-------------------------------
一個工程師進入專案時, 有以下幾件事情會建議要列表確認:
(這裡的確認不是篩選, 我們假設你就是要做這件事情)
(反過來說如果你是 code manager ,
這些也應該寫成 getting start SOP)
1. 有哪些 repo / 使用的版本控制工具(雖然這年頭應該都是 git)
2. 測試環境的 setup 跟準備, 了解測試環境共用的情況,
自己的行為會對別人產生什麼影響(反之亦然).
3. 有無特殊 commit log 要求或格式
4. 有無特殊的 coding guide , 命名規則/程式碼慣例要求...etc
5. issue 使用什麼方式追蹤紀錄 (issue tracker)
6. 如果對任務有疑問時, 有誰可以解釋需求問題. (requirement manager)
7. 如果對任務有進度時, 應該要跟誰回報/形式為何
(通常跟5有關,但有些地方會有特殊要求, 所以單列一項)
8. 如果對既有的程式邏輯有疑問時, 有誰可以討論慣例 (coding mentor)
9. 團隊習慣的溝通工具, 每個人習慣的溝通頻率(重要).
進入一個專案, 越快越好的抓緊上面的這些事情, 能大幅的增加融入的情況,
這種時候不要怕煩別人, 新人是少數煩別人別人不會靠北你的時期.
--------------------------
底下幾種類型的專案分別論述:
1. 棄嬰型: 所有以前的開發者已經不可考了, 目前無人主力維護
這種類型的專案, 對你來說最重要的 key man 就是 requirement manager.
我們大部分的工作都是在把程式碼跟需求提供者的描述對照,
並且能力範圍內去確保他是有可讀性的.
有時候會碰到出現需求提供者沒講到, 但程式碼有的判斷跟邏輯,
這時候要複述幾次程式邏輯所想表達的意思,
跟需求提供者確認是否有任何一丁點可能是什麼東西.
如果真的找不到原因, 可以反過來確認如果修改他會發生什麼影響,
請需求提供者確認這樣的影響是不是預期的. (損害控管)
如果兩層確認後都非預期, 那就改吧.
一個專案越多不敢改的東西, 控制力就越低.
這種情況通常不用負責處理團隊政治, 話語權也會比較高,
要作的就是謹慎的放手去做, 該大膽就大膽, 但就是確定自己有掌握狀況.
這個狀態時要特別留意文件的撰寫,
因為不會有其他人幫你記得慣例跟程式碼文化.
寫文件是給自己看的.
2. 孤島型: 專案本身跟其他專案連結性不高, 本來就已經有1-2人在主力維護.
這種時候要留意的是原本的主力對需求的掌握程度為何,
是能充分承接跟滿足, 這種時候當然就先觀望, 銜接他們的工作分配.
如果原本的主力就已經是火燒屁股的狀態, 這種時候則應找他們討論,
看是劃定自己的責任區, 大家各自分工, 以利團隊穩定,
還是他們還有餘力帶著自己銜接工作分配.
另外在這種情況, 除非你有劃定自己的責任區,
不然要作程式碼文化或慣例調整時, 必須找到原本的 keyman 說服.
總之, 留意團隊默契, 這種時候其他 1-2 人的話語權相對高很多,
而你只是個新人, 除非真的有足夠的實力,
讓其他人讓位聽你說,不然沒有必要硬坦.
這種時候可以不用太積極寫文件, 因為你寫出來的文件對團隊貢獻度也有限.
3. 協作型: 專案本身有跟其他專案連結, 且各專案(包括當前專案)都有人維護.
基本上是 2 的擴大版, 現實生活中正常軟體公司都處於這個位置居多,
通常跨專案會有 1-2 個人會負責跨專案協調, 這些人是地下(或實質)架構師,
融入體系時要留意這些人跟專案資深成員的關係.
以國內的風土民情通常是關係不會好到哪去,
因為架構師的工作往往是比較惹人嫌的.
(看到他們出面就表示有新的工作了) XD
而且圈內正常合格能作跨組協調的架構師沒那麼多,
這是複雜一點的技術管理工作.
如果關係不好, 那就要把視線放在留意目前專案資深成員在意的點,
通常是當前專案的敏感點, 有些專案都有自己的[強假設],
再跟架構師關係不好的前提下, 這些強假設會特別敏感.
如果跟架構師關係很好的話, 那就把視線放在架構師的指示上.
這種團隊的方針, 因為上面反正橫豎都有人,
自己的工作是消化 task, 直到自己變成能主導夠大責任區的 senior.
文件的處理在這個狀態也相對不重要.
4. 跳島型: 專案本身有跟其他專案連結, 但其他專案沒有固定人員維護,
可能就3-4人維護多個專案, 要不斷切換專案.
這種情況略為棘手一點, 正常這種情況 mentor 會幫你安排,
因為如果 mentor 不特別安排期待的話, 這種專案基本上是新人墳場.
(新人最忌諱的就是沒有穩定專案, 沒有明確需求, 沒有明確範圍)
多數人在這種狀態時, 會急著想找個專案開主堡開始生兵,
但如果是我的話, 我會各專案先理解彼此之間的關係,
看哪些專案是敏感(或不敏感的), 看自己的風險屬性,
決定自己要對哪些專案特別熱情, 慢慢的你就會發現自己往那個專案移動.
但如果這個過程中又出現砸下新的專案的情況,
這種時候請毫不猶豫的離職, 組織一定是出了大問題.
另外, 這種時候也要多 focus 在文件的撰寫,
again, 文件是寫給自己看的.
--------------------------
基本上在專案融入的過程有幾個常見的困難:
1. 聽不懂團隊內術語或行話, 最可怕的不是完全聽不懂,
而是同樣的話聽在你耳裡跟聽在團隊成員是不同意思.
2. 看不清楚權力分配, 導致對所有指令照單全收, 結果作錯.
(如果團隊有人過度熱心/白目時會發生這種慘案)
3. 沒弄懂大家合作的方式跟默契, 導致把其他環境搞爛
4. 寫出跟團隊慣例或程式碼文化不一致的東西或作法.
(要你用 util 挖個碉堡, 自己用土鍬挖了個地下城.
我在別人身上碰過這種情況, 我後來負責收尾......花了很多力氣.)
5. 有時候團隊本來跨 team 分工默契就爛等著在找戰犯,
結果你一去就撞在大家的敏感點上,
變成別人攻擊你團隊的破口或代罪羔羊, 這就有點衰.
-------------------------
這篇寫的東西算是入門時一些要留意的事情,
其實工作時最重要的特色就是不白目, 要白目就得要有足夠武力.
如果有興趣拉深細節, 可以再推文討論, 我們再來根據具體情況追進.
--
I have a dream, it's silly but beautiful.
--
自學後端轉職 到公司看到很多作法 與標準規範不同
多問了幾句 才知道 是用自己定義的一套在玩
詢問一下標準作法不是XXX 就一直被質疑是要挑戰公司...
能說中資不意外嘛?
自己猜想 可能是偏內部系統 才可以這樣不管外面的世界
不過其實所謂的標準做法,也是一直在變化啦。
像是早期 xml 設定為主流,後來 annotation 化。
我覺得除非是要跟別人對接的,不然一個穩定可遵循的文化,
會比是不是最新的重要。
至於 team management ,這就要拉到主管的層次來談了。XDD
我想起十年前我們還在遊說大家開始使用 svn ,不要使用 zip 的年代。 表面上看起來 svn 是進步,但隔了幾年, 有些人反而卡在 svn 進不了 git 。 有些人當時鼓勵團隊轉 hg ,不過沒幾年 git 大一統 hg 整個淡出,從我的立場是沒什麼標準可言,只有能不能用。
※ 編輯: TonyQ (114.137.216.211 臺灣), 08/22/2020 10:55:45請問不要用zip是指...以前版控都一包一包嗎~?
有些地方啦(擦汗)
竟然是 zip 不是 rar (誤
20100903.zip 20100904_fix.zip 20100904_fix_2.zip
中資多半是要奴的沒錯 一些商業大老很喜歡煉蠱 但台
資是亂象並存
20120503_fix3-2.zip.zip
推 這對工作經驗不夠多的人很實用
FTP 就是版控伺服器(?)
實用推
XD .zip.zip
20200822_finalversion(3).zip
挖碉堡變地下城有實際例子嗎XD?
某專案,聘用新人,新人來覺得原本的人寫的太爛了。 跟主管說要重寫,主管本身偏 pm , 沒有該技術專業,但同意原本的結構不良。 於是同意他自己重寫,中間沒設 check point ,也沒定期 merge 回來。 旁邊有另一個同事在舊專案開發新的需求進度。 搞到最後三個月過去,新的東西完成度約只有 40%,且完全未經可靠測試驗證。 這段期間已經在舊版新增的功能當然也沒有。 我們面臨一個不穩定舊版,跟一個未完成的新版的選擇。 我後來的處置是整個廢棄完成度過低的新版, 回來把舊版切出模組,分塊重新處理...... 那個去寫新版的工程師跟我槓上, 我們兩邊冷戰了快三個禮拜,我後來調他去做別的專案, 讓他不要再看到這個傷心地。 真要走這麼大的 move, 一開始就該安排 merge 計畫....
我在某些公司的版控上,還會看到20200x0x這種資料夾XDD
好慘,等於3個月零產出
超過, 因為還會造成舊專案的同仁適應問題. 而且後續收尾還有一些行政成本.
※ 編輯: TonyQ (118.167.67.203 臺灣), 08/22/2020 14:34:49最近要接一個新的協作專案, 剛好可以參考,感恩
在環境封閉一堆內規的地方也是只能這樣弄吧,例如上程
式是要交由一個完全沒有coding經驗的同課課員
寫新版的工程師東西沒完成態度還這麼硬喔.....
從他的立場他覺得他只是需要時間. XD 我也算是理解他的感受啦, 後來有好好安排. XD
※ 編輯: TonyQ (210.61.209.201 臺灣), 08/22/2020 22:09:46感覺也太胡來...
推,希望看到主管角度的文,期待大大推出
最近也剛要進入陌生專案 進去死的那種 期待主管視角
可供參考
我有空再繼續寫...
33
[心得] 我要準時下班 追完感想~ 防雷頁 ~ 這齣戲除了探討日本過勞加班文化以外,也是網頁製作公司的職場職人劇 我同行啦,追完覺得很有感觸 拍得很好的地方: 網頁製作行業的日常27
Re: 不想唸碩士了,想去刷題個人覺得刷題跟工作有個不同的點 工作常遇到的一個問題是"如何維護大型專案" 不同類型的工作,專案規模多少有差 純軟來講,很容易遇到破百個檔案的大型專案 規格說改就改,大部分時候是努力讓一堆髒code拼在一起後還能運作....27
Re: [討論] 怎麼跟自以為是的同事相處提供一點不一樣的看法 ※ 引述《leo5916267 (封膜獵人)》之銘言: : 也許在軟體也蠻容易遇到類似個性的同事 : 我們是新創公司,我進去前已就有一個前端工程師,他從0建構了整個產品A 代表他能力不算差23
[請益] coding style差太多怎辦?大家好 小弟上上份工作快離職前 聽到新進的同事說 他都習慣把程式寫成一個一個小的function 後來離職我花了一點時間學習設計模式13
[心得] 面試心得受前同事影響,覺得讓大家認識一些公司避免踩雷是個蠻不錯的方式,這邊分享今年的面 試經驗面試時間介於今年的3~4月,在職找工作。 先交代一下背景:四大非本科碩,在新創小團隊的後端待了2.5年。 ### Xfers(新加坡新創Fintech): - 應徵方式:獵頭推薦10
[請益] APP offer請益(代po) 上一篇offer請益 真的非常感謝很多前輩的指點! 經驗:非本科 一年半Android與Flutter經驗 過去是維護跟開發公司專案、也有上架的經驗 因為是北上 所以都是租屋5
[請益] 該怎麼提升自己的程式技術各位好 30y,目前遇到一些瓶頸,想請問各位前輩, 從java培訓課程畢業,做這份接案/也有自有維護網站工作滿4年, 很少加班,幾乎沒有,年薪今年大概70左右, 在一個小團隊裡,目前要帶新人,團隊主管不是很重視技術,5
Re: [請益] 剛入職大家會很有壓力嗎新是有多新 你要不要說點例子 typescript很久了 Kotlin都快是中年大叔了 Scala也不新了 基本上很少有公司用近3-5年才invented的語言 近3-5年才debut的語言 用的人很少 新創還搞這種事? 要倒比較快 然後語言根本就不是大問題4
Re: [討論] 用AI寫code產生的疑問AI(GPT)用於Coding的實務心得 作者是虎尾科大資工系陳國益教授,經同意後轉載文字內容,原連結於下: 在上週前往華新麗華授課時,有工程師問到:若有要接手的大型專案,應如何透過AI協助 ,加速對專案的理解速度,或是快速產生手冊、API列表等,傳統上要花非常多時間交互- 我本身是做軟體專案的,公司近期來了一個新人,才來兩三週就在沒告知的情況下把我的專案放在自己的領英上…… 跟主管反應後,主管說這件事情他是知道的,解釋說這位新同事說用戶會去看專案網站上的開發團隊,然後分別去看團隊的LinkedIn, 表示這樣做可以協助專案曝光。 重點來了:那位同事剛來不久,並沒有出現在專案的開發團隊上面,也沒有接受到任何需要他宣傳的指示。且如果真的如他所說的,那他為何沒有通知官網上的團隊每個人都放領英?公司專案這麼多,為何只挑大型合作案來放? 然後主管卻覺得他的行為很合理……並且說全部的人之後都可以把別人專案放自己的領英。 請問真的是這樣嗎?我自己是覺得很奇怪,因為對我來說領英就像104 是放履歷跟作品集的地方…...