整理地超級賞心悅目。
不只是翻譯,摘要重點,還有團隊使用心得與反饋。
—
說真的, code review 的重要性不下於版控。
版控也要有好的習慣、正確的使用方式、團隊的規範與公約,並不是有版控就好。
Code review 也是,很多團隊的 code review 只是過個水、做個形式,用一下工具上的 PR/MR review, 看看 code diff 的部分有沒明顯的錯誤,甚至糾結在一些自我信仰的差異而產生瓶頸,都是某種程度的浪費時間。
這些都是軟體開發團隊的基本功,跟呼吸喝水睡覺一樣。
如果你的團隊還沒有版控跟 code review,你能做的不外乎就是:
1. 改變它:從你開始導入、實踐,讓大家看到好處,獲得好處
2. 離開它:嘗試過各種方式仍然無法改變環境,那就離開他。不要讓你的發展侷限在這樣的環境限制底下。
3. 接受它:那你就做好一輩子待在這邊的打算,求神拜佛公司不會倒、公司收入不會碰到像這次疫情一樣的問題,祈禱自己不會被資遣。 因為到時外面的世界跟你的理解完全不一樣,就跟刺激1995被關了超過30年的犯人回到外面真實的世界,他只想回去監獄裡面過著規律的生活。
code diff工具 在 91 敏捷開發之路 Facebook 的最佳貼文
很不錯的 code review guide。
補上自己的經驗與建議(請依據適用的 context 調整):
如果可以,就 face to face 吧,不要只是看著 pull request 與 code diff,那種 code review 投資報酬比跟效果很差的,只是慣性地面對電子化工具而避免溝通。
當然,如果作者跟你可能是跨地域、有時差、根本不認識,無法 face to face 的溝通和 review,那當然只能從這限制底下挑最有效的方式。
但通常不該是「沒有時間」這原因,所以無法 face to face code review。
如果你碰到了「沒有時間」這問題,或是「瓶頸」卡在 code reviewer,那就去嘗試解決這問題,而不是略過這問題,或是期望能多一點時間。
實務上,我喜歡讓 code review 產生瓶頸(例如 code reviewer 是瓶頸),或是 review 完給了一堆建議,卻因為已經太晚、已經上線而無法修改。
你會覺得很卡或是很浪費時間,進而有動力去解決這問題。(或是看到有些人因此就迴避或走回頭路,這是個很好的觀察點)
通常其中一條路就會進化成「pair programming」,或類似 scrum 裡面的 refinement 精神。每個人都可能領這 feature,每個人在開始做之前都一起釐清過需求,一同制訂出驗收情境與條件。
code review 永遠都從測試開始看,因為你在乎的是需求與情境的變化,你 trace code/code review 也該先從 feature 到 scenario 的角度去了解程式碼要滿足這樣的情境,為何會這樣設計。
因為你參與過需求釐清與驗收情境的過程(refinement),因為你參與過工作任務拆解的過程(sprint planning part 2),只是這一份 code 不是你寫的,因此當你在 code review 時,你知道這次 CL 目的是為了什麼,你知道該有哪些情境,你知道如果是你,你會怎麼寫。
以這些為前提去看這次的 code change,找到 code 跟你心裡面設計之間的差異,去了解這段差異是為了什麼,是 developer 的比較好,抑或是你考慮的比他多,進而促進溝通、知識交流,讓整個團隊跟著 code base 越來越好。
只有看著線上 code diff 工具,看著這次的 code diff 片段來做 code review,真的是浪費時間。
你最多最多只能看到 code 寫得好不好,卻不會知道 code 寫得對不對。
code diff工具 在 91 敏捷開發之路 Facebook 的最佳解答
上次小弟在公司內部舉辦 Tech Talk 活動時,一位講者分享一個很酷頗完整的工具: #phabricator ,讓我覺得挺驚艷的。
它的功能包含了:
⑴ Pre-Commit Code Review(當然含 code diff, 類似 github code review 的功能)
⑵ 版本控管 support: Git, Mercurial, and SVN
⑶ Task Management (可以自訂 feature/ticket 的 form, 還有漂亮的 task graph)
⑷ 文件紀錄 (document wiki, support markdown)
⑸ Workboards and Sprints (電子看板, 類似 trello)
⑹ Chat Channels (提供即時通訊的功能,但官方也建議你用 slack 比較好)
⑺ Notification 設定
⑻ Command line & API (能結合更多自動化和外掛工具)
傳送門:https://www.phacility.com/phabricator/
重點:phabricator 可以自己 host, 免費使用。如果你懶得裝,也可以直接購買 Phacility Hosted 的服務($20 per user / per month)
#東森信息科技 的同事是自己裝,他們團隊有在試用,據說用起來速度還不錯。有興趣的朋友可以參考看看。