2011年10月9日 星期日

Code Review 大家都應該做的事情 1

作者: yy938559 (高個子) 看板: Soft_Job
標題: Re: [轉錄] Code Review: 大家都應該做的事情
時間: Wed Aug 17 02:51:25 2011

Code review?

別鬧了吧.  一家公司有能力做code review的有幾個?

好啦, 即使有人可以review, 並review出問題了, 有能力改嗎?

不可能吧.  就是因為經驗不足才會有這種狀況啊!

光是提出問題, 就能讓程度不夠的人立刻升級嗎? 不可能啊!



許多經驗不足, 但覺得自己很強的高手(通常是寫code不到十年的),

雖然寫code速度快, 博學多聞, 資料結構一把罩, 說起架構, design patterns

也是頭頭是道. 但寫起code來, 總是code架構不佳, 不好maintain.

這不是懂的多不多的問題, 也不是努力不努力的問題, 純綷是歷練的問題.

有些能力, 特別是code的架構安排,沒有長時間的體會, 就是不會到達那個火喉.



不服氣的人, 回去看看你去年寫的code, 如果你覺得去年寫的code讓

自己很驚艷, 那你就算是有經驗的programmer. 如果覺得自己程度明明很好,

但怎麼寫的code普普通通, 我說, 你就是經驗還不足.

(我沒說未來無法達到這程度喔)



這麼說好了, code review之所以知易行難的原因是:

review所出現的問題中, 無法處理的問題, 都是code的架構問題,

這些東西和programmer的經驗有關. 無法透過短期/長期教育來提升.

所以, 有能力改的人, 不用review, 自己也會在過程中修正.

沒能力改的人, 也不用改了. 多改只是create愈多問題.


至於那些像 SQL injection 要改成 bind variables,

lookup table 用array, naming styles 不一致, code 亂成一團,

常常有超大method/class, copy-paste code一堆這些東西等問題.

如果到了要處理的程度, 那麼在處理之前, 先fire寫這些code的人吧.


唉...要被噓暴了.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.69.151.170
推 Ting1024:好像有道理喔                                           08/17 02:53
→ pest:怎麼覺得你把code review想成很高級 大部份的其實就防呆而已   08/17 03:41


這是處理問題的角度問題.
如果A,B,C,D,E等人, 寫code常常出一些"呆呆"的包.

加法思考:
1. 使用甲計劃來防呆.
2. 甲計劃如果再有漏洞, 那再出乙計晝來防止甲計劃出包.
3. 乙計劃如果再有漏洞, 就再出丙計晝來防止乙計劃出包.
4. loop 直到大家都有做不完的事, 然後再請F,G,H,I,J,K等人來執行防呆計劃.


減法思考:
1. 砍掉A,B,C,D,E等人, 換甲,乙,丙,丁,戊來寫code.
2. 甲,乙,丙,丁,戊還是出"呆呆"的包. 再砍甲,乙,丙,丁,戊, 請請一批人
3. loop直到因為一直換人, 沒人做事, 垮掉了.


所以, 制度解決不了問題.

於是, 問題就簡單了, 回到原點: 找對的人, 做對的事.

做研發的工作, 依靠對的人, 永遠比依靠制度要保險.
※ 編輯: yy938559        來自: 203.69.151.170       (08/17 04:47)
→ TonyQ:programmer 的歷練有關,但是教育還是很有效的吧。           08/17 04:47
→ TonyQ:有些真的很弱的人是真的應該fire掉沒錯,但有 code review也  08/17 04:47
→ TonyQ:能幫助你更快得讓那些有能力的人早一點站上高位。            08/17 04:48
→ TonyQ:我知道有些人是認為那些人應該自己站到頂端,某個角度上我也  08/17 04:48
→ TonyQ:很認同這件事。但是捫心自問你我,有多少的經驗是透過提問跟  08/17 04:48
→ TonyQ:前輩求解而快速獲得自己原本久試不得的問題?                08/17 04:48
→ TonyQ:這種經驗不需要多,但每碰上一次都是可以大幅提昇很多的。    08/17 04:49
→ TonyQ:code review 本身就是一個促發這件事情的媒介。              08/17 04:49
→ TonyQ:即使我們都知道該被淘汰的人遠比有能力者多很多,但目前應該  08/17 04:50
→ TonyQ:一邊進行人才的篩選,另一邊進行人才的培養,雙管齊下才是。  08/17 04:51
→ TonyQ:另外,也有很多地方根本找不到對的人。理由很多。            08/17 04:54
→ TonyQ:這其實也是個值得討論的話題,一起討論好了。:)              08/17 04:56


老闆們不做code review原因如下:
1. 雖然不了解code, 被工程師騙去做code review很多次了, 再也不相信狼來了.
   你有聽說過被寫爛的code被救成好code嗎?
   寫過code的人都知道...
   這不可能發生嘛!

2. 同上, 老闆早就知道爛code不可能改成好code.
   又不是沒被騙過, 當然不review啊.

結論, 不是老闆的人, 才會想做code review啊.

這樣說有道理嗎?

※ 編輯: yy938559        來自: 203.69.151.170       (08/17 05:08)
→ pest:照你的推論 也不會有製造公司做品管才對                      08/17 06:18
→ xsoho:品管? 好奇怪的類比                                        08/17 07:04
推 leicheong:品管的效果看得到 (畢竟就是bug不給過吧), code review   08/17 07:38
→ leicheong:的效果看不到 (結構改了有好嗎? 可能連負責改的人也      08/17 07:39
→ leicheong:說不上) :P                                            08/17 07:39
→ leicheong:看看Vista rewrite當時有多少人在說是錯誤的決定吧...    08/17 07:41
→ pest:code review效果不會看不到吧 反映在bug count一定有的        08/17 07:54
→ pest:這就跟生產線上加工後馬上做驗證一樣,都會反映在下游成果的    08/17 07:54
→ TonyQ:爛code當然可能改成好code。                                08/17 08:34
→ xsoho:所謂的品管只是規格已經訂出來,然後看有沒有符合標準        08/17 09:06
→ xsoho:至於有沒有符合標準與產品能不能用是兩個獨立事件            08/17 09:07
→ xsoho:品管無法判斷產品好壞                                      08/17 09:07
→ xsoho:review最難之處應該是無法定質或定量的心證吧                08/17 09:08
→ xsoho:或者若要達成共識可能要耗費不少時間跟精力來溝通            08/17 09:09
推 shadow0326:在敝公司內,老大說"請你review這段code"的意思就是     08/17 10:11
→ shadow0326:1.給你學習的機會 2.這東西以後你也要維護              08/17 10:11
→ hanbz:爛code當然可能改成好code+1   我就常改寫code= =            08/17 11:16
→ hanbz:畢竟很少有code是寫好之後一輩子不會改的 隨著客戶的無理(?)  08/17 11:17
→ hanbz:要求 一定會要去動寫好的東西 也常常改別人寫的code          08/17 11:18
推 yoco315:我不確定 code review 對原 po 有沒有用                   08/17 16:25
→ yoco315:我可以確定的是我絕對不想跟原 po 當同事..                08/17 16:25
→ yoco315:真的是一堆鬼話..                                        08/17 16:26
→ jimwayne123:雖然我經驗很嫩,但我覺得原po的說法比較像還沒做就先  08/17 20:13
→ jimwayne123:說做了絕對失敗...用這種想法做當然也不可能會成功呀   08/17 20:14

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.