身為敏捷開發的愛好者,你一定聽過 Clean Code (無暇的程式碼) ,裡面教你好的程式碼應該怎麼寫,應該注意什麼,但它太技術面了我們在這先不提。它還有一個番外篇叫 Clean Coder,裡面就提到了何謂專業的軟體開發人員。
不管你加了什麼功能最重要的是原本的功能不能壞。你一定常常聽到,當有新的版本上線後,就會有人抱怨原本的功能怎麼怪怪的,這就是原本的功能被破壞了。就像有句廣告台詞所說的先研究不傷身體,再講求效果,先把原本的功能確保好,再加上新功能吧。
每年都會有所謂的你最信任的專業人士或職業的調查,醫生一定都會名列前茅,可以說是最被信賴的專業人士,我們來想想如果醫生原本要幫你割盲腸,結果手術結束後你的腳不能動了,你作何感想?
你一定覺得專業的醫生不會這樣。所以如果我們破壞了原本的功能,那就是我們不專業的表現。
開發的軟體有 Bug 就會損壞軟體的功能,因此專業的開發人員不應該留下Bug。你可能會說,這不太可能阿,系統那麼複雜,怎麼可能沒有 Bug。
你說的沒有錯,軟體開發出來的系統隨著時間的演進越來越複雜,很難沒有 Bug。所以人體太複雜了不可能完全理解,但醫生扔然誓言不傷害病人。如果醫生都不能拿人體複雜來推託,那我們又怎能拿系統複雜來為 Bug 開脫呢?
這就是無暇的程式碼的意思嗎?完全沒有Bug?
當然不是,這裡不是說要追求完美,而是要對自己的不完美負責,程式難免會有 Bug但不代表我們不需要對它負責,所謂的專業人士就是能對自己所犯的錯負責的人,那怕那些錯誤實際上是在所難免的。
所以專業人士要練習的第一件事情就是道歉,但這還不夠,你還必需學習不犯同樣的錯誤。經驗多了以後你的失誤率應該要快速遞減,趨近於零,當然失誤率永遠不可能為零,但你有責任讓他趨近於零。
最後我們來看看醫龍裡怎麼描述這件事情的
他們手裡死去的病人越多技術就會越進步,在你手上死了多少人你就要成長多少。