l

2013年12月20日 星期五

從軟體開發看河川汙染問題

Dec. 19 20:51~10:07

image

圖片來源:維基百科

 

這一陣子高雄後勁溪與其他河川汙染的問題引起很多人的關注,日月光還有好幾家電鍍廠,都已經是違規排放的累犯,可是政府對廠商除了開出不痛不癢的罰單之外,長年來似乎一點辦法都沒有。這些只顧著賺錢的廠商,嘴巴說「愛台灣」,實際上卻用會致癌的毒物污染這片土地,真的是非常可惡的行為。這種行為,和搶劫、傷害生命、詐欺,有程度上的差別嗎?

政府做了什麼?總統和行政院長好像都不生活在台灣,不關他們的事。環保署長開口了,怪罪基層環保局稽查人員,說他們沒有積極的查緝與追蹤。稽查人員自認已經盡心盡力,而且抱怨人力不足,根本不可能做到100%查驗。

***

以上情境,讓Teddy想到軟體專案中的開發與測試團隊。廠商就好像開發團隊,稽查人員好比測試人員。

  • 開發團隊:我只負責寫程式,測試不關我的事。
  • 測試人員:軟體品質這麼差,測試人力有限,根本不可能找出所有的bug。
  • 老闆:我只關心時間到有收到錢就好。

現況如此,一直抱怨也無濟於事。正面思考一下,有沒有辦法可以改善?Teddy想到之前讀了《How Google Tests Software》這本書,提到一個觀念,如果軟體的品質很差,增加更多的測試人員,並不會改善軟體的品質。道理很簡單,因為生產出來的東西如果是垃圾,找再多的人來測試,它還是垃圾,不會變成黃金。就好像廠商排放出來的水如果是含有重金屬的有毒廢水,找再多的稽查人員來查緝,結果還是有毒廢水,並不會變成乾淨的水。

怎麼辦?其實很簡單,就是要求開發團隊不要生產出品質低劣的程式碼。Google的做法是,在開發團隊中加入SET(Software Engineer in Test)人員,讓開發團隊自己測試自己所寫出來的程式碼,確認自己生產軟體的品質。

***

現在台灣遭遇到的問題是,廠商打從心裡就不在意排放廢水的品質(是否符合放流標準),解決方案就應該要朝著「如何讓廠商自己在意排放廢水品質」著手。這絕對不是政府對於食品安全出包的時候所說的:「要求廠商自我管理」這種無用的廢話。「自我管理」是針對有良心的人才有用,針對無良廠商,需要更有力的辦法。

從軟體開發的角度來看,在開發團隊中增加SET人員是一種有效的辦法。所以有一種可能性,就是讓稽查人員常駐工廠。這種方法雖然有效,但是全國大大小小的工廠那麼多,不可能有那麼多稽查人員可以常駐每一個工廠。更何況,憑什麼要用納稅人的錢,24小時來盯著這些廠商不違法?

想來想去想到一個最簡單的方法,就是敏捷開發所說的running software的觀念。開發團隊要確保每一個iteration都有可以執行的軟體,在這個簡單的目標之下,其他各種做法,像是自動化測試、持續整合、pair programming、TDD/BDD等,都是達到這個目標的手段而已。

對應到排放廢水的問題,政府只要規定:惡意排放廢水,除懲罰性罰款並需負責環境清理費用之外,公司負責人還需負擔刑事責任,這樣就可以了。重點是刑事責任,也就是老闆和主事的高階主管要被抓去關,而且沒有所謂被抓到三次才開罰或起訴這種優待。難道今天有人去偷竊/搶劫/殺人,政府可以說:「這是你第一次偷東西/搶劫/殺人,開一張勸導單給你,下次不要再犯了。如果一年之內累積滿三次,就要撤銷執照喔。反正你手上還有其他八張執照,少一張不會怎樣的。」這像話嗎!

可能有鄉民會說:「排放廢水就要抓去關,這樣會影響台灣的GDP,以後沒企業家敢在台灣投資」這種廢話。講這種話的人,如果孔子還在世,也會對他說:「其無後乎」。命都快沒了,還在以GDP為藉口恐嚇人民。再者,看一看美國,只要違反「反托拉斯法」,這都還只是商業的問題,公司負責人就要去坐牢。惡意排放有毒廢水抓去關,也只是剛剛好而已。

***

如此一來,確保放流水符合標準的責任就回歸到廠商的身上,稽查人員的責任也變得很清楚,就是認真稽查,一查到就將公司負責人移送檢調刑事偵辦。物件導向設計告訴我們,responsibility assignment(責任指派)的重要性。現行做法讓稽查人員來「證明」廠商沒有排放廢水,而且抓到之後裁罰不痛不癢,基本上就是「玩假的」,這也是對環境的不尊重。廠商需要自己「證明」自己沒有排放廢水,稽查人員只是去確認廠商沒有沒有說謊。一但說謊,請你吃免錢的飯。

迷之音:人家只是不小心埋了暗管,又不小心排放了有毒廢水,然後更不小心的被稽查人員給抓包了。這真的不是故意的啊。不然我一年捐一億,你們再讓我用「不小心」的方式繼續愛台灣30年,這樣好不好?

奇怪,怎麼大老闆的講稿,內容和周星馳的電影對白那麼像啊。

***

友藏內心獨白:用汙染環境來愛台灣,這種愛法,無福消受。

沒有留言:

張貼留言