2008年4月29日 星期二

XP: eXtreme housekeePing

老婆常問我,我對家裏PC整理得那麼好,掃毒、更新、硬碟整理、檔案分類都做得很完整,可是為甚麼對於家務的處理卻一團亂。

其實照顧好自己的PC只是我們這一行的基本功,軟體開發的整個過程牽涉到的管理與維護才是大學問。最近沒工作在家休息,又搬了新家,剛好是改過自新重新做人的好機會。開始努力整理家務以後,愈來愈同意老婆的評語。工作上採用的Extreme Programming(XP),的確有許多practices可以應用在家務上。沒理由上班說一套,回家做一套。以下就是幾點心得:

需求管理︰

我們都知道客戶要求一個額外的小功能,往往不是客戶想的幾行程式那麼簡單。一個新增資料的功能,成本不在於開發這個頁面,而是伴隨的修改、刪除、查詢、log、統計的開發,以及這些功能的維護、dependency造成的系統延伸的難度、測試、文件、客服、教育訓練的複雜度等等。所以XP強調只把人力用在刀口。

居家生活也一樣。想買一個健身器改善體能嗎?或是羨慕高級的全身按摩椅,將近二十萬一組的高價只能望椅興歎嗎?請放心,這張椅子的牌價只是小問題。它真正的價格在於,所佔的空間(尤其是在寸土寸金的大都會區)、清潔維護的工作、搬運、故障修理、以及不用時拍賣或轉送親友的煩人瑣事等等。就像我們勸客戶只要求一個簡單好用的系統就好,對自己居家設備也一樣要求自己。如同我們經驗告訴我們一昧亂ㄠ功能的客戶,做出來的系統往往不好用。對居家生活而言,簡單反而才是生活品質的保障。

勇於丟棄(YAGNI原則:You Ain't Gonna Need It)︰

XP鼓勵我們Refactor時看到沒用的程式碼就勇敢地丟。你不會用到它的。程式邏輯簡單才能隨時embrace change。現實生活也是。當你家東西已經多到滿出來了,要計算每週送出家門的東西要大於送進家門的東西。拍賣、回收、一般垃圾、送人,多管齊下。直到狀況改善為止。

當你的書架滿了,甚至書都堆在地上,此時只要多拿一本書進家門,就是讓某一本書神秘地淹沒在角落,你不知道是那一本。也許到你下次搬家才會發現它。淹沒的書,你用不到它,旦它仍將長年一直佔著你寶貴的空間。所以,倒不如在那之前狠心地決定哪些書應該淘汰,至少是出於自己的意志,經過了理智的取捨。

跟程式碼要維持乾淨一樣,家中物品擺放保持簡單,清潔就非常容易。拖把抹布可以飛快地抹過每個角落。但是如果家中堆滿東西,就好像程式碼又亂又累積一堆垃圾一樣。很難維護。家中每塊區域的邊緣都不是方正的四邊形,而是像fractal一樣的超長海岸線。清掃時需要小心地沿著fractal的軌跡走,還要不時做點搬移、留心不打翻物品,濕抹布小心避開所有不防水的東西。清潔就成了大工程。很像是使用率99.8%的硬碟,每個讀寫動作都要花很長的時間。
重複︰

XP說,越是難做、討厭、沒把握、容易出錯的動作,不是越少做,而是越常去做。例如轉舊系統資料、或是由測試環境移到正式環境。傳統上都認為這種東西又繁雜又容易出錯,最好小心計畫,一次搞定。XP卻反其道而行,認為這種工作要常常做、天天做,甚至自動化地跟Continuous Integration一起跑。

用XP原理來類比,家裏愈是噁心的清潔工作,愈是你一看到就不想碰的資料整理,就愈需要列為每日或每週的例行工作。一方面是不累積,處理起來就輕鬆,一方面是一直訓練自己駕輕就熟,熟練就不害怕。甚至會像做refactoring一樣有成就感。如果你只有年終大掃除才會清理床底下,即使清完了,也會想把那塊令人反胃的抹布丟掉,立刻衝進浴室做全身大消毒,還會擔心清理過程是否吸入可怕的黴菌....試試看改為天天清掃,只要紙拖把輕揮幾下,20秒的功夫。

因為東西亂堆放是清掃效率的大敵,常清掃就會常整理,也就容易找出家中擺設該改善的地方。如果每天清掃床下,保證你不會再將雜物亂堆在床底下。

個人認同XP,主要是因為它堅持正面思考,發揮人性良善的部份才會成功。新家的整理清潔,是不是也能堅持呢?看來支持XP精神的人,似乎應該也要把家居整潔照顧好。我應該要像堅持XP一樣的態度來維護居家整潔。這也是XP: eXtreme housekeePing!

3 則留言:

Buruccha 提到...

真是太~有道理了
就是要“剛剛好“!
那些冷凍庫屯滿了半年量食材的人也要反省了

匿名 提到...

誰沒事屯半年量的食材?

EC 提到...

我也很好奇,Buruccha 不知道是說誰。

不過我這次搬家,的確在冰箱及廚櫃角落翻出不少沒使用的調味料,當然擺放多年早就過期了。至少該將瓶罐做好回收,以免罪加一等。

只是處理起來,一方面帶著暴殄天物的罪惡感,一方面又因為腐敗發酵的味道感到噁心。真是不愉快的經驗。