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