Sep. 10 09:43~10:45
這幾天重讀《The Clean Coder》,每次重讀都會有一些新的感受。一年前Teddy在〈[還少一本書] The Clean Coder〉介紹了作者Bob大叔對於專業人士的幾點建議,今天再介紹幾點上次沒提到的重點。
要求100%測試涵蓋率
Bob大叔覺得專業人士所發布的軟體,應該立定「讓QA找不到任何bug」這樣的目標。為了達到這個目標,必須要採行自動化測試。Bob大叔在書中建議開發人員要採用TDD方式來開發軟體,但他並沒有因此而認為測試涵蓋率不重要。反之,他要求,不是建議,而是要求,每一行程式碼都要測試。
讓軟體變軟
軟體開發有一句名言:「東西沒壞就不要修。」大部分的開發人員都不想也不敢去修改現有的軟體,因為任何的小改動都可能引起災難性的bug。但是,幾乎所有的開發人員卻又同時希望,自己所設計出來的軟體,具有容易修改、容易擴充的能力。
Bob大叔告訴鄉民們,軟體要容易修改只有一個辦法,就是「經常性地去修改它」。讓軟體保持固定不變才是危險的,經常性地修改(重構)軟體,才不會讓軟體僵化變成硬體。
為什麼大家都不願意經常性的重構程式?答案很簡單,因為怕把可以動的東西改壞了。為什麼會改壞?因為大家都沒有做自動化測試。所以,自動化測試,有高測試涵蓋率且可快速執行的測試案例,不但可以確保品質,還可以讓軟體變軟,縮短開發與除錯的時間。
提攜後輩
輔導新人也是專業人士的份內工作,專業人士不會坐視團隊中的新人自生自滅,因為專業人士知道「生產線(團隊)的生產力是由最最弱的一環所決定」,所以獨善其身絕對不是提升團隊戰力的有效方法。
專業人士也知道「教學相長」的道理。套句Kent Beck說過的話—所謂「厲害的人」不是自己很強然後獨善其身不管別人死活,而是能幫助別人,使別人原本認為很難的事情,在他的幫助之下變得很簡單。
誠實
專業人士要勇於說「不」,做不到就是做不到,不要因為害怕衝突與保住面子,而說出「我會盡力試看看」這種謊言。也不要採取「消極對抗」的策略,全盤接受別人的要求,然後在最後一刻才出大絕撂下「做不完」這三個字。
接受不合理的決定(例如時程規劃)不是「激發自己的潛能」,而是失敗的原因。在說不的同時,專業人士會嘗試與衝突的對方尋求雙方都可以接受的共同目標。
反之,如果做出承諾,就要付諸行動,想盡辦法使命必達。萬一無法兌現承諾,也要儘早提出預警,讓雙方有機會可以重新擬定新的目標,繼續兌現新的承諾。
***
友藏內心獨白:專業和非專業的行為模式真的相差很多。
如果『做不到跟做得到』是由業務來說,自己沒機會可以跟客戶說的情形呢?
回覆刪除當已經接下這個case老闆才再問能不能做到,我說做不到。老闆卻說『盡力試看看』這種情形又該如何?
我們公司很多不懂裝懂,幫程式設計師回答一些奇怪的話,搞得寫程式的人水深火熱 XD
請讀一下《The Clean Coder》,書中有參考建議XD。
刪除忘了說,『消極對抗』有時候很好用,我經常遇到很盧的客戶,在我的認知上是做不到的。例如要我用軟體把食物鹹的變甜的
回覆刪除他卻自以為厲害的說,你可以怎樣怎樣就可以達到這個功能,心想 他這麼厲害幹嘛不自己寫。
如果不答應寫這個程式,他又會說你還是沒聽懂我在說甚麼...於是他又重新獎講一次,最高紀錄他花4個多小時重複說了9次同樣的話同樣的內容,聽到我的覺得煩了...那時候已經晚上10點了。只好答應試試看,之後再裝死。