全文轉載自此

 

最近寫程式明顯感覺到自己的 productivity 下降了點,

檢討一下, 發現自己很多的時間花在 code reading 上面, 開發的時間相對減少,

主要還是因為最近接到一些亂七八糟的 code, 幾乎沒有註解和文件可以看.

就算好不容易看懂了 code, 有時還要繼續往下猜,

原作者為什麼有這樣奇怪的 design decision.結果就是在心中累積了滿滿的問號.

更糟的是, 直接問原作者, 他們也忘記自己為什麼當初要這樣子寫,

因為時間久了, 沒有文件和註解, 連原作者自己都忘記以前寫過什麼東西.

 

這讓我想起 “Clean Code” 這一本書裡面有談到破窗理論:

街旁大樓的一扇窗子破了, 路過的人不以為意, 窗子也始終沒有被修補好,

結果久而久之, 大家都習慣了那個破窗子,

路過的人開始往裡面丟垃圾, 調皮的青少年在旁邊的牆壁塗鴉,

甚至於連隔壁大樓的窗子也開始被打破了,

原本只是不在意的路人, 居然因此都紛紛加入了破壞者的行列.


我接到的這個東西就像是破窗戶一樣, 一開始就有些破洞了, 有大有小.

有趣的是, 這個產品後來有一些人嘗試加入新的東西,

其中一位工程師我從未見過, 他想要加入一項新的功能,

所以開始寫一些新的 code, 但是還沒加完就被拉去做其他的 project 了,

這項功能至今沒被完成. 我看了看他加的東西, 發現整個產品的原始碼品質更加惡化,

因為他照著原本就已經有瑕疵的設計和不良習慣, 繼續往上堆, 繼續寫新的 code, 繼續不寫註解和文件.

一大堆交代不清的 “TODO”, 好幾陀尚未寫完的 code, 就依附著整個產品這樣子存活下去.

我發現這個時候拿破窗理論來解釋這種現象真是再適合也不過,

這個工程師原本只是一個路人, 結果最後卻變成一個打破更多窗戶和丟垃圾的加害者角色.


文件和註解是一個軟體工程師最起碼的素養,

在這上面花的時間比 code 本身還要多是很正常的事情,

很多 coder 以炫技自豪, 心中隱約存著一種 “別人看不懂我寫的程式代表我很厲害,

要不然就是看的人太笨又懶惰” 的心態,

殊不知把程式寫得易讀易懂易維護才是真功夫, 才是真正寫出對世界有貢獻的東西.

無奈同樣的情況到了今天還是屢見不鮮, 究其原因還是人性, 對於維護者及後繼者的不貼心,

略過文件和註解以節省自己的時間, 讓自己很舒服地當個加害者的角色.

程式只要能跑, 就覺得可以交差.


最後付出成本的就是整個公司, 因為專案的交接因此付出巨大的成本,

軟體工程師把大部分的時間花在閱讀程式和溝通看不懂的地方,

而這些時間和溝通成本原本都可以透過最簡單的文件和註解來解決.

如果你發現自己的產品漸漸像是一扇破窗戶, 那麼是時候找一段時間, 把該補的東西補齊了.


創作者介紹
創作者 方格子 的頭像
方格子

銀質空間

方格子 發表在 痞客邦 留言(1) 人氣()