想要學習XP最重要的是了解其核心的4項價值觀,如此才能知道為什麼需要採取這些行動。而這4項價值觀就是溝通、簡單、回饋及決心。
先前介紹了XP的12項實務做法,這12項實務做法雖然是XP最廣為人知的內容,但其實這並不是XP的重點 XD。想要學習XP最重要的是了解其核心的4項價值觀,如此才能知道為什麼需要採取這些行動。而這4項價值觀就是溝通、簡單、回饋及決心。
溝通
人與人之間會產生問題的原因,通常都來自於溝通出了問題,專案執行也是如此。不是有人少說了什麼,不然就是有人少問了什麼。一旦只要有溝通不良,導致認知不協調的情況發生,便會埋下地雷等著某一天引爆。而且溝通不良還有可能是刻意的人為因素所導致,不是說實話會有處罰,就是聽的人把訊息當做耳邊風,甚至是懷抱著多一事不如少一事的心態而不肯開口提出意見時,都會讓團隊的溝通管道出現問題。
因此XP的第一項價值觀便是要保持開放透明的溝通環境,不論是客戶、開發團隊或是經理,透過Pair programming或Plan game這類強迫溝通的手段,讓每個人都得互相且頻繁地溝通,以保持整個專案不會出現溝通不良的情形。
簡單
「能讓系統運作的最簡單狀況是什麼?」。如果對目前而言有簡單的作法,就不要選擇困難的作法,這道理聽起來很簡單,但做起來並沒有這麼簡單。原因是大部份的人都會想像未來,想著這功能未來應該會再增加某些需求,而預先花費時間做了大量的過度設計。但是XP所堅持的是「今日事今日畢」的概念,在需求不斷改變的前提下,壓注在今天先做出簡單的版本,等明天真有需要時,才再花心力修改成符合新需求的版本。而不是花了時間卻做出一堆永遠用不到的功能或設計。
舉列來說有些人喜歡對系統的Business Logic層物件先用一層interface包裝,再幻想著當有一天需要變動商業規則時就能輕鬆抽換實作,但通常不是永遠等不到這天,就是當這天來臨時,已經沒有人知道或是無法套用當初的設計了。
回饋
回饋指的是整個專案從小到大的所有回饋。如執行單元測試能獲得系統狀態的回饋,團隊對工作量做出估算,客戶便能得知功能情節時程的回饋。更重要的是將最重要的功能儘可能的早點上線,便能越快獲得客戶對系統的回饋。讓客戶感受系統真實運作時的模樣,並且發掘出更符合實際需求的想法,好讓開發團隊即早得知什麼事做對,什麼事需要修正。
決心
以上三項價值觀都具備之後,便需要一個強大的決心,才能貫徹意念勇往直前。XP的許多做法都跟傳統的開發方法有所差異,唯有保持決心,認為這麼做才是對的,才能突破每個難關。
另外,從上面4點價值觀,XP又衍生出了5項基本原則,價值觀是抽象的,原則是較為具體的指引,可幫助我們直接在諸多可行的方案中挑選符合XP原則的做法。這5項基本原則為:
- 快速的回饋
- 視簡明為當然
- 漸進式的改變
- 擁抱變改
- 做有品質的事
以上便是XP的核心精神。