Re:解讀『XP軟體製程』的字面意涵

點空間一位網友對本篇解讀『XP軟體製程』的字面意涵蠻有獨到的見解,故收錄參考。

就字面而言, 譯為 ‘極致’ 或 ‘極端’ 似無不妥.
但卻無法凸顯那 ‘magic letter X’ 的意涵.
(X 意味著; Uncertainty, Goal, .., and God’s promise.)
直譯的過程, 失去了原作者的匠心,
畢竟是 ‘eXtreme’ 而非 ‘Extreme’

至於 ‘最善 (perfection)’ 也並非 XP 之旨
反倒是 ‘刀口 (edge)’ 方頗具 XP 之趣.
That is, the edge of the chaos.

Iteration 的真諦在於 Timed-box 而非 Decomposition,
重點在於 produce business values, 意近 ‘commitment’
乃制衡 Agility 與 Discipline 不可或缺之器. (或云 Risk Control)

XP 所闡述的是 ‘執簡御繁’ 的心法(Culture)而非招式
故不宜單就 ‘方法論’ 的層面比較之.

或許多餘, 但還是值得一提;
Test-first 的妙用在於 discover alternatives that fulfill the requirements.
Refactoring 的可貴在於 facilitate simplicity that achieves beauty.

明遠, July 13, 2004

XP(Extreme Programming) 帶給我的啟發是什麼?

約半年至一年前,把 XP 系列的譯作全買回來。並且利用在廁所裡、開車等紅燈及等朋友時看完(其實,原文的我也有買,但必須承認,看得很吃力,況且,在廁所裡總不方便用翻譯電子辭典來查單字吧 ~_^)
** 感謝李潛瑞兄等諸位譯者,能翻譯出如此高品質的中文譯作。

整個系列看完後,該忘得全都忘光了 🙂
不過,一輩子都不可能忘掉的是:

  • Kent Beck 真得是了不得的大師!他能融會生活哲理平實的一面帶入到軟體技術與專案實務管理上。而不是死板板的講一些意義不太大的專業技術用語。難得!!
  • Kent Beck 的媽媽教他開車時不是把方向盤固定不變在同一個位置,而是隨時修正,以保持在正確的路線上。
  • XP 的四大核心:Simple(簡單)、Communication(溝通)、回饋(Feedback)、勇氣(Courage)。
  • 感謝 Kent Beck、感謝 XP,能讓我學到以上三點,終生永難忘懷,實在是受用無窮!!

    至於,XP 所提的「十二項實務」,我好像幾乎忘光了 ~_^
    大概只對於 “Test First”,特別情有獨鍾...

    倒是,為了能更多體會 XP 的四項核心,個人花了非常多的心思研究:

    為了瞭解 “Simple”,我買了一本「簡單就是力量」,研究為何簡單可以產生力量?如何從複雜的事物中一眼就可以看透它單純的本質。
    也研究收納櫃的整理術,為何它可以把雜亂的東西都收納起來,使得從表面看起來可以變得是「序中有亂(不是亂中有序)」。
    另外也仔細研讀 Grady Booch 的 “Object-Oriented Analysis and Design” 一書的第一章:Complexity。開宗明義即提到:軟體的複雜度是屬於本質性的,是無可避免的。並藉由其它領域包括自然生態界及PC硬體產業來說明複雜系統的結構。藉此以瞭解如何觀察及分析複雜系統、如何組織及瓦解(或稱為分隔)複雜系統...

    為了能體會 “Communication” 及 “Courage”,我研究了非常多的成功潛能書籍,包括拿破崙‧希爾、卡內基、Brian Tracy、易發久的著作。甚至,還參加了在日月潭辦的成功潛能開發學習營(主題是溝通,不過,整個過程感覺比較像是鬧劇)。
    溝通難不難?對我真的是很難,畢竟,人總是有”性格上的缺陷”,經常,我還是會把所謂學習得來的 “知識” 據為已有,而以此與他人辯論,甚至有點高傲、不屑的態度。
    感謝好朋友的提醒及從成功潛能開發的書籍上所體會而來的,逐漸地在修正我個人的劣根性 🙂
    推薦「卡內基溝通與人際關係」一書,寫得真的很棒!

    不過,對於 “Courage”,這倒是我的專長 ^_^
    我認同「打造自己的成功」一書提到:人有選擇的自由與權利;但是,相對地,也要能為自己的選擇所付出的代價承擔。所以,當你作了選擇之後,也就沒有什麼所謂的後悔與不後悔的。
    我更贊同拿破崙‧希爾「思考致富」一書的 “PMA(Positive Mental Attitude)” 黃金定律,同樣一件事,往正面積極思考時,結局會是與悲觀主義者大大地不同。

    最後,對於 “Feedback”,更讓我更用心去體會 “Iteration” 的意涵。”四星上將” 及許多 O-O 書籍是以 “Spiral” 這個字來替代。
    “Feedback” 與 “Iteration” 絕對是息息相關的,因為,快速回饋,可以儘早地瞭解問題及風險所在,進而 “修正” 執行的步驟。
    極強烈推薦 Brian Tracy 的「吃了那隻青蛙」,讓我瞭解到何謂 “Backward Planning”,又如何與目前的行動來結合,並從行動中逐步修正及 Iterate 你的 “Plan”。
    另外「富爸爸‧窮爸爸-有錢有理」一書中也教你:對於夢想,盡可能地遠大及雄心抱負;但對於目標的設定,他建議作一個 “不太成功的人”,而不是 “過度成功的人”,也就是說,採取初級步驟,一次只走一小步,而不要試圖邁向一大步。

    為了更能體會 “XP” 的本質,我發了很多時間在以上主題的研究上。
    值不值得?我只能說,研究這些書籍及其作者們的觀點,真得是太有趣了!經常會有意想不到的收穫。

軟體設計思維應跳脫思考的桎梏

上上星期透過朋友介紹,至某知名教育訓練機構,討論軟體設計課程的合作方案。

在與一位老師閒聊閒聊當中,,談及他正在某資工所上課,他們老師正教授軟體開發製程,介紹到 “XP(Extreme Programming)” 的方法論。

一聽到 “XP”,我馬上精神抖擻起來~ 半年前我把 XP 的譯作約五本全在廁所看完,對於 XP 的哲理及其實務作法,非常地激賞。

哪位老師對 “XP” 的實務作法,一直很懷疑有可能可以在台灣的業界實施嗎?例如,他認為 “pair-programming”、”客戶駐點”,根本是脫離現實的。

聽到這...我的感觸很深,哪位老師直覺是認為 XP 的實務不容易也不一定適用在國內的軟體業界。
但,我認為 Kent Beck(XP 教祖) 的本意不是要你去模仿及學習那 “十二項” 的實務吧?
XP 的 “十二項實務” 只是 “How-to”,”How-to” 會因為現實的環境而修正的。況且,為什麼我們不懂得再找出第 13、14 ...的實務呢?哪應該才是 Kent Beck 的本意吧?

“XP” 是因為 Kent Beck 看到軟體開發流程中,有太多 “昧於現實面” 的現象,尤其是 “人” 的因素往往是影響整個專案成敗的主因。

Kent Beck 從 “本質” 去思考,發現到 “簡單”、”溝通”、”回饋”、”勇氣” 這四項要素是軟體專案開發的核心,從這四項基本元素,才去找出 “十二項實務” 的 “How-To” 來解決現實面專案開發的問題。

我想表示什麼呢?軟體設計人員不能只看到 “XP” 所提供的 “How-To”,就去模仿使用,然後應用在實務不成功時,就怪東怪西的、或心情沮喪、或覺得根本無法與現實結合...

能不能跳脫那所謂的 “十二項實務” 呢?那重不重要?當然重要!
但,更重要的是,是否你能真正用心去思考那四項基本要素呢?

什麼是簡單?為何要簡單?為何簡單是力量? —> 如何達成簡單呢?
為什麼溝通是重要的? —> 如何達成順暢、和諧地溝通?
什麼是回饋?為何回饋可以降低風險? —> 如何達成快速回饋呢?
為什麼要有勇氣? —> 如何提升自我及團隊的自信心呢?

What?-> Why?-> How-to
軟體設計人員可不能再只把焦點擺在 “How-to” 而已,哪未,整個思考就僅會落在 “How-to” 的框架桎梏之內~
跳出 “How-to”,勇於思考本質、勇於創新、勇於找出自己的 “How-to”、勇於嘗試、勇於被批判、勇於修正...

如此,軟體設計者才會有無限地想像與創新,並可以有屬於自己的 “XP” 了!!

解讀『XP軟體製程』的字面意涵

XP 的全名:Extreme Programming。
中譯本其中有三本翻譯為”極致軟體製程”;一本翻譯為”極端軟體製程”。

哪一個比較符合 XP 的原意?
個人到認為,這兩個解釋都很合理!

翻譯為 “極致“,代表如何把軟體製程做到 “最善”;
翻譯為 “極端“,則表示基於現實面的考量,可能會顛覆傳統的軟體製程觀念,如 “Pair Programming”、”客戶駐廠”...等,是一般傳統的軟體開發人員所無法想像的!

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal