程序員需要自己修補(bǔ)BUG的真正原因原來是這樣
在軟件行業(yè),經(jīng)常看到有的公司管理讓一個(gè)人修補(bǔ)另一個(gè)人代碼里的 BUG。有時(shí)候有人寫了一段代碼,扔出來不管了,然后公司管理讓其他工程師來修復(fù)它。我想告訴你們,這種方法會(huì)很失敗。
首 先,讓一個(gè)人修復(fù)另一個(gè)人的 BUG,是不尊重工程師個(gè)人技術(shù)的表現(xiàn)。久而久之會(huì)降低工程師的工作積極性,以至于失去有價(jià)值的員工。代碼是人用心寫出來的作品,就像藝術(shù)家的作品一樣, 它的質(zhì)量牽掛著一個(gè)人的人格和尊嚴(yán)。如果一個(gè)人A寫了代碼,自己都不想修復(fù)里面的 BUG,那說明A自己都認(rèn)為他自己的代碼是垃圾,不可救藥。如果讓另一個(gè)人B來修復(fù)A代碼里的 BUG,就相當(dāng)于是讓B來收拾其他人丟下的垃圾??上攵?,B在公司的眼里是什么樣的地位,受到什么樣的尊重。
其次,讓一個(gè)人修復(fù)另一個(gè)人 的 BUG,是效率非常低下的作法。每個(gè)人都有自己寫代碼的風(fēng)格和技巧,代碼里面包含了一個(gè)人的思維方式。人很難不經(jīng)解釋理解別人的思想,所以不管這兩人的編 程技術(shù)高下,都會(huì)比較難理解。不能理解別人的代碼,不能說明這人編程技術(shù)的任何方面。所以讓一個(gè)人修補(bǔ)另一個(gè)人的 BUG,無論這人技術(shù)多么高明,都會(huì)導(dǎo)致效率低下。有時(shí)候技術(shù)越是高的人,修補(bǔ)別人的 BUG 效率越是低,因?yàn)檫@人根本就寫不出來如此糟糕的代碼,所以他無法理解,覺得還不如推翻重寫一遍。
當(dāng)我在大學(xué)里做程序設(shè)計(jì)課程助教的時(shí)候,我 發(fā)現(xiàn)如果學(xué)生的代碼出了問題,你基本是沒法簡單的幫他們修復(fù)的。我的水平顯然比學(xué)生的高出許多,然而我卻經(jīng)常根本看不懂,也不想看他們的代碼,更不要說修 復(fù)里面的 BUG。就像上面提到的,有些人自己根本不知道自己在寫什么,做出一堆垃圾來??催@樣的代碼跟吃屎的感覺差不多。對(duì)于這樣的代碼,你只能跟他們說這是不正 確的。至于為什么不正確,你只能讓他們自己去改,或者建議他們推翻重寫。也許你能指出大致的方向和思路,然而深入到具體的細(xì)節(jié)卻是不可能的,而且不應(yīng)該是 你的職責(zé)。這就是我的教授告訴我的做法:如果代碼不能運(yùn)行,直接打一個(gè)叉,不用解釋,不用推敲,等他們自己把程序改好,或者實(shí)在沒辦法,來 office hours 找你,向你解釋他們的思想。
如果你明白我在說什么,從今天起就對(duì)自己的代碼負(fù)起責(zé)任來,不要再讓其它人修補(bǔ)自己的 BUG,不要再修補(bǔ)其他人的 BUG。